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 リスナー「OnPreparedListener()」を使用して、onPrepared メソッドで 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 に答える