当在离子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,请帮忙)
答案 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());
}