首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 屏幕旋轉音樂播放不中斷:Service 承載播放邏輯

     編輯:程式設計綜合問答

問題

Activity 中直接創建 MediaPlayer,旋轉屏幕導致 Activity 重建,音樂重播或停止。

解決架構:Service + MediaPlayer

public class PlaybackService extends Service {
    private MediaPlayer mediaPlayer;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        String path = intent.getStringExtra("path");
        if (mediaPlayer == null) {
            mediaPlayer = new MediaPlayer();
            try {
                mediaPlayer.setDataSource(path);
                mediaPlayer.prepare();
                mediaPlayer.start();
            } catch (IOException e) { e.printStackTrace(); }
        }
        return START_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) { return null; }

    @Override
    public void onDestroy() {
        if (mediaPlayer != null) mediaPlayer.release();
        super.onDestroy();
    }
}

Activity 控制 Service

// 啟動播放
Intent svc = new Intent(this, PlaybackService.class);
svc.putExtra("path", filePath);
startService(svc);

// 停止播放
stopService(new Intent(this, PlaybackService.class));

Manifest 聲明

<service android:name=".PlaybackService" />

優勢

  • Service 生命周期獨立於 Activity,旋轉不影響播放。
  • 支持後台播放、通知欄控制、耳機按鍵響應。
  • 配合 MediaSessionCompat 實現標準媒體控制界面。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved