2012-02-04 119 views
0

这是我的问题,当我开始活动音乐开始像我想要的,但当我离开活动(通过按下后退按钮)应用程序崩溃,并“意外停止”:(我想要做的是有音频走走停停到另一个活动,无须意外停车,我该怎么做?如何停止音频?

public class Run extends Activity { 

/** The OpenGL View */ 
private GLSurfaceView glSurface; 
private MediaPlayer mPlayer; 

/** 
* Initiate the OpenGL View and set our own 
*/ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //Create an Instance with this Activity 
    glSurface = new GLSurfaceView(this); 
    //Set our own Renderer and hand the renderer this Activity Context 
    glSurface.setRenderer(new Lesson06(this)); 
    //Set the GLSurface as View to this Activity 
    setContentView(glSurface); 

    new Thread(new Runnable() { 
     public void run() { 
      try{ 
       MediaPlayer mPlayer = MediaPlayer.create(Run.this, R.drawable.theygonelovemeformyambition); 
       mPlayer.setLooping(true); 
       mPlayer.start(); 
       while(mPlayer.isPlaying()){ 
        android.os.SystemClock.sleep(100); 
       } 
      }catch(Exception e){ 
       String TAG = null; 
       Log.d(TAG,"ERROR PLAYING"); 
       e.printStackTrace(); 
      } 
     }}).start(); 

} 

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 
    mPlayer.release(); 
} 
} 

回答

0

嗨,你必须释放的媒体播放器资源之前,您应该停止媒体播放器像下面。

@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 

    if(mPlayer.isPlaying()) 
     mPlayer.stop(); 

    mPlayer.release(); 

    super.onDestroy(); 
} 
+0

这是行不通的! Opengl有不同的过程吗? – KaSiris 2012-02-04 07:14:39

+0

错误是什么? – 2012-02-04 07:19:20

+0

更改行'MediaPlayer mPlayer = MediaPlayer.create(Run.this,R.drawable.theygonelovemeformyambition);' to'mPlayer = MediaPlayer.create(Run.this,R.drawable.theygonelovemeformyambition);' – 2012-02-04 07:23:02

0

您没有初始化mPlayer
在public void run()你只是创建一个新的MediaPlayer 所以当你尝试mPlayer.release();你正在接受null mPlayer,所以你得到一个nullPointerExceptionerror(我猜)