非アクティビティ クラスでAndroid を使用するMediaPlayer
と、常にコンテキスト エラーが発生します。バグのある行は次のとおりです。
MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);
サービスで「 」を使用できないことはわかってthis
いますが、試した他のすべてのものはバグを引き起こし続けました。
助言がありますか?
非アクティビティ クラスでAndroid を使用するMediaPlayer
と、常にコンテキスト エラーが発生します。バグのある行は次のとおりです。
MediaPlayer Shoot = MediaPlayer.create(this, R.raw.shot);
サービスで「 」を使用できないことはわかってthis
いますが、試した他のすべてのものはバグを引き起こし続けました。
助言がありますか?
過去 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();
非アクティビティクラスのコンストラクターにコンテキスト参照を渡してみませんか。そしてそこからそれを保存し、それを必要な場所に渡します。
コンテキスト参照は、使用後にライブのままにならないようにしてください。そうしないと、メモリの問題が発生します。