2011-09-19 6 views
0

이 활동에 대한 미디어 플 레이어를 준비하고 준비가 완료되면 다른 활동으로 이동하여 거기에서 미디어 플레이어를 시작하고 싶습니다. 다른 활동으로 뛰어 들지 않아요. 제발 도와주세요.Android MediaPlayer

 public void run() { 

      try { 
       mp.setDataSource(urls.getFirst()); 
       mp.setAudioStreamType(AudioManager.STREAM_MUSIC);  
       mp.setOnPreparedListener(new OnPreparedListener() { 
        @Override 
        public void onPrepared(MediaPlayer mp) { 
         Intent i = new Intent(Start.this, RadyoBabylonActivity.class); 
         startActivity(i); 
        } 
       }); 
       mp.prepare(); 

      } catch (Exception e) { 

       e.printStackTrace(); 
      } 
     } 
    }); 
    th.start(); 

답변

2

여기에있는 문제는 백그라운드 스레드에서 직접 Activity을 시작하려고한다는 것입니다. 나는 이것이 안드로이드에서 직접 할 수 있다고 믿지 않는다. 대신 UI 스레드에서 Activity를 시작해야한다. 따라서 Android에서이 작업을 수행하는 방법은 Handler을 사용하는 것입니다. Handler은 UI 스레드에 있으며 백그라운드 스레드에서 메시지를 수신하여 다른 Activity 시작과 같은 UI 작업을 수행합니다.

예 :도

//Inside your activity: 
final Handler messageHandler = new Handler() { 
    public void handleMessage(Message msg) 
    { 
     //Start Activity 
     Intent i = new Intent(Start.this, RadyoBabylonActivity.class); 
     startActivity(i); 
    } 
} 

//Inside onPrepared(MediaPlayer mp): 
messageHandler.sendEmptyMessage(0); 

참조 : http://developer.android.com/reference/android/os/Handler.html

관련 문제