使用离子插件Flashlight调用崩溃java.lang.IllegalArgumentException:Receiver未注册:android.hardware.camera2.CameraManager

时间:2016-08-15 09:53:46

标签: android ionic-framework sony

当在离子i中使用插件手电筒时,调用方法@TargetApi(23) private void setTorchMode(CameraManager cameraManager, String id, boolean switchOn) throws CameraAccessException { // since folks may not use SDK 23 to compile we'll use reflection as a temporary solution try { final Method setTorchMode = cameraManager.getClass().getMethod("setTorchMode", String.class, boolean.class); setTorchMode.invoke(cameraManager, id, switchOn); callbackContext.success(); } catch (Throwable t) { callbackContext.error(t.getMessage()); } }

我得到了

FATAL EXCEPTION: main Process: uk.co.sparkenergy.androidapp2, PID: 31200 java.lang.IllegalArgumentException: Receiver not registered: android.hardware.camera2.CameraManager$1@6e1ab65 at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:793) at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1200) at android.hardware.camera2.CameraManager$3.run(CameraManager.java:1266) at android.os.Handler.handleCallback(Handler.java:815) at android.os.Handler.dispatchMessage(Handler.java:104) at android.os.Looper.loop(Looper.java:207) at android.app.ActivityThread.main(ActivityThread.java:5763) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679) 只有1台设备索尼e5633,请帮忙)

1 个答案:

答案 0 :(得分:0)

所有需要的东西,使用弃用的方法

Camera cam = Camera.open();
if(switchOn){
  Camera.Parameters p = cam.getParameters();
  p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
  cam.setParameters(p);
  cam.startPreview();
} else {
  cam.stopPreview();
  cam.release();
}

而不是

  try {
  final Method setTorchMode = cameraManager.getClass().getMethod("setTorchMode", String.class, boolean.class);
  setTorchMode.invoke(cameraManager, id, switchOn);
  callbackContext.success();
}  catch (Throwable t) {
  callbackContext.error(t.getMessage());
}