示例应用中的视频(适用于视频的AndroidTV Leanback支持库示例 - https://github.com/googlesamples/androidtv-Leanback)无法在Android TV模拟器中播放。我在Android_TV_1080p_API_21模拟器上运行该应用程序。可能有什么不对?
编辑:我收到以下日志输出:
2247-2260/com.example.android.tvleanback E/MediaPlayer﹕ error (1, -38)
2247-2247/com.example.android.tvleanback E/MediaPlayer﹕ Error (1,-38)
2247-2247/com.example.android.tvleanback E/MediaPlayer﹕ stop called in state 0
2247-2247/com.example.android.tvleanback E/MediaPlayer﹕ error (-38, 0)
2247-2247/com.example.android.tvleanback W/MediaPlayer﹕ mediaplayer went away with unhandled events
答案 0 :(得分:1)
方式:1 强> 您需要使用侦听器“OnPreparedListener()”在onPrepared方法中调用mediaPlayer.start()。您收到此错误是因为您在达到准备状态之前调用了mediaPlayer.start()。
以下是如何做到这一点:
mp.setDataSource(url);
mp.setOnPreparedListener(this);
mp.prepareAsync();
public void onPrepared(MediaPlayer player) {
player.start();
}
方法2: 似乎错误-38表示状态异常(如错误消息所示)。例如,如果您在歌曲准备好之前或者当您调用暂停()时调用start(),即使该歌曲根本没有播放也是如此。
要解决此问题,请在调用方法之前检查mediaPlayer的状态。例如:
if(mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
此外,MediaPlayer正在发送事件消息。即使您不需要准备好的事件(尽管在此事件被触发之前不开始播放也是个好主意),您必须设置一个回调侦听器。这也适用于OnErrorListener,OnCompletionListener,OnPreparedListener和OnSeekCompletedListener(如果您调用seek方法)。
只需通过
附加听众mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// Do something. For example: playButton.setEnabled(true);
}
});