カメラ アプリケーションにマルチショット機能があります。私はそれを行うために次の短いコードを使用しています。
if (TIMER_STARTED) {
multishotTimer.cancel();
multishotTimer.purge();
multishotTimer = null;
TIMER_STARTED = false;
} else {
multishotTimer = new Timer();
multishotTimer.schedule(new TimerTask() {
@Override
public void run() {
TIMER_STARTED = true;
Camera camera = surfaceView.getCamera();
camera.takePicture(null, null,
new HandlePictureStorage());
}
}, 1000, 5000L);
}
ここで、TIMER_STARTEDは、タイマーが開始されているかどうかを示すブール値のフラグです。HandlePictureStorageはPictureCallbackを処理するクラスです。
質問: 「マルチショット」ボタンを初めてクリックすると、タイマーが開始され、5 秒ごとに写真が撮影されます。タイマーを停止するには、同じボタンをもう一度クリックします。しかし、ボタンを連続してクリックすると、アプリケーションがハングして強制停止します。その後、停止したサービスでカメラが使用されているため、デバイスの電源を切る必要があり、簡単に解放できません。タイマーの開始と停止を管理するにはどうすればよいですか?