비디오 뷰를 대신할 걸 만드는 중입니다.

 

현재는 밑의 현재 재생시간/시크바/동영상 길이 부분을 구현하고 있는데요,

 

동영상 길이는 미디어 플레이어.getDuration()으로 해결 했고,

 

문제는 재생 시간 부분인데, 스레드를 만들어서 1초에 한번씩 getCurrentPosition()으로 텍스트뷰를 갱신하게 했습니다.

 

그런데 빌드해보니 오류가 나네요.

 

1초에 한번 핸들러에 메시지 전달
 new Thread() {
   // @Override
   public void run() {
    try {
     for (int i = 0; i < 20;) {
      sleep(1000);
      handler.sendMessage(new Message());
1초에 한번 핸들러에 메시지 전달
     }
    } catch (InterruptedException e) {
     e.printStackTrace();
    }
   }
  }.start();

이게 스레드 부분이구요.

 

 class MyHandler extends Handler {
  @Override
  public void handleMessage(Message msg) {
   int MS = mPlayer.getCurrentPosition();
   String Time = getHMSTime(MS);
   NowTime = (TextView) findViewById(R.id.textViewperc);
   NowTime.setText(Time);
   super.handleMessage(msg);
  }
 }

이게 핸들러 부분입니다. getHMSTime()메서드는 밀리세컨드를 시 : 분 : 초 문자열로 바꿔주는 메서드구요.

 

갱신해야 할 텍스트뷰가 NowTime입니다.

 

오류는 영상 플레이 도중, 취소 키를 눌렀을때 발생하구요...

 

로그캣에 이렇게 나왔습니다.

 

02-11 16:26:00.281: E/AndroidRuntime(13364):  at net.jbong.FFmpegBasic.VideoNew$MyHandler.handleMessage(VideoNew.java:210)
 

210라인은   int MS = mPlayer.getCurrentPosition(); 입니다.

 

어떻게 해결해야 할지 도저히 모르겠네요.