2014-01-14 4 views
-2

Camera.takePicture 메서드가 호출 된 후 2 초 후에 사진을 찍을 수 있습니까? 어떤 이유로, 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

당신은 PendingIntentAlarmManager를 사용하고 Activity.onNewIntent 방법에 카메라 캡처를 복용 처리 할 수 ​​있지만, 그것은이다

정확하게, 나는 다음과 같은 하나보다 에 다른 솔루션을 사용하고 싶습니다 당신이 해결하려고하는 것에 대한 매우 혼란스러운 해결책 (AlarmManager의 훨씬 더 나은 사용은 사용자가 당신의 응용 프로그램을 나가더라도 수행되도록 작업을 스케쥴하는 것입니다). 이 솔루션은 또한 더 많은 코드가 필요하며 정확도/신뢰성이 떨어지며 효율성이 떨어집니다 (Handler 사용).

편집 : 과 함께 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); 
    } 
}