Android手电筒

来源:互联网 发布:企业版支付宝申请淘宝 编辑:程序博客网 时间:2024/06/11 10:03

SDK中对应android.hardware.Camera.Parameters

FLASH_MODE_OFF off 

FLASH_MODE_AUTO auto

FLASH_MODE_ON on

FLASH_MODE_RED_EYE red-eye

FLASH_MODE_TORCH torch

主要代码如下:

manifest中的权限 <uses-permission android:name="android.permission.CAMERA" />

String mode = mParameters.getFlashMode();if (!mode.equals("torch")) {mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);m_Camera.setParameters(mParameters);} else {mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);m_Camera.setParameters(mParameters);}

整个源代码

package com.tnt.cameralighter;import android.hardware.Camera;import android.os.Bundle;import android.app.Activity;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener {private Button mSwitch;private Camera m_Camera;private Camera.Parameters mParameters;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mSwitch = (Button) findViewById(R.id.switch_btn);mSwitch.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.switch_btn:switchLight();break;}}private void switchLight() {String mode = mParameters.getFlashMode();if (!mode.equals("torch")) {mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);m_Camera.setParameters(mParameters);} else {mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);m_Camera.setParameters(mParameters);}}@Overridepublic void onPause() {super.onPause();m_Camera.release();}public void onResume() {super.onResume();m_Camera = Camera.open();mParameters = m_Camera.getParameters();}}

如何控制闪光灯的亮度还在看.不过可以确认的是sdk中肯定没有提供这类api.只能从项目中去检测了

20130128:
看到在LightsService中有IHardwareService.里面有FLASHLIGHT_FILE = "/sys/class/leds/spotlight/brightness";但是看了下其实手机中没有此节点.估计系统上不支持直接操作flashlight的开关.因为网上有些教程说IHardwareService.aidl来进行开启和关闭的控制.这样就不要通过camera了.但是我在4.1上测试已经无效了.估计跟无此节点有关.





原创粉丝点击