2011-09-19 87 views
0

我想为此活动准备我的mediaplayer,当它准备好时,我想跳到另一个活动并在那里启动mediaplayer。它不会跳转到其他活动,你可以帮我吗?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。我不相信这可以直接在Android中执行 - 相反,您必须从UI线程启动Activity。因此,在Android中执行此操作的方法是使用HandlerHandler位于UI线程上,并从后台线程接收消息以执行您的UI操作,例如从另一个Activity开始。

实施例:

//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