2014-01-14 132 views
-2

在Camera.takePicture方法被調用兩秒鐘後有沒有拍照的方法?出於某種原因,我不想使用處理程序/計時器來調度takePicture的調用。以2秒的延遲拍攝圖片

準確地說,我想用不同的解決方案比下列之一:

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

使用一個處理器用於此目的 – Raghunandan

+0

謝謝@Raghunandan爲你的回覆,但我不想直接使用處理程序。我修改了一下我的問題。 – user2923045

+0

爲什麼你想使用不同的解決方案? – npace

回答

0

你可以使用AlarmManagerPendingIntent和處理攜帶相機捕捉你Activity.onNewIntent方法,但它是一個非常令人困惑的解決方案,你正試圖解決的問題(更好地使用AlarmManager就是安排任務,以便即使用戶退出應用程序時也能執行任務)。與使用Handler相比,此解決方案還需要更多的代碼並且精度更低,可靠性更低。

編輯:你也可以使用ScheduledThreadPoolExecutor以及Runnable

(個人觀點關注)如果您正在探索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); 
    } 
}