2011-06-29 9 views
8

私はインターネットから.3gpファイルを見ることができる限られたビデオプレーヤーを書きました。ビデオは、ビデオの縦横比を維持したまま、全画面中央に表示されます。また、ローテーションによってビデオが中断されず、問題なく再生されます。肖像画に戻るときにAndroid VideoViewの破損を避ける

すべてがうまく見えますが、私のHTC Legendでは、縦書きに戻すとビデオが壊れてしまい、フルスクリーンを表示する代わりにネイティブピクセルサイズで表示されます。しかし、再び景観に転向し、完璧に見えます。なぜどんなアイデア?残念ながら、私はこれをテストするためのハードウェアを持っていないし、テストするアイデアがなくなってしまった。

https://github.com/gradha/Android-video-stream-rotationから完全なソースコードを入手できます。ここでは、アプリケーションを開き、風景に回転し、ビデオコントロールを表示するために画面をタッチし、その後、破損を表示するために肖像画に戻る画面キャプチャです。 https://github.com/gradha/Android-video-stream-rotationのソースコードで video started ok in portrait

on landscape the video works fine too

but now going back to portrait always shows corruption

答えて

2

。我々はたちは私たち自身の向き 変更を処理することを のAndroidManifest.xmlに指定されているので、我々は肖像画や風景 という機能で、画面のサイズを変更

:あなたはコメントを追加しました。ソースコードから

だから

android:configChanges="orientation|screenSize" 

をAndroidManifest.xmlにあなたはマニフェストのアクティビティ要素にこの属性を追加した場合、私はとしての活動は、すべての向きの変更を処理することを解釈するのでしょうか?あなたじゃない?

アンドロイド含まれるようにマニフェストファイルに 適切なアクティビティ要素を編集し、あなたの活動が設定の変更を処理することを宣言するために

Androidの開発者から:configChanges属性を... more

でないとは次のようになります。

回転ビデオストリーム例:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
} 
私はこれがそうであったかどうかを確認するためのテストプロジェクトを作成し https://github.com/TouchBoarder/RotatingVideoStream

私の結論:私はに活動中で「onConfigurationChanged」をオーバライドする必要はありませんでした 肖像画と風景の両方でビデオを正しく表示すると、ビデオは回転の変化で再生し続けます。

は、コードを改善し、使用気軽に:)

+0

あなたの結論は間違っています:私はその方法を削除すると、ビデオはまだビデオの破損を表示します。 OTOHの例は自分のデバイス上で動作するので、その犯人はどこか別の場所にいます。私が時間を見つけたら、私は両方のプロジェクトの間の他の変更を探すでしょう。 –

+0

不足しているリンクを提供するための答えを正しいものとしてマークしてください。 –

+1

android:configChanges = "orientation"の他に、android:configChanges = "orientation | screenSize"を追加する必要があります。 – jonathanrz

0

は私の全体のテストケースが間違っていたが判明します。the commit where I blame the easy videoview example on being wrongまですべては本によるものでした。しかし、私はandroid:configChanges="orientation"行を忘れてしまい、前述のコミットの上にこの行を追加すると、ビデオが破損することなくすべてが機能します。

私はhsigmondの答えを真の問題と比較して調べることができるテスト例を提供するのに有効であるとマークします。カスタム方向ハンドラとVideoViewのサブクラスでこの問題を回避する私の全体は間違っていて、質問Android VideoView orientation change with buffered videoに基づいて間違っていました。そのが間違っていますが、私はそれを間違って適用しました(プラスその他の回答には、不足しているandroid:configChangesも記載されています)。

関連する問題