Этот код работал без проблем со времени API 19 (KitKat): он просто регистрирует приемник динамического вещания для получения новых изображений из приложения камеры.
private void registerCameraBroadcastReceiver() {
cameraEventReceiver = new CameraEventReceiver(recorderService,
ControlPanelFrag.this.getActivity().getApplicationContext());
IntentFilter intentFilter = new IntentFilter("android.hardware.action.NEW_PICTURE");
try {
intentFilter.addDataType("image/*");
} catch (MalformedMimeTypeException e) {
Log.e(TAG, e.getMessage(), e);
}
ControlPanelFrag.this.getActivity().getApplicationContext()
.registerReceiver(cameraEventReceiver, intentFilter);
}
private void unRegisterCameraBroadcastReceiver() {
try {
this.getActivity().getApplicationContext()
.unregisterReceiver(cameraEventReceiver);
} catch (IllegalArgumentException e) {
Log.e(TAG, e.getMessage(), e);
}
cameraEventReceiver = null;
}
Из того, что я узнал, android.hardware.Camera.ACTION_NEW_PICTURE (класс Camera теперь устарел), не запускается в Android N (7 / API 24), но (повезло мне) было вернул в андроид Oreo (8 / API 26). У меня есть телефон (LG G6, который был обновлен с Android 7.0 до) Android 8.0 API 26, но приемник не работает, потому что я предполагаю, что широковещательная цель не срабатывает. Я тестировал тот же код с эмулятором AVD API 27 (Android 8.1), и код работает. (Я еще не тестировал в эмуляторе AVD с API 26, это могло бы сказать, является ли проблема только моим телефоном или нет). Любая идея ?