项目Demo地址:http://download.youkuaiyun.com/detail/hello_12413/8748065
编码方式:UTF-8
记得当时从网上下的,看着简介说没广告,然后忘了为什么自己很不爽,然后反编译了,取了资源,自己写一个。
效果图如下:
权限不能忘了:
<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" />
代码很少,如下所示:
package com.example.flashlight;
import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnCheckedChangeListener {
private Camera mCamera;
private Camera.Parameters parameters;
private ImageView imageView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((CheckBox) findViewById(R.id.checkBox1)).setOnCheckedChangeListener(this);
imageView1 = (ImageView)findViewById(R.id.imageView1);
imageView1.setVisibility(View.INVISIBLE);
mCamera = Camera.open();
parameters = mCamera.getParameters();
}
private void openLight() {
parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(parameters);
mCamera.startPreview();
}
private void closeLight() {
parameters.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(parameters);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
imageView1.setVisibility(View.VISIBLE);
openLight();
} else {
imageView1.setVisibility(View.INVISIBLE);
closeLight();
}
}
private long exitTime = 0;
@Override
public void onBackPressed() {
long times = System.currentTimeMillis();
if ((times - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再点击一次退出应用", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
super.onBackPressed();
finish();
System.exit(0);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
closeLight();
}
}