【问题标题】:Why does my song restart when I change from vertical to horizontal view?当我从垂直视图更改为水平视图时,为什么我的歌曲会重新开始?
【发布时间】:2012-08-17 20:35:47
【问题描述】:

我拥有的歌曲都是 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();

}

【问题讨论】:

  • 嗯,会有一个非常简单的方法来找出 .. -1 因为这个问题会更有趣/有用如果最后一个问题已得到解决/回答(并包含在帖子中)。

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


【解决方案1】:

如果您不想自己处理方向,另一种方法。在 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);
    }

【讨论】:

  • 感谢分享这个绝妙的技巧,它对我帮助很大。
【解决方案2】:

当您切换方向时,当前活动将被销毁并再次创建以用于布局目的。您可以通过几种不同的方式阻止这种情况,但抛出 android:configChanges="orientation" 在清单文件的活动部分。它应该防止方向重新启动活动

【讨论】:

  • 那是我第一次听说。这有缺点吗?处理屏幕方向变化总是这么麻烦,现在你告诉我我什至不必这样做?
  • 您可以自己处理方向更改,但如果您当时在屏幕上有很多内容,这可能会很烦人。但默认情况下,更改方向确实会重新创建活动。在我看来,这是一种愚蠢的做法。
  • 但我想重新创建活动,也希望我的歌曲不会重置任何其他解决方案,请帮助我
【解决方案3】:

当您更改方向时,Activity 会重新加载。因此您可以锁定方向以防止 Activity 重新加载。

【讨论】:

    【解决方案4】:

    屏幕方向更改实际上意味着您当前的活动已重新启动。记录你的 onCreate 和 onDestroy,你会看到。 我发现这是 Android 开发中罕见但非常令人不快的惊喜之一,您必须保存活动的当前状态并手动恢复它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多