mah*_*ani 3 android android-videoview
这是我的布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center" >
<VideoView
android:id="@+id/geoloc_anim"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_gravity="top|center"
android:visibility="visible" />
<FrameLayout
android:id="@+id/placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的活动代码:
public class MainActivity extends ActionBarActivity implements OnPreparedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
VideoView mVideoView = (VideoView) findViewById(R.id.videoview);
Uri uri = Uri.parse("android.resource://" + getPackageName()+"/raw/lst2");
mVideoView.setVideoURI(uri);
mVideoView.requestFocus();
mVideoView.setZOrderOnTop(true);
mVideoView.start();
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
View placeholder = (View) findViewById(R.id.placeholder);
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
// video started; hide the placeholder.
placeholder.setVisibility(View.GONE);
return true;
}
return false;
}
});
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
}
public void surfaceCreated(SurfaceHolder holder) {
}
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
Run Code Online (Sandbox Code Playgroud)
它在Android 4.2上工作正常,但它在Android 2.3上无法正常工作.在Android 2.3上,它第一次打开它可以找到但是当关闭应用程序并再次打开它时,会出现黑屏,如下所示:

一分钟左右后,它从黑屏变为白屏但仍然没有播放.
你能帮我解决这个问题吗?
Ran*_*mar 14
答案很晚.但肯定它对任何人都有帮助.
在start()之前设置videoView.setZOrderOnTop(true).
https://developer.android.com/reference/android/view/SurfaceView.html#setZOrderOnTop(boolean)
videoView.setVideoURI(Uri.parse(uriString));
videoView.setZOrderOnTop(true);//this line solve the problem
videoView.start();
Run Code Online (Sandbox Code Playgroud)
我解决了这个与切换alpha为VideoView:
public class VideoPlayer extends VideoView {
....
public VideoPlayer(Context context) {
super(context);
init();
}
public void init() {
setAlpha(0); // hides view
setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {
@Override
public boolean onInfo(MediaPlayer mp, int what, int extra) {
if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
setAlpha(1); // shows view
return true;
}
return false;
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
我想如果你有外部设备VideoView并且可以访问它,你也可以这样做。
删除 mVideoView.start() 并更改 onPrepared 以开始视频,
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
..............
Run Code Online (Sandbox Code Playgroud)
我没有 Android 版本低于 4.2 的设备可供测试,但这就是我使用应用程序启动视频的方式
| 归档时间: |
|
| 查看次数: |
11876 次 |
| 最近记录: |