Страница 1 из 1
Как получить доступ к переменной?
Добавлено: 19 сен 2015, 18:44
MrBAD
Есть такая функция
public void CaptureMapScreen() {
GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
Bitmap bitmap;
String name = null;
@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;
try {
name = "POI" + System.currentTimeMillis() + ".png";
FileOutputStream out = new FileOutputStream(Main.SCREEN_SHOTS_LOCATION + name);
bitmap.compress(Bitmap.CompressFormat.PNG, 75, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};
myMap.snapshot(callback);
}
Как правильно получить извне значение переменной NAME?
Re: Как получить доступ к переменной?
Добавлено: 19 сен 2015, 19:29
Perfomer
Никак. Нужно создать переменную name за пределами функции и использовать её.
Re: Как получить доступ к переменной?
Добавлено: 19 сен 2015, 19:43
MrBAD
Perfomer писал(а):Никак. Нужно создать переменную name за пределами функции и использовать её.
Пробовал. Сначала требует сделать переменную final, а потом все равно не видит.
Re: Как получить доступ к переменной?
Добавлено: 20 сен 2015, 08:44
Perfomer
Код покажите, где Вы создали переменную вне функции.
Re: Как получить доступ к переменной?
Добавлено: 20 сен 2015, 11:49
doter.ua
return name ?
Re: Как получить доступ к переменной?
Добавлено: 20 сен 2015, 13:05
MrBAD
doter.ua писал(а):return name ?
Я еще новичок в Jave. И попытка переопределить встроенную функцию, что бы она возвращала параметр, мне не удалось. Среда программирования ругается на несовместимость.
А вот описав в корне класса переменную типа "protected String nameImage" удалось сделать её видимой в этой процедуре. Правильно ли это?
Re: Как получить доступ к переменной?
Добавлено: 20 сен 2015, 13:43
doter.ua
MrBAD писал(а):doter.ua писал(а):return name ?
Я еще новичок в Jave. И попытка переопределить встроенную функцию, что бы она возвращала параметр, мне не удалось. Среда программирования ругается на несовместимость.
А вот описав в корне класса переменную типа "protected String nameImage" удалось сделать её видимой в этой процедуре. Правильно ли это?
CaptureMapScreen встроенная функция?
З.Ы. "описав в корне класса" так тоже можно, но тогда переменная будет занимать память в течении всей жизни экземпляра класса(в данном случае активити). После работы с переменной можно ее обнулить = null и сборщик мусора разберется с ней.
Re: Как получить доступ к переменной?
Добавлено: 21 сен 2015, 00:16
MrBAD
MrBAD писал(а):Perfomer писал(а):Никак. Нужно создать переменную name за пределами функции и использовать её.
Пробовал. Сначала требует сделать переменную final, а потом все равно не видит.
Как создать, какую??????
пробовал:
final String name;
потом
name = "POI" + System.currentTimeMillis() + ".jpeg";
CaptureMapScreen();
внутри CaptureMapScreen() - отладка выдает что name = null;
Функция
// захват снимка карты для сервиса Google
public void CaptureMapScreen() {
GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
Bitmap bitmap;
@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;
try {
Log.d(Main.TAG, "image name on capture " + name);
FileOutputStream out = new FileOutputStream(Main.SCREEN_SHOTS_LOCATION +
name);
if (out != null) { bitmap.compress(Bitmap.CompressFormat.JPEG, 85, out); }
out.close();
// MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме
} catch (Exception e) {
e.printStackTrace();
}
}
};
myMap.snapshot(callback);
}
мне надо передать в нее имя файла (name) для сохранения картинки в асинхронном потоке (как я понимаю) реализованным "GoogleMap.SnapshotReadyCallback callback......"
Прошу помощи! HELP!