我在联想Android A536上遇到火炬问题,其中忽略了setFlashMode:
Camera.Parameters parameters = camera.getParameters();
Log.i("Scanner/Light", parameters.getFlashMode() + " " + context.isLight());
if (context.isLight()) {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(parameters);
menu.getItem(0).setIcon(R.drawable.ic_flash_on);
Log.i("Scanner/Light", "Flash on.");
} else {
parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
camera.setParameters(parameters);
menu.getItem(0).setIcon(R.drawable.ic_flash_off);
Log.i("Scanner/Light", "Flash off.");
}
parameters = camera.getParameters();
Log.i("Scanner/Light", "Final: " + parameters.getFlashMode());
从日志我可以看到,灯光已正确打开/关闭,但LED往往保持在之前的状态。即使我在状态Final
中看到日志off
,物理光也有时会保持在状态torch
,反之亦然。这不会发生在我们拥有的任何其他设备上。