我正在开发一个Android电视应用程序,我正在研究android studio模板中给出的示例电视应用程序。这里一切正常,但在视频播放器屏幕上,它在Android TV模拟器中显示“无法播放此视频”错误。
参考文件 PlaybackOverlayActivity.java => onFragmentPlayPause()(当我们在android studio中创建新的电视项目时)
在演示中,他们使用 videoview 。我也尝试使用表面视图/纹理视图来播放链接中的视频,但它会出现不同的错误,例如
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模拟器上测试视频。感谢。
答案 0 :(得分:0)
我建议你看看Android TV Leanback sample,它比Android Studio模板更积极地维护。在Leanback示例中,它可以向您展示如何使用ExoPlayer播放内容。
此外,最近对Android模拟器进行了更改,修复了一个关键问题,即网络访问无法通过模拟器获得,从而无法获取视频。确保您已更新到最新的API23_x86和API23_arm模拟器以获得此修复。