首页 编程 软件学院 查看内容

自己编写Android手电筒,支持5.0

2015-4-30 11:38 741 0

摘要: android手电筒原理很简单,就是打开相机的闪光灯。   核心的代码就这么多:     打开相机     设置闪光灯开 ...
关键词: nbsp Camera mParameters android Parameters import Flashlight autoFocus AutoFocusCallbac Activity

android手电筒原理很简单,就是打开相机的闪光灯。   核心的代码就这么多:     打开相机     设置闪光灯开     打开预览     设置相机的autoFocus [java] view plaincopyprint?    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   然后就是设置权限   [html] view plaincopyprint?    <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“,按返回键,关闭并退出应用。     [java] view plaincopyprint?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);      } 
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部