Android - 如何在应用程序内保持音乐播放?
Posted
技术标签:
【中文标题】Android - 如何在应用程序内保持音乐播放?【英文标题】:Android - How to keep music playing while inside the app? 【发布时间】:2014-12-10 02:52:53 【问题描述】:我想设置我的应用程序的背景音乐,这样当我在应用程序上时它会继续播放,当我按下主页按钮时它会暂停。问题是,如果我在手机进入主屏幕时暂停音乐,当我进入应用程序中的其他活动时,它也会暂停音乐。有没有办法在我切换活动时保持音乐播放(例如,我有一个菜单,我可以在我的应用程序中打开不同的屏幕,一旦手机离开菜单屏幕,音乐就会停止播放)。我的代码如下:
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(Menu.this, android.R.layout.simple_list_item_1,
classes));
mp = MediaPlayer.create(Menu.this, R.raw.music);
mp.start();
@Override
protected void onPause()
super.onPause();
@Override
protected void onStop()
super.onStop();
mp.pause();
@Override
protected void onResume()
super.onResume();
mp.start();
@Override
protected void onDestroy()
super.onDestroy();
mp.release();
finish();
【问题讨论】:
【参考方案1】:您可以创建一个Service
,让音乐在后台播放
示例代码:
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.util.Log;
public class PlayAudio extends Service
private static final String LOGCAT = null;
MediaPlayer objPlayer;
public void onCreate()
super.onCreate();
Log.d(LOGCAT, "Service Started!");
objPlayer = MediaPlayer.create(this,R.raw.sleepaway);
public int onStartCommand(Intent intent, int flags, int startId)
objPlayer.start();
Log.d(LOGCAT, "Media Player started!");
if(objPlayer.isLooping() != true)
Log.d(LOGCAT, "Problem in Playing Audio");
return 1;
public void onStop()
objPlayer.stop();
objPlayer.release();
public void onPause()
objPlayer.stop();
objPlayer.release();
public void onDestroy()
objPlayer.stop();
objPlayer.release();
@Override
public IBinder onBind(Intent objIndent)
return null;
更多详情请参考here。
【讨论】:
没有方法onPause()
和 onStop()
在服务中。【参考方案2】:
我看到了两种不同的解决方案:
创建一个扩展 Application 的类并将您的音乐播放器放在那里。
创建一个将在后台读取音乐的服务
【讨论】:
感谢您的回复。我将研究应用程序扩展解决方案。以上是关于Android - 如何在应用程序内保持音乐播放?的主要内容,如果未能解决你的问题,请参考以下文章
当用户切换到 Android Studio Kotlin 中的其他页面时,如何停止播放音乐?
如何使用 Android Spotify SDK 在应用程序中直接播放音乐?