【发布时间】:2018-01-10 07:08:28
【问题描述】:
嗨,我正在查看手电筒应用程序源代码,我修改了一点,因为当我最小化应用程序时,手电筒会关闭,所以我只使用 onDestroy() 方法来关闭应用程序状态,但是当我有时关闭和打开应用程序时甚至不工作它显示闪光灯但不打开闪光灯 这就是我所做的
public class MainActivity extends AppCompatActivity {
Button button;
private Camera camera;
private boolean isFlashOn;
private boolean hasFlash;
Parameters params;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageButton imgbutton = (ImageButton)findViewById(R.id.imageButton);
hasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);
getCamera();
//button.setOnClickListener(new View.OnClickListener() {
imgbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isFlashOn) {
turnOffFlash();
Toast.makeText(MainActivity.this, "Flash OFF!", Toast.LENGTH_SHORT).show();
imgbutton.setImageResource(R.drawable.light_off);
} else {
turnOnFlash();
Toast.makeText(MainActivity.this, "Flash ON!", Toast.LENGTH_SHORT).show();
imgbutton.setImageResource(R.drawable.light_on);
}
}
});
}
private void getCamera() {
if (camera == null) {
try {
camera = Camera.open();
params = camera.getParameters();
}catch (Exception e) {
}
}
}
private void turnOnFlash() {
if(!isFlashOn) {
if(camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(params);
camera.startPreview();
isFlashOn = true;
}
}
private void turnOffFlash() {
if (isFlashOn) {
if (camera == null || params == null) {
return;
}
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
isFlashOn = false;
}
}
protected void onDestroy(){
if(camera!=null){
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release();
camera = null;
}
} }
【问题讨论】:
标签: android flashlight