2012-02-24 31 views
31

VideoViewを持つアプリケーションがあり、VideoViewで再生するようにビデオを設定しました。ビデオが再生されている間は、一時停止します。その後、一時停止した後、再びビデオを再生し始めますが、一時停止していなければビデオが来るようにします。だから、例えばVideoView getCurrentPosition()Acerの不規則性アイコンA200

ビデオはビデオ

ビデオは10秒間一時停止したまま

ビデオは、私はビデオを開始するこの時点で---再び<の再生を開始6秒で一時停止

の再生を開始します16秒のマークで演奏する。私はビデオがのために一時停止されたどのくらい知っているので、

は、この効果を達成するために、私は必要な計算を行うためにタイムスタンプを設定している、と私は再びそれを起動するときに、私はすべてのmVideoView.seekTo(timePlayed + timePaused);

これを呼び出しますToshiba Thrive、およびMotorola Xoomで意図したとおりに動作します。しかし、Acer Iconia A200についてseekTo()を呼び出すと、VideoViewはgetCurrentPosition()を呼び出すと常に同じ時刻に戻ります。これを説明するために、現在の位置を記録する約1000msごとに起動する実行可能ファイルを設定します。私が行った後、これはVideoViewは常に私がに渡すものは何でも返します呼び出すようですので

/**************** 
* These are from before it is paused/resumed 
* you can see that the current time is functioning 
* as expected. 
******************/ 
Current Position = 0 
Current Position = 734 
Current Position = 1735 
Current Position = 2703 
Current Position = 3737 
Current Position = 4738 
Current Position = 5739 
Current Position = 6740 
Current Position = 7741 
Current Position = 8742 
Current Position = 9743 


/********************************** 
* These are from the exact same runnable 
* after the video has been paused, and 
* started again after seekTo(). 
* The position is no longer increasing. 
* Note that the video is playing correctly on the screen 
* while these logs happen. 
**********************************/ 
Current Position = 23410 
Current Position = 23410 
Current Position = 23410 
Current Position = 23410 

23410は、私がseekTo()に渡しています正確な時間である:ここでは、その出力の一部がありますそれは実際にまだ演奏されていて、ポジションが進んでいても関係ありません。

誰かがこのVideoView/MediaPlayerのバグを経験したことがありますか?私は、MediaPlayerがgetCurrentPosition()の不正確な値を返すことについて話していた既知の問題グループでいくつかを見ましたが、このような増加をやめる場所を見つけませんでした。私が見たもののほとんどは、ビデオではなくオーディオを再生しようとしていました。

+0

pause()の後に続行するにはresume()を使用しますか?私のIconia A501で動作しないレジューム。 getCurrentPosition()はseekに渡された値を返しますが、ビデオはまだ一時停止しています。 – asktomsk

+1

コードの例を送信できますか?私は自分のタブレットをチェックします。 – asktomsk

+1

私はあなたと同じ問題を見たことがありませんが、getCurrentPositionが不安定に動作するのを見ました。シークの位置が0でないときに0を返すことがあります。 – MaximumGoat

答えて

1

これは、デバイスの空きメモリ容量と関係がある可能性があります。ラムが低い場合は、バックグラウンド活動がカウンターと一緒に再開することがあります。

+0

アクティビティが再開している場合は、画面上のビデオも再開します。しかし、ビデオは正常に再生され続けており、私のアクティビティライフサイクルのメソッドは呼び出されていないので、これは当てはまりません。 – FoamyGuy

1

アクティビティの一時停止方法でビデオプレイヤーを解放して再設定し、アクティビティのオンスタートmtdに再度設定します。クロノメーターを使用して、ユーザーのvideoview.setタイミングのタイミングをシークエンスのクロノメータータイムに含める必要があります。

1

おそらく、メインUIスレッドのオーバーロードに問題があります。ビデオは高いデータ要素であり、エイコアイコンは優れたデバイスではないため、データが不足したり、異常が発生したり、クラッシュする可能性があります。 AsyncTaskを使用してビデオを追加してみてください。

関連する問題