アラームを使用して、定期的に写真を撮ります。次のように BroadcastReceiver を使用します。
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "Capturing pic");
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "CAPPIC");
wl.acquire();
capturePicture();
wl.release();
}
capturePicture()呼び出しがCamera.takePicture(...)終了します。最後に、ご覧のとおり、wl.release()が呼び出されます。
さて、問題は、takePicture私の場合、のコールバックに非常に時間がかかることです。実際、撮影したばかりの写真に対していくつかの操作を実行しますが、これには私のデバイスで最大 5 秒かかることがあります。
私の質問は、wl.release()takePicture コールバックへの計算集約型タスクが実行されている間に呼び出されるため、副作用はありますか? つまり、デバイスがスタンバイ モードにあるとします。アラームが開始されます --> ウェイクロックがアクティブになります --> 写真が撮影され、操作されますが、その間に計算ウェイクロックが解放されます...安全ですか、それともルーチンが開始される前にデバイスがスタンバイモードに戻るリスクがありますtakePicture コールバックは終了しますか?