gpt4 book ai didi

android - Android 中的 MusicPlayer 问题(初学者)

转载 作者:太空狗 更新时间:2023-10-29 13:36:41 24 4
gpt4 key购买 nike

我正在创建的应用程序有问题。

基本上,我正在尝试在我的应用程序的后台播放音乐,我可以做到并且播放效果很好。然而,当用户切换到另一个屏幕时,音乐会重新开始播放,而不是像往常一样继续播放。

这是我目前所有的代码:

public class MainActivity extends Activity {    


MediaPlayer mp;

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//setting the layout

mp = MediaPlayer.create(this, R.raw.song);
mp.setLooping(true);
mp.getDuration();
mp.start();

然后我在这个类的末尾有这个方法来在应用程序关闭时停止音乐:

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();


mp.release();
finish();

}

我不确定要在我的其他类(class)中包含什么以便继续播放音乐。如果有人能告诉我,我将不胜感激。

谢谢。

最佳答案

您已使您的 Mediaplayer 实例依赖于 Activity。因此,当 Activity 重新启动时,将再次调用 onCreate() 并且音乐会重新启动。如果您想继续播放音乐,请将 mp 从任何 Activity 实例中取出并将其放入服务中。然后从您的 MainActivity 启动服务并让它播放音乐,除非您停止服务。

  public class MainActivity extends ListActivity {




/** Called when the activity is first created. */

Intent i;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
i=new Intent(this, MyMusicService.class);
final ToggleButton togglebutton =(ToggleButton)findViewById(R.id.toggleButton1);
togglebutton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// Perform action on clicks
if (togglebutton.isChecked()) {
Toast.makeText(MainActivity.this, "Checked", Toast.LENGTH_SHORT).show();
startService(i);
} else {
stopService(i);
Toast.makeText(MainActivity.this, "Not checked", Toast.LENGTH_SHORT).show();
} }});





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

服务是这样的:

   public class MyMusicService extends Service {
MediaPlayer mp;


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mp = MediaPlayer.create(this, R.raw.song);


mp.start();
mp.setLooping(true);

return super.onStartCommand(intent, flags, startId);
}


@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(mp!=null)
mp.release();
mp=null;
}
}

关于android - Android 中的 MusicPlayer 问题(初学者),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9803763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com