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 上播放音乐

如何使用 Android Spotify SDK 在应用程序中直接播放音乐?

android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?

Android:如何停止这种音乐?

保持声音样本播放直到按钮被释放android