標籤:android camera 手電筒 閃光燈 5.0
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://blog.csdn.net/redstarofsleep
自己編寫Android手電筒,支援5.0