項目Demo地址:http://download.csdn.net/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();
}
}