android - 当我从垂直 View 更改为水平 View 时,为什么我的歌曲会重新开始播放?

标签 android android-layout media-player android-mediaplayer android-lifecycle

我拥有的歌曲都是 MediaPlayer,当我从水平方向变为垂直方向时,反之亦然,歌曲停止,然后从歌曲的开头开始播放。我怀疑当我将布局更改为水平或垂直时会调用 onPause() 方法或其他方法。我该怎么做才能防止歌曲重新开始,并在我从垂直变为水平时保持正常播放,反之亦然?这与我实现这些方法有什么关系吗?

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    music.get(SongPlaying).stop();
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    music.get(SongPlaying)).stop();

}

@Override
protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    music.get(SongPlaying)).stop();

}

最佳答案

如果您不想自己处理方向,还有另一种方法。在onSaveInstantState()中保存媒体播放器当前位置;

   @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("currPos", music.get(SongPlaying)).getCurrentPosition());
    }

然后有一个变量保存当前位置和onCreate

public void onCreate(Bundle state){
         if( state != null ){
             playerCurrentPosition = state.getInt("currPos"));
         }
        //Then when you play your media use seekTo(playerCurrentPosition);
    }

关于android - 当我从垂直 View 更改为水平 View 时,为什么我的歌曲会重新开始播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012831/

相关文章:

javascript - 文件的 URL 强制下载,如何禁用下载并将该文件存储到客户端的 JavaScript 变量中?

java - 具有速度控制(恒定音高)的javafx中的视频播放器

java - Android Location Distance为空

android - 使用 Android 和 iOS 在 Nodejs 中推送通知系统

android - 仅将 alpha-transparency 设置为布局而不是其子级

android - 请帮我看一下 Android 记事本教程

android - 通过方向更改保持进度条可见性

android - 如何取消警报管理器中的重复任务?

android - 约束布局 ListView 在键盘出现时移动

android - 升级到 Gingerbread 2.3.4 后 MediaPlayer 不工作