1

示例应用程序中的视频(视频的 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
4

1 回答 1

1

方法:1 您需要在 onPrepared 方法中使用监听器“OnPreparedListener()”调用 mediaPlayer.start()。您收到此错误是因为您在 mediaPlayer.start() 达到准备状态之前调用它。

您可以这样做:

mp.setDataSource(url); 
mp.setOnPreparedListener(this);
mp.prepareAsync();

public void onPrepared(MediaPlayer player) {
    player.start();
}

方法 2: 似乎错误 -38 表示状态异常(如错误消息所示)。例如,如果您在歌曲准备好之前调用 start(),或者在调用 pause() 时,即使歌曲根本没有播放。

要解决此问题,请在调用方法之前检查 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);
    }
}); 

源链接:-在状态 0 中调用媒体播放器,错误 (-38,0)

于 2014-12-20T06:35:53.253 回答