2013-06-10 3 views
0

이미지와 동영상을 반복하여 표시해야하는 Android 앱이 있지만 동영상 재생에 문제가 없지만 이미지가 표시되면 화면에 아무 것도 나타나지 않고 아무 것도 나타나지 않습니다. 프로그램은 여전히 ​​표시되지 않고 실행 중입니다.Android 이미지 타이밍 문제

ImageView와 비디오가 재생 된 SurfaceView 사이를 스와핑하면 문제가 발생하기 때문에 SurfaceView.setBackground()을 사용하고 있습니다.

비디오를 표시 할 때 비슷한 문제가 있었는데 비디오 준비를 기다리고 있던 루프를 제거하여 해결 했으므로 타이머를 기다리는 루프를 제거하고 싶습니다.

이전 미디어가 완료되면 새 미디어를 표시하는 기능이 있으며 현재 미디어가 완료되면 다음 미디어를 준비하는 기능이 있습니다. 미디어가 비디오라면 이것은 잘 동작하는 onComplete 함수에서 호출됩니다. 그러나 이미지라면 대기 루프가 있습니다.

내가 원하는 것은 이미지가 원하는 시간 동안 표시되었을 때 MediaPlayer.onComplete() 함수를 호출하는 것입니다. 이것과 같은 것이 존재합니까?

답변

0

이후로 내가해야 할 다른 오류 검사 때문에 핸들러를 사용하도록 변경했습니다. 그러나 다른 방법은 작동하지 않습니다

mHandler.postdelayed(run, delay); 

Runnable run = new Runnable(){ 

     public void run() 
     { 
      //run function 
     } 
    }; 

나는 그것을 알아 낸 것입니다. 타이머를 실행하고 화면을 업데이트하는 기본 활동에서 함수를 호출하는 새 스레드를 만들었습니다. 화면을 업데이트하는 함수 호출은 runOnUiThread()을 사용하여 호출되므로 화면을 변경할 권한이 있습니다.

public class ImageTimer implements Runnable{ 


    private long dur, cur,start; 
    private boolean needed, run; 
    private Activity mAct; 

    ImageTimer(boolean running, long duration, Activity act) 
    { 
     run = running; 
     dur = duration; 
     needed = false; 
     mAct = act; 
    } 

    @Override 
    public void run() 
    { 
     while(run) 
     { 
      if(needed) 
      { 
       start = System.currentTimeMillis(); 
       cur = System.currentTimeMillis() - start; 
       while(cur < dur) 
       { 
        cur = System.currentTimeMillis() - start; 
       } 
       needed = false ; 
       mAct.runOnUiThread(new Runnable() 
       { 
        public void run() 
        { 

         MainActivity.ImageDone(); 
        } 

       }); 
      } 
     } 
    }