1

非アクティビティ クラスでAndroid を使用するMediaPlayerと、常にコンテキスト エラーが発生します。バグのある行は次のとおりです。

MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);

サービスで「 」を使用できないことはわかってthisいますが、試した他のすべてのものはバグを引き起こし続けました。

助言がありますか?

4

2 に答える 2

1

過去 2 日間で、バックグラウンド サービス内で MediaPlayer を使用するアプリを開発したので、あなたは運が良すぎます ;)

次の行を使用して、MediaPlayer のインスタンスを簡単に取得できます。

MediaPlayer mediaPlayer = new MediaPlayer();

次に、すべてのリスナーを設定して、必要な曲を再生できます。

2012 年 4 月 22 日編集

リスナーを設定するには (例):

        mediaPlayer.setOnErrorListener(new OnErrorListener() {                

                public boolean onError(MediaPlayer mp, int what, int extra) {
                        // TODO notify error to user or play next song
                        return true;
                }
        });
        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {                       

                public void onCompletion(MediaPlayer mp) {
                        // TODO Notify to user the completion of song or play next song
                }
        });

曲を開始して再生するには、次のようにする必要があります。

try{
    mediaPlayer.setDataSource(mSongUrl);
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.prepare(); 
} catch (Exception e) {
    e.printStackTrace();
} 
// Starting media player
mediaPlayer.start();
于 2012-04-21T12:04:00.137 に答える
0

非アクティビティクラスのコンストラクターにコンテキスト参照を渡してみませんか。そしてそこからそれを保存し、それを必要な場所に渡します。

コンテキスト参照は、使用後にライブのままにならないようにしてください。そうしないと、メモリの問題が発生します。

于 2012-04-21T11:56:02.260 に答える