【发布时间】:2018-01-25 11:07:51
【问题描述】:
所以我制作了一个阅读文本的应用(使用 Google 移动视觉 OCR)
我正在使用 CameraSource 类..
我用这个方法可以打开/关闭闪光灯
public void changeFlashStatus(View v) {
Field[] declaredFields = CameraSource.class.getDeclaredFields();
if (declaredFields != null) {
for (Field field : declaredFields) {
if (field.getType() == Camera.class) {
field.setAccessible(true);
try {
camera = (Camera) field.get(camSource);
if (camera != null) {
params = camera.getParameters();
if (!isFlash) {
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
flash_btn.setImageResource(R.drawable.ic_action_flash_on);
isFlash = true;
} else {
params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
flash_btn.setImageResource(R.drawable.ic_action_flash_off);
isFlash = false;
}
camera.setParameters(params);
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
break;
}
}
}
}
它适用于大多数设备
但最近我收到了很多崩溃报告!
报告如下:
Samsung Galaxy Note8 (greatlte), 6144MB RAM, Android 7.1
Report 1 of 2
java.lang.IllegalStateException:
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick (AppCompatViewInflater.java:293)
at android.view.View.performClick (View.java:6308)
at android.view.View$PerformClick.run (View.java:23969)
at android.os.Handler.handleCallback (Handler.java:751)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6823)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1451)
Caused by: java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Method.invoke (Native Method)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick (AppCompatViewInflater.java:288)
Caused by: java.lang.NullPointerException:
at java.lang.reflect.Field.get (Native Method)
at myApp.MyAppName.ReadingActivity.changeFlashStatus (ReadingActivity.java:412)
为什么它不适用于这些设备以及我如何解决这个问题?
有什么解决办法吗?
【问题讨论】:
-
你为此添加了什么权限
-
只有 CAMERA 权限
-
好的,能把你设置onClickListener的代码贴出来
-
我在xml布局中设置了onClick,我直接用这个方法
标签: android camera flashlight