初学Android——闪光灯当做手电筒使用

http://blog.csdn.net/canghai1129/article/details/11643343

   我本身是做功能机出身,MTK的方案,业内人士都知道,功能机没落了。最近在学习android了,写了一个android小程序,慢慢学习中,给大家分享一下。

代码如下:

一个Activity里面,添加了一个View,是全屏的。退出Activity时,关闭闪光灯,要释放Camera。

[java]  view plain copy
  1. import android.app.Activity;  
  2. import android.hardware.Camera;  
  3. import android.hardware.Camera.Parameters;  
  4. import android.os.Bundle;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.view.Window;  
  8. import android.view.WindowManager;  
  9. import android.widget.Toast;  
  10.   
  11. public class TorchActivity extends Activity {  
  12.   
  13.     private Camera camera;  
  14.     private Parameters parameters;  
  15.     private boolean is_open_torch;  
  16.     private View view;  
  17.   
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.   
  21.         super.onCreate(savedInstanceState);  
  22.   
  23.         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  24.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏  
  25.         requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏  
  26.   
  27.         setContentView(R.layout.activity_torch);  
  28.   
  29.         view = (View) findViewById(R.id.view_torch);  
  30.         view.setOnClickListener(new OnClickListener() {  
  31.             @Override  
  32.             public void onClick(View v) {  
  33.                 if (!is_open_torch) {  
  34.                     // 开启闪光灯(手电筒)  
  35.                     openTorch();  
  36.                 } else {  
  37.                     // 关闭闪光灯  
  38.                     closeTorch();  
  39.                 }  
  40.             }  
  41.   
  42.         });  
  43.     }  
  44.   
  45.     @Override  
  46.     protected void onPause() {  
  47.         // TODO Auto-generated method stub  
  48.         closeTorch();  
  49.         super.onStop();  
  50.     }  
  51.   
  52.     // 打开闪光灯做手电筒  
  53.     private void openTorch() {  
  54.         camera = Camera.open();  
  55.         parameters = camera.getParameters();  
  56.         // 判断闪光灯是否存在  
  57.         if (parameters.getFlashMode() == null) {  
  58.             Toast.makeText(this"本机没有闪光灯装置!", Toast.LENGTH_SHORT).show();  
  59.             return;  
  60.         }  
  61.         parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);  
  62.         camera.setParameters(parameters);  
  63.         camera.startPreview();  
  64.         is_open_torch = true;  
  65.         view.setBackgroundResource(R.drawable.on);  
  66.     }  
  67.   
  68.     // 关闭手电筒  
  69.     private void closeTorch() {  
  70.         if (camera != null) {  
  71.             parameters.setFlashMode(Parameters.FLASH_MODE_OFF);  
  72.             camera.setParameters(parameters);  
  73.             camera.stopPreview();  
  74.             camera.release();  
  75.             camera = null;  
  76.             parameters = null;  
  77.         }  
  78.         is_open_torch = false;  
  79.         view.setBackgroundResource(R.drawable.off);  
  80.     }  
  81.   
  82. }  
XML文件布局很简单,如下:

[html]  view plain copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".TorchActivity" >  
  6.       
  7.     <View  
  8.         android:id="@+id/view_torch"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent"  
  11.         android:layout_centerHorizontal="true"  
  12.         android:layout_centerVertical="true"  
  13.         android:background="@drawable/off" />  
  14.   
  15. RelativeLayout>  

要注意给应用加访问权限:

[html]  view plain copy
  1. <uses-permission android:name="android.permission.FLASHLIGHT" />  
  2. <uses-permission android:name="android.permission.WAKE_LOCK" />  
  3. <uses-permission android:name="android.permission.CAMERA" />  
  4. <uses-feature android:name="android.hardware.camera" />  

PS:

我是按着小米手机的手电筒做的,之后发现两个问题:

1、小米自己做的手电筒打开后还能打开camera,我写的不行,退出Activity时我将闪光灯关闭了,不然进不了camera。

2、小米手机的手电筒开和关状态切换很快,自己写的稍慢。

以上两个问题未解决,如有高手看见,还忘赐教。


你可能感兴趣的:(android基础,闪光灯,手电筒)