我想在Android中以编程方式打开前闪光灯(不是相机预览)。我在谷歌上搜索了一下,但我找到的帮助把我转到了这个页面
有人有链接或示例代码吗?
我想在Android中以编程方式打开前闪光灯(不是相机预览)。我在谷歌上搜索了一下,但我找到的帮助把我转到了这个页面
有人有链接或示例代码吗?
当前回答
我已经在我的应用程序中通过使用SurfaceView的片段实现了这个功能。这个stackoverflow问题的链接和答案可以在这里找到
希望这对你有所帮助。
其他回答
在不同的Android版本中有不同的访问Camera Flash的方法。在棒棒糖中很少有api停止工作,然后在棉花糖中又发生了变化。为了克服这个问题,我创建了一个简单的库,我已经在我的几个项目中使用了它,它给出了很好的结果。它仍然是不完整的,但是您可以尝试检查代码并找到缺失的部分。这是链接- NoobCameraFlash。
如果你只是想在你的代码中集成,你可以使用gradle。以下是使用说明(直接从自述文件中获取)-
步骤1。将JitPack存储库添加到构建文件中。将它添加到您的根版本中。Gradle在存储库的末尾:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
步骤2。添加依赖项
dependencies {
compile 'com.github.Abhi347:NoobCameraFlash:0.0.1'
}
使用
初始化NoobCameraManager单例。
NoobCameraManager.getInstance().init(this);
您可以选择为调试日志设置日志级别。日志使用LumberJack库。默认为“LogLevel”。没有一个
NoobCameraManager.getInstance().init(this, LogLevel.Verbose);
之后,你只需要调用单例来打开或关闭相机闪光灯。
NoobCameraManager.getInstance().turnOnFlash();
NoobCameraManager.getInstance().turnOffFlash();
您必须注意访问Camera的运行时权限 在初始化NoobCameraManager之前。在0.1.2版本中 或者更早的时候,我们使用直接从 库,但由于对Activity对象的依赖,我们必须 删除它。
切换Flash也很容易
if(NoobCameraManager.getInstance().isFlashOn()){
NoobCameraManager.getInstance().turnOffFlash();
}else{
NoobCameraManager.getInstance().turnOnFlash();
}
你也可以使用下面的代码来关闭闪光灯。
Camera.Parameters params = mCamera.getParameters()
p.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
我得到了自动闪光与以下简单的三步。
我刚刚在Manifest.xml文件中添加了相机和Flash权限
< uses-permission android: name = " android.permission。相机" / > < uses-feature android: name = " android.hardware。相机" / > < uses-permission android: name = " android.permission.FLASHLIGHT " / > < uses-feature android: name = " android.hardware.camera。Flash " android:required="false" />
In your Camera Code do this way. //Open Camera Camera mCamera = Camera.open(); //Get Camera Params for customisation Camera.Parameters parameters = mCamera.getParameters(); //Check Whether device supports AutoFlash, If you YES then set AutoFlash List<String> flashModes = parameters.getSupportedFlashModes(); if (flashModes.contains(android.hardware.Camera.Parameters.FLASH_MODE_AUTO)) { parameters.setFlashMode(Parameters.FLASH_MODE_AUTO); } mCamera.setParameters(parameters); mCamera.startPreview(); Build + Run —> Now Go to Dim light area and Snap photo, you should get auto flash light if device supports.
我已经在我的应用程序中通过使用SurfaceView的片段实现了这个功能。这个stackoverflow问题的链接和答案可以在这里找到
希望这对你有所帮助。
在Marshmallow和上面的例子中,CameraManager的“setTorchMode()”似乎是答案。这对我来说很管用:
final CameraManager mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
CameraManager.TorchCallback torchCallback = new CameraManager.TorchCallback() {
@Override
public void onTorchModeUnavailable(String cameraId) {
super.onTorchModeUnavailable(cameraId);
}
@Override
public void onTorchModeChanged(String cameraId, boolean enabled) {
super.onTorchModeChanged(cameraId, enabled);
boolean currentTorchState = enabled;
try {
mCameraManager.setTorchMode(cameraId, !currentTorchState);
} catch (CameraAccessException e){}
}
};
mCameraManager.registerTorchCallback(torchCallback, null);//fires onTorchModeChanged upon register
mCameraManager.unregisterTorchCallback(torchCallback);