此代码自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)中没有触发,但是(幸运的是)在android Oreo(8 / API 26)。我有一部手机(从android 7.0更新为LG G6到android 8.0 API 26),但接收器无法正常工作,原因是我想未触发广播意图。我使用模拟器AVD API 27(android 8.1)测试了相同的代码,并且该代码正在运行。 (我尚未在具有API 26的AVD模拟器中进行测试,这可以说明问题是否出在我的手机上)。任何想法 ?