我正在开发一个非常简单的手电筒应用程序,虽然我已经成功地实现了我想要的东西,但我想以我想要的方式来执行它。目前,我的手电筒仍然亮着,而我的活动是活动的,只要我按下主页按钮,最小化活动手电筒就会关闭。我希望手电筒一直亮着,只有在我单击活动中的关闭按钮时才关闭。
我也想要一些类似的东西,如果手电筒是激活的,用户点击主页按钮以最小化活动,关闭按钮以显示在通知栏中。
请给我引路。
发布于 2013-07-18 13:14:18
请尝试使用下面的代码。
公共类CustomFlashLight {
private static CustomFlashLight instance;
private static Camera mCamera;
public static CustomFlashLight getInstance() {
if (null == instance) {
instance = new CustomFlashLight();
}
return instance;
}
public static boolean checkFlashAvailaibility(Context context) {
boolean flag = false;
try {
flag = context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_CAMERA_FLASH);
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public static boolean turnOnLight() {
boolean flag = false;
try {
mCamera = Camera.open();
if (mCamera != null) {
Parameters params = mCamera.getParameters();
if (Build.MODEL.equals("GT-P1000")) {
params.setFlashMode(Parameters.FLASH_MODE_ON);
} else {
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
}
mCamera.setParameters(params);
mCamera.startPreview();
mCamera.autoFocus(new AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
}
});
flag = true;
} else {
flag = false;
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
public static boolean turnOffLight() {
boolean flag = false;
try {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
mCamera = null;
flag = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}}
发布于 2013-07-18 13:56:39
找到解决方案了。
@Override
public void onBackPressed() {
super.onBackPressed();
params = camera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(params);
camera.stopPreview();
isFlashOn = false;
if (camera!= null) {
camera.release();
camera= null;
}
Log.d("Camera","Back Pressed");
}并删除了onStop()和onPause()方法中的所有代码。
https://stackoverflow.com/questions/17714503
复制相似问题