自己编写Android手电筒,支持5.0
16lz
2021-12-10
android手电筒原理很简单,就是打开相机的闪光灯。
核心的代码就这么多:
打开相机
设置闪光灯开
打开预览
设置相机的autoFocus
Camera camera = Camera.open(); Parameters mParameters = camera.getParameters(); mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(mParameters); camera.startPreview(); camera.autoFocus(new AutoFocusCallback() {public void onAutoFocus(boolean success, Camera camera) {} });这几个步骤缺一不可。照网上之前的例子试了,一直不成功。就是因为有些缺了打开预览,有些缺了autoFocus
然后就是设置权限
<uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" /> <uses-feature android:name="android.hardware.camera.flash" />
最后贴以下完整的Activity。我这个很简单,create的时候就打开手电筒,屏幕上显示”Flashlight open“,按返回键,关闭并退出应用。
package org.lhc.flashlight;import android.app.Activity;import android.hardware.Camera;import android.hardware.Camera.AutoFocusCallback;import android.hardware.Camera.Parameters;import android.os.Bundle;import android.util.Log;import android.view.KeyEvent;import android.widget.TextView;public class MainActivity extends Activity {private Camera camera = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);this.camera = Camera.open();if (this.camera != null) {Parameters mParameters = camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); camera.setParameters(mParameters);camera.startPreview();camera.autoFocus(new AutoFocusCallback() {public void onAutoFocus(boolean success, Camera camera) {}});TextView info = (TextView)this.findViewById(R.id.flashlight_info);info.setText("Flashlight open");}}@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (this.camera != null) {Parameters mParameters = camera.getParameters();mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);camera.setParameters(mParameters);camera.stopPreview();camera.release();}Log.i("Flashlight", "exit");this.finish();System.exit(0);}return super.onKeyDown(keyCode, event);}}
全部代码:http://download.csdn.net/detail/redstarofsleep/8749589
更多相关文章
- Android(安卓)2012年9月19日_001
- android的singleInstance启动模式及方法调用
- Android2.2 API 中文文档系列(2) —— EditText
- android edittext 设置行距不影响光标高度
- Android(安卓)TabLayout 浅显总结
- Android(安卓)Studio(二):快捷键设置、插件安装
- Android(安卓)关于获取摄像头帧数据
- Android(安卓)WebView的使用(一)
- android Log.isLoggable方法的使用