10

インターネットから .3gp ファイルを表示できる制限付きのビデオ プレーヤーを作成することができました。ビデオは、ビデオの縦横比を維持しながら、全画面中央に表示されます。また、回転によってビデオが中断されることはなく、問題なく再生され続けます。

すべて問題ないように見えますが、私の HTC Legend では、回転して縦向きに戻すと、ビデオが破損し、全画面表示ではなく、本来のピクセル サイズで表示されます。しかし、ランドスケープに再び回転すると、完全に表示されます。理由はありますか?残念ながら、これをテストするためのハードウェアがこれ以上ありません。また、テストするアイデアも尽きてしまいました。

https://github.com/gradha/Android-video-stream-rotationから完全なサンプル ソース コードを取得できます。これは、アプリケーションを開いて横向きに回転し、画面に触れてビデオ コントロールを表示し、縦向きに戻して破損を確認したときのスクリーン キャプチャです。 ビデオは縦向きで問題なく開始しました

ランドスケープでもビデオは正常に動作します

しかし、ポートレートに戻ると、常に破損が表示されます

4

2 に答える 2

4

https://github.com/gradha/Android-video-stream-rotationのソース コード。コメントを追加しました:

独自の向きの変更を処理することを AndroidManifest.xml で指定したため、縦向きまたは横向きの機能で画面のサイズを変更します。

ソースコード AndroidManifest.xml から

android:configChanges="orientation|screenSize"

この属性をマニフェストのアクティビティ要素に追加すると、アクティビティがすべての向きの変更を処理するように解釈できますか? あなたじゃない?

Android デベロッパーから

アクティビティが構成の変更を処理することを宣言するには、マニフェスト ファイル内の適切なアクティビティ要素を編集して、android:configChanges 属性を含めます...詳細

したがって、次のことは必要ありません。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
}

これが当てはまるかどうかを確認するために、テスト プロジェクトを作成しました。

ビデオ ストリームの回転の例: https://github.com/TouchBoarder/RotatingVideoStream

私の結論:縦向きと横向きの両方でビデオを正しく表示するためにアクティビティの「onConfigurationChanged」をオーバーライドする必要はなく、ビデオは回転の変更時に再生され続けます。

コードを改善して使用してください:)

于 2012-10-04T22:12:26.383 に答える
0

私のテストケース全体が間違っていたことが判明しました。簡単なビデオビューの例が間違っていると非難するコミットまで、すべてが本に従っていました。ただし、この行を忘れていましたandroid:configChanges="orientation"。前述のコミットの上にこの行を追加すると、ビデオが破損することなくすべてが機能します。

hsigmond の回答を、比較して真の問題を見つけることができるテスト例を提供するために有効であるとマークします。カスタム方向ハンドラーと VideoView のサブクラスでこれを回避する私の全体的な作業は間違っていて、質問Android VideoView orientation change with buffered videoに基づいていませんでした。それが間違っているわけではありませんが、単に間違って適用しただけです(さらに、そこにある他の回答にも欠落が記載されていandroid:configChangesます)。

于 2013-01-13T17:59:20.327 に答える