http://blog.csdn.net/canghai1129/article/details/11643343
我本身是做功能机出身,MTK的方案,业内人士都知道,功能机没落了。最近在学习android了,写了一个android小程序,慢慢学习中,给大家分享一下。
代码如下:
一个Activity里面,添加了一个View,是全屏的。退出Activity时,关闭闪光灯,要释放Camera。
- import android.app.Activity;
- import android.hardware.Camera;
- import android.hardware.Camera.Parameters;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.Toast;
- public class TorchActivity extends Activity {
- private Camera camera;
- private Parameters parameters;
- private boolean is_open_torch;
- private View view;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);// 设置全屏
- requestWindowFeature(Window.FEATURE_NO_TITLE); // 去掉标题栏
- setContentView(R.layout.activity_torch);
- view = (View) findViewById(R.id.view_torch);
- view.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (!is_open_torch) {
- // 开启闪光灯(手电筒)
- openTorch();
- } else {
- // 关闭闪光灯
- closeTorch();
- }
- }
- });
- }
- @Override
- protected void onPause() {
- // TODO Auto-generated method stub
- closeTorch();
- super.onStop();
- }
- // 打开闪光灯做手电筒
- private void openTorch() {
- camera = Camera.open();
- parameters = camera.getParameters();
- // 判断闪光灯是否存在
- if (parameters.getFlashMode() == null) {
- Toast.makeText(this, "本机没有闪光灯装置!", Toast.LENGTH_SHORT).show();
- return;
- }
- parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
- camera.setParameters(parameters);
- camera.startPreview();
- is_open_torch = true;
- view.setBackgroundResource(R.drawable.on);
- }
- // 关闭手电筒
- private void closeTorch() {
- if (camera != null) {
- parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
- camera.setParameters(parameters);
- camera.stopPreview();
- camera.release();
- camera = null;
- parameters = null;
- }
- is_open_torch = false;
- view.setBackgroundResource(R.drawable.off);
- }
- }
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".TorchActivity" >
- <View
- android:id="@+id/view_torch"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:layout_centerHorizontal="true"
- android:layout_centerVertical="true"
- android:background="@drawable/off" />
- </RelativeLayout>
要注意给应用加访问权限:
- <uses-permission android:name="android.permission.FLASHLIGHT" />
- <uses-permission android:name="android.permission.WAKE_LOCK" />
- <uses-permission android:name="android.permission.CAMERA" />
- <uses-feature android:name="android.hardware.camera" />
PS:
我是按着小米手机的手电筒做的,之后发现两个问题:
1、小米自己做的手电筒打开后还能打开camera,我写的不行,退出Activity时我将闪光灯关闭了,不然进不了camera。
2、小米手机的手电筒开和关状态切换很快,自己写的稍慢。
以上两个问题未解决,如有高手看见,还忘赐教。