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;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSwitch = (Button) findViewById(R.id.switch_btn);
mSwitch.setOnClickListener(this);
}
@Override
public 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);
}
}
@Override
public 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上测试已经无效了.估计跟无此节点有关.