【问题标题】:Playing music in sleep/standby mode in Android 2.3.3在 Android 2.3.3 中以睡眠/待机模式播放音乐
【发布时间】:2019-01-03 23:26:28
【问题描述】:

我正在尝试开发一个简单的媒体播放器来播放 Android 2.3.3 的 sdcard/music 目录的 mp3。问题是当我按下电源按钮或设备进入睡眠状态时,音乐停止。通过谷歌搜索和搜索 stackoverflow,我发现我需要使用唤醒锁定选项,但无论我做什么,当设备进入睡眠状态时,音乐都会停止(在模拟器上按 F7 也会停止音乐)。由于我已经为此奋斗了太久,所以我想我会寻求帮助。我真诚地感谢任何意见。谢谢。这是我的代码:

FileInputStream fis = new FileInputStream(songList.get(0));
FileDescriptor fd = fis.getFD();
if (mediaPlayer != null) {
 if (mediaPlayer.isPlaying()) {
  mediaPlayer.release();
  mediaPlayer = null;
 }
}

mediaPlayer = new MediaPlayer();
mediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK);
mediaPlayer.setDataSource(fd);
mediaPlayer.prepare();
playPauseButton.setImageResource(android.R.drawable.ic_media_pause);
mediaPlayer.seekTo(songPosition);
mediaPlayer.start();
appMsg.setText(songList.get(0));

【问题讨论】:

    标签: android sleep playback standby


    【解决方案1】:

    我认为您应该使用服务在后台运行媒体 因此,您创建一个服务并将您的媒体代码放入其中并将其附加到启动和停止按钮可能是这样的:

    public class MediaPlayerService extends Service {
         MediaPlayer myMediaPlayer;
    
         @Override
         public IBinder onBind(Intent intent) {
                // TODO Auto-generated method stub
                return null;
         }
         @Override
         public void onCreate() {
             FileInputStream fis = new FileInputStream(songList.get(0));
             FileDescriptor fd = fis.getFD();
    
             if (mediaPlayer != null) {
               if (mediaPlayer.isPlaying()) {
                   mediaPlayer.release();
                   mediaPlayer = null;
                  }
                }
    
             mediaPlayer = new MediaPlayer();
             mediaPlayer.setDataSource(fd);
             mediaPlayer.prepare();
             playPauseButton.setImageResource(android.R.drawable.ic_media_pause);
             mediaPlayer.seekTo(songPosition);
             appMsg.setText(songList.get(0));
         }
         @Override
         public void onStart(Intent intent, int startid) {
             myMediaPlayer.start();
         }
         @Override
         public void onDestroy() {
             myMediaPlayer.stop();
         }
    }
    

    之后,您在按下开始按钮时使用 methodestartService 启动该服务,并在您的 Activity 类中使​​用 methode stopService 停止它

    【讨论】:

    • 非常感谢,我会试试看告诉你
    • 欢迎,别忘了告诉我:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    相关资源
    最近更新 更多