【问题标题】:Android - How to keep music playing while inside the app?Android - 如何在应用程序内保持音乐播放?
【发布时间】: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();
}

}

【问题讨论】:

    标签: android background-music


    【解决方案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 的类并将您的音乐播放器放在那里。

    • 创建一个将在后台读取音乐的服务

    【讨论】:

    • 感谢您的回复。我将研究应用程序扩展解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多