Android
开启闪光灯做手电筒
源码
权限:
<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" />
布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android
rientation="vertical" >
<ToggleButton
android:id="@+id/toggleButton1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:checked="true"
android:text="ToggleButton" />
</LinearLayout>
源码
package cn.lee.handlight;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.os.Process;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.ToggleButton;
public class HandLightActivity extends Activity implements OnClickListener {
private ToggleButton toggleButton;
private Camera camera = Camera.open();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
toggleButton = (ToggleButton) this.findViewById(R.id.toggleButton1);
toggleButton.setOnClickListener(this);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//
保持屏幕
}
@Override
public void onClick(View v) {
ToggleButton tb = (ToggleButton) v;
Camera.Parameters param = camera.getParameters();
if(!tb.isChecked()){
param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
toggleButton.setBackgroundColor(0x30ffffff);
}else{
param.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
toggleButton.setBackgroundColor(0xffffffff);
}
camera.setParameters(param);
}
@Override
protected void onPause() {
//
camera.release();
//
Process.killProcess(Process.myPid());
super.onPause();
}
}