1

広告付きのビデオ プレーヤーを実装しています。最終的に、広告の再生が再開された後、再生が一時停止され、いくつかの広告が表示されます。

これを実装するために、VideoView と別の View を使用して FrameLayout を実行し、広告を表示しました。

広告ブレークに達したら、次のことを行います。

videoView.pause();
videoView.setVisibility(View.GONE);
adsView.setVisibility(View.VISIBLE):
//Play ads for X time
adsView.setVisibility(View.GONE);
videoView.setVisibility(View.VISIBLE);
videoView.play();

それはかなりシンプルで、Nexus 7 を除いて私が試したすべてのデバイスで正常に動作します。画面の約 1/4 しか使用しません。

何時間も調査した後、これは VideoView の可視性を変更した場合にのみ発生することに気付きました。次の行にコメントすると//videoView.setVisibility(View.GONE);、問題はなくなりますが、広告が表示されません。

関連する可能性があるいくつかのログ:

NvOsDebugPrintf   BeginSequence 640x368
NvOsDebugPrintf   pnvsi->nDecodeBuffers = 9 
NvOsDebugPrintf   Display Resolution : (640x360) 
NvOsDebugPrintf   Display Aspect Ratio : (128x360) 

ディスプレイのアスペクト比 (128x360) は、ディスプレイの解像度 (640x360) と同じである必要がありますが、そうではありません。

何か案が?ありがとう

4

1 に答える 1

0

原因は定かではありませんが、測定誤差があるようです(n7で測定に問題があるという報告は他にもあると思います)。View.GONE は、消えたビューから解放されたスペースを考慮して、ビューを再レイアウトします。

回避策として、再配置を回避できます。RelativeLayout 内に両方のビューを配置し、幅と高さの fill_parent を両方に設定して完全にオーバーラップさせます。次にsetVisibility(View.INVISIBLE)、ウィジェットのサイズが変更されないように使用できます。

于 2012-12-19T16:19:53.467 に答える