按下主屏幕按钮后播放器变为空Android

问题描述:

我正在创建一个流媒体播放器,至今其工作正常。我可以设法开始和停止流式传输。当我按下主页按钮时,活动已关闭,但声音仍在播放。我很好,问题是当我再次启动应用程序并点击停止按钮时,对象为空。这就是我的代码:按下主屏幕按钮后播放器变为空Android

public class Main extends Activity { 

private MediaPlayer player; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

} 

public void onPlayClick(View v) { 

    try { 
     player = new MediaPlayer(); 
     player.setDataSource("*****"); 
     player.setAudioStreamType(AudioManager.STREAM_MUSIC);   
     player.setOnPreparedListener(new OnPreparedListener() { 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       Log.i("In", "Prepared Listener"); 
       player.start(); 
      } 
     }); 
     player.prepareAsync(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

public void onStopClick(View v) { 

    if (player != null && player.isPlaying()) { 
     player.stop(); 
     player.release(); 
     player = null; 
    } 
} 

}

有谁知道什么可能是错的这个简单的代码? 非常感谢 牛逼

我想这也是值得注意的是,如果你要去的活动路线,而不是服务,你应该把

if (player != null && player.isPlaying()) { 
    player.stop(); 
    player.release(); 
    player = null; 
} 

您的onStop(内),或的onDestroy()方法你的活动也。如果你把它放在onStop()中,当主页按钮被按下时(或者其他活动可能接管电话铃声),音频将停止。如果你把它放在onDestroy()中,它会继续播放,直到系统需要你的应用程序正在使用的资源。无论哪种方式,这是一个好主意,以便您的应用程序不会停留在MediaPlayer资源上,因为无论出于何种原因,用户都不会按停止按钮。

你想将播放器放在服务:http://developer.android.com/reference/android/app/Service.html

这样,其仍然是有效的,当你重新加载活动。

+0

我会看看它!谢谢@Femi – Thiago 2011-04-29 15:01:01