100%。通常,Android VideoView不顯示視頻,音頻正在播放。我怎樣才能獲得的視頻顯示的我使用單聲道的Android時間
我已經通過所有的職位我可以找到關於使用VideoView並不能找到答案倒。我已經轉向使用帶有MediaPlayer的SurfaceView,並且沒有運氣。
我想要一個視頻在用戶未觸摸屏幕一段時間後開始播放,所以我有一個FrameLayout可以保存VideoView,並且當我希望視頻顯示時可以看到它。
當我開始播放視頻,它通常不顯示(時間約80%),但音頻開始播放。如果你觸摸屏幕,視頻就會出現。我嘗試了不同的視頻(.mp4和.3gp),但由於視頻實際上是在您觸摸屏幕後顯示的,因此我懷疑這是其他情況。
我有同樣的結果嘗試此一對夫婦的設備,儘管他們是從同一製造商。他們都是Coby設備(一個7英寸和另一個9.7英寸),並且正在運行Android 4.0。我的目標是Android 2.3 API。
這裏是我的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
... A bunch of controls ...
<FrameLayout
android:id="@+id/videoViewBack"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF000000"
android:visibility="gone">
<VideoView android:id="@+id/videoView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:visibility="visible"/>
</FrameLayout>
</LinearLayout>
和我的函數來啓動視頻看起來是這樣的:
private void StartVideo()
{
RequestedOrientation = ScreenOrientation.SensorLandscape; // Force into landscape so the video looks good
FrameLayout vidBack = FindViewById<FrameLayout>(Resource.Id.videoViewBack);
vidBack.Visibility = ViewStates.Visible;
VideoView vid = FindViewById<VideoView>(Resource.Id.videoView);
vid.SetOnTouchListener(this);
vid.SetOnCompletionListener(this);
vid.SetVideoPath(_attractFile);
vid.SetMediaController(new MediaController(this));
vid.RequestFocus();
vid.Start();
}
我也試圖將開始()調用在OnPreparedListener但沒有幫助。
我拉出我的頭髮,並希望有人知道什麼愚蠢的事情,我忘了做。
編輯:
的理論,這個問題是有關在佈局傳遞不是大小的視頻正確,我做這似乎已經修正了該問題下面。但我不是100%肯定,爲什麼,或者如果它只是戳果凍
在我加入OnPrepared處理程序:
View mainScreen = FindViewById<View>(Resource.Id.MainScreen);
mainScreen.requestLayout();
mainScreen.postInvalidateDelayed(1000);
mainScreen.postInvalidate();
其中mainScreen是我的XML主要的FrameLayout。 PostInvalidate在大部分時間修復了它,添加PostInvalidateDelayed修復了它100%的時間(我認爲:))。
思考,爲什麼這個工程?