用2秒的延迟拍照

时间:2014-01-14 08:12:37

标签: android camera

有没有办法在调用Camera.takePicture方法两秒后拍照?出于某种原因,我不想使用处理程序/计时器来安排调用takePicture。

准确地说,我想使用不同的解决方案而不是以下方法:

final Handler handler = new Handler();
    Timer t = new Timer();
    t.schedule(new TimerTask() {
        public void run() {
            handler.post(new Runnable() {
                public void run() {
                    <here takePicture is invoked>
                }
            });
        }
    }, 2000);

1 个答案:

答案 0 :(得分:0)

您可以将AlarmManagerPendingIntent一起使用并处理Activity.onNewIntent方法中的相机捕捉,但对于您要解决的问题,这是一个非常令人困惑的解决方案更好地使用AlarmManager是安排任务,以便即使用户退出您的应用程序也可以执行它们。与使用Handler相比,此解决方案还需要更多代码,并且精度/可靠性更低,效率更低。

编辑:您还可以使用ScheduledThreadPoolExecutorRunnable

(个人意见如下)如果您正在探索Android中可用于执行定时任务的API,那没关系,但我不会使用AlarmManager来安排已经Activity内的定时任务运行

如果您只是希望让代码更有条理,可以创建一个实现Runnable的内部类,并按照以下方式安排您的操作:

class MyCameraActivity extends Activity
{
    class TakePictureTask implements Runnable
    {
         public void run()
         {
             MyCameraActivity.this.takePicture();
         }
    }

    void scheduleCameraShot()
    {
        (new Handler(this.getMainLooper())).postDelayed(new TakePictureTask(), 2000);
    }
}