我正在制作一个应用程序,可以在手机开始振铃时打开手电筒,并在铃声停止时将其关闭。问题在于手机开始响铃时摄像头被锁定,并且对象引用该对象会丢失,因此我不知道如何在稍后将其关闭。手机停止响铃时关闭手电筒?
我使用一个BroadcastReceiver来开启/关闭:
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) {
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)) {
cam = Camera.open();
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.startPreview();
}
}
if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {
cam = Camera.open();
cam.stopPreview();
cam.release();
}
}
有谁知道如何保持基准相机对象或任何解决方法吗?在我看来,使用服务是我的想法,但市场上的其他应用程序似乎并未使用服务来完成相同的任务。
太好了,谢谢分享。 – 2013-02-11 08:48:38