Зарегистрируйте FileObserver после установки SD-карты
В моем приложении мне нужно увеличить количество фотографий при съемке. Итак, я установил FileObserver
для DCIM directory
, Он следит за фотографиями.
Тем не менее, это FileObserver
перестает смотреть, когда я отключаю SD-карту, потому что DCIM directory
больше не присутствует. Когда я монтировал SD-карту, я пытался зарегистрировать FileObserver
еще раз после того, как я получил android.intent.action.EXTERNAL_APPLICATIONS_AVAILABLE
намерение. Но FileObserver
не регистрируется.
Мои вопросы:
- Есть ли другой способ сделать
FileObserver
смотреть после монтажа SD карты? - В некоторых устройствах (HTC) я не получаю никаких намерений после того, как я установил SD-карту. Какой метод я могу использовать в этом случае?
Есть ли какой-либо другой способ прослушать фотографию, сделанную пользователем в его встроенной программной кнопочной камере. Я не хочу создавать свою собственную камеру.
fo = new FileObserver(path.toString(), FileObserver.CLOSE_WRITE) { @Override public void onEvent(int event, String path) { Log.d("yes", "event "+ event); Log.d("operator", "out side if" + Phototaken + externalStorageState .equals(Environment.MEDIA_MOUNTED)); if (Phototaken == 0 && event == 8){ String st = timeStamp(); Log.d("operator", "in event " + Phototaken); Log.d("operator", "lat: " + MainService.lat + " " + "lng: " + MainService.lng + " " + "location: " + MainService.addre + " " + "time: " + st); ptd.insert(st, String.valueOf(MainService.lat), String.valueOf(MainService.lng), MainService.addre); } } }; fo.startWatching();
1 ответ
Вы можете создать новый BroadcastReceiver
следить за событиями монтирования / размонтирования SD. Затем, в случае монтирования, скажите FileObserver
чтобы начать смотреть снова DCIM
каталог.
Вам нужно указать фильтры намерений, чтобы следить за событиями, которые вы хотите:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
Этот фрагмент из официальной справки по API показывает, как отслеживать состояние внешнего хранилища.