自己編寫Android手電筒,支持5.0
來源:程序員人生 發布時間:2015-06-05 09:35:01 閱讀次數:2732次
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) {
}
});
這幾個步驟缺1不可。照網上之前的例子試了,1直不成功。就是由于有些缺了打開預覽,有些缺了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;
@Override
protected 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");
}
}
@Override
public 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
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈