Я делаю приложение, которое включает фонарик, когда телефон начинает звонить, и выключает его, когда он перестает звонить. Проблема в том, что камера блокируется, когда телефон начинает звонить, и объектная ссылка на нее теряется, поэтому я не знаю, как это отключить позже.
Я использую 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();
}
}
Кто-нибудь знает, как сохранить ссылку на объект камеры или какой-либо обходной путь? Мне приходит на ум использование службы, но другие приложения на рынке, похоже, не используют службы для выполнения той же задачи.