布局文件是这样的:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<uses-feature
android:name = "android.hardware.camera.autofocus" />
启动和关闭代码是这样的:
public void openFlashlight(){
TransitionDrawable drawable = (TransitionDrawable)mImageViewFlashlight.getDrawable();
drawable.startTransition(200);
mImageViewFlashlight.setTag(true);
try{
mCamera = Camera.open();
int textureId = 0;
mCamera.setPreviewTexture(new SurfaceTexture(textureId));
mParameters = mCamera.getParameters();
mParameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(mParameters);
}
catch(Exception e){
//TODO: handle exception
}
}
@SuppressWarnings("deprecation")
public void closeFlashlight()
{
TransitionDrawable drawable = (TransitionDrawable)mImageViewFlashlight.getDrawable();
if(((Boolean)mImageViewFlashlight.getTag()))
{
drawable.reverseTransition(200);
mImageViewFlashlight.setTag(false);
if(mCamera!=null)
{
mParameters = mCamera.getParameters();
mParameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(mParameters);
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
}
}
但是,安装之后,打不开闪光灯。
我的代码和视频教程的代码几乎一模一样的,逻辑上也一样。
然后,我发现在手机上点击安装apk文件的时候,有权限问题:控制闪光灯、拍照和视频、读取主屏幕和快捷方式、卸载快捷方式、安装快捷方式。
点击安装后,有个选项是:我该信任该程序的按钮,当然选择信任,否则Android系统会不接受“高风险权限的限制:拍照和录像”。
之后就好了。