我刚刚开始为Android编程,经过长时间的Java开发人员和我创建了一个小手电筒应用程序(就像已经不够的xD一样)。我意识到有太多不同的手机,我读过它有时难以让LED灯在所有设备上持续打开,因为有些需要不同的方法。
我目前使用此方法打开相机LED:
camera = Camera.open();
Camera.Parameters params = camera.getParameters();
params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.setPreviewDisplay(holder);
camera.startPreview();
显然我不能真正使用模拟器来确保闪存工作,所以我只能在三星Galaxy Nexus和Nexus 4上进行测试。但是我想知道这是不是最兼容的方法还是我应该做些什么来使其适用于更多设备?
另请注意我已将该应用免费发布到Google Play,here,如果您想尝试一下,并告诉我它是否适用于您的设备:)
感谢您的帮助!
答案 0 :(得分:1)
我自己做了一个非常有趣的事。我意识到如果你在GingerBeard设备中执行setPreviewDisplay(holder),它将无法正常工作。所以我做了这样的事情。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
camera.setPreviewDisplay(mSurfaceView.getHolder());
}
答案 1 :(得分:0)
首先检查设备是否支持闪光灯或不支持闪光灯:
boolean hasFlash = SevenBitsDemo.getInstance().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
if (hasFlash) {
// device support flash light:
Camera.Parameters cameraParams = mCamera.getParameters();
cameraParams.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
}else{
// device is not support flash light
}