У меня есть переменная класса photoPath
, которая инициализируется нулем.Android Camera API - как быть уведомленным, когда onPictureTaken() был выполнен и вернулся?
private static string photoPath = null;
Тогда внутри тела onPictureTaken
, эта переменная присваивается определенное значение String.
final PictureCallback pictureCallback = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "onPictureTaken() of Camera.PictureCallback called.");// check
...
photoPath = aValidPathString;
...
}
}
Затем в храповом слушателе кнопки, я назвал Camera.takePicture()
методом. После этого я выписал значение photoPath
. Это значение photoPath
null
на выходе; и onPictureTaken() of Camera.PictureCallback called.
никогда не печатается на выходе. ЭТО означает, что onPictureTaken() НЕ вызывается в момент, когда я выхожу из значения photoPath
.
Так что я хочу знать, когда onPictureTaken()
вернулся, так что я могу быть уверен, что onPictureTaken()
была выполнена, и я выйти значение photoPath
в этой точке. Как это сделать?
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i(TAG, "onClick() of View.OnClickListener called.");// check
camera.takePicture(null, null, pictureCallback);
/*while(photoPath==null) {
Log.i(TAG, "PHOTO_NAME is null at the moment.");/*
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.i(TAG, "Waiting for half a second.");
}
}, 500);*
}*/
Log.i(TAG, photoPath);// check
}
}
'takePicture()' является асинхронным. Работа даже не начнется при съемке до тех пор, пока не вернется 'onClick()', AFAIK. Переместите свой код, которому нужен путь к 'onPictureTaken()'. – CommonsWare
@CommonsWare Спасибо, я делаю это. Но вы изменили мой вопрос? Если да, не могли бы вы рассказать мне причину? – Solace
«Но ты изменил мой вопрос?» -- нет, я не. – CommonsWare