【发布时间】:2016-03-03 06:50:53
【问题描述】:
我正在开发一个 android 电视应用程序,我正在开发 android studio 模板中给出的示例电视应用程序。在这里一切正常,但在视频播放器屏幕上,它在 Android TV 模拟器中显示“无法播放此视频”错误。
参考文件 PlaybackOverlayActivity.java=>onFragmentPlayPause()(当我们在 android studio 中创建新电视项目时)
在演示中,他们使用了 videoview。我还尝试使用 surface view/texture view 来播放链接中的视频,但它会给出不同的错误,例如
1.MediaPlayer: 错误 (100, 0)
2.MediaPlayer:应该已经设置了字幕控制器
3.MediaPlayer:错误(1,-38)
我已经尝试了不同线程的不同解决方案...
请检查以下代码,它仅用于测试视频播放。 我还发现任何从 AVD 创建的模拟器都无法通过这些方法播放视频。
public class MainActivity extends Activity implements TextureView.SurfaceTextureListener, MediaPlayer.OnPreparedListener {
private MediaPlayer mMediaPlayer;
private TextureView mPreview;
private String path = "http://www.sample-videos.com/video/mp4/240/big_buck_bunny_240p_1mb.mp4";
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_main);
mPreview = (TextureView) findViewById(R.id.surface);
mPreview.setSurfaceTextureListener(this);
}
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
Surface s = new Surface(surface);
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setSurface(s);
mMediaPlayer.setDataSource(this, Uri.parse(path));
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepare();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
return false;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
}
还要说明是否有其他方法可以在 Android TV 模拟器上测试视频。谢谢。
【问题讨论】:
-
在普通的手机模拟器上能用吗??
-
我已经提到'我还发现任何从 AVD 创建的模拟器都无法播放视频'。但它在 genymotion 模拟器(手机)中播放。
标签: android surfaceview android-videoview android-tv