2

私が持っている曲はすべて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();

}
4

4 に答える 4

4

オリエンテーションを自分で処理したくない場合の別の方法。mediaplayer の現在位置を 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);
    }
于 2012-08-17T21:57:15.933 に答える
2

方向を切り替えると、現在のアクティビティが破棄され、レイアウト用に再度作成されます。これを防ぐにはいくつかの方法がありますが、マニフェスト ファイルのアクティビティ セクションに android:configChanges="orientation" をスローします。オリエンテーションがアクティビティを再開するのを防ぐ必要があります

于 2012-08-17T20:40:09.143 に答える
1

方向を変更すると、アクティビティがリロードされます。したがって、方向をロックして、アクティビティがリロードされないようにすることができます。

于 2012-08-18T19:22:51.343 に答える
0

画面の向きを変更すると、現在のアクティビティが再開されます。onCreateとonDestroyをログに記録します。これは、Android開発ではまれですが、非常に不快な驚きの1つです。アクティビティの現在のステータスを保存し、手動で復元する必要があります。

于 2012-08-17T20:42:40.377 に答える