0
私のsetOnPreparedListenerクラスでonPreparedメソッドが定義されていないことを示すintellijのエラーを取得しています。 onPreparedメソッドのドキュメントとコードが、定義されているものと一致していることを確認しました。
コード:MediaPlayerオブジェクトでのAndroid開発スタジオのエラー
import android.app.IntentService;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.net.Uri;
import android.util.Log;
import java.io.IOException;
/**
* Created by tim on 4/19/2017.
*
*/
public class TonePlayerIntentService extends IntentService implements MediaPlayer.OnErrorListener,
MediaPlayer.OnPreparedListener,
MediaPlayer.OnCompletionListener{
private static final String LOG_TAG = "actotracker " + TonePlayerIntentService.class.getSimpleName();
MediaPlayer mMediaPlayer = null;
Uri chime = null;
public TonePlayerIntentService() {
super(LOG_TAG);
}
/**
* called everytime an intent is launched
*/
@Override
public void onCreate() {
super.onCreate();
chime = Uri.parse("android.resource://"+getApplicationContext().getPackageName()+"//raw//chime.mp3");
}
/**
* Handles incoming intents.
* @param intent The Intent is provided (inside a PendingIntent) when requestActivityUpdates()
* is called.
*/
@Override
protected void onHandleIntent(Intent intent) {
Log.d(LOG_TAG,"IN onHandleIntent");
this.onStartCommand();
}
public int onStartCommand(){
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setLooping(false);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
try {
mMediaPlayer.setDataSource(getApplicationContext(), chime);
}catch (IOException ie){
DatabaseProcessor.getInstance().logErrorEvent(ie);
}
mMediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.start();
}
});
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener(){
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
cleanUpPlay();
return true;
}
});
mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
cleanUpPlay();
}
});
return 1;
}
public void cleanUpPlay(){
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
}
エラーメッセージがonPrepared(MediaPlayerの)はsetOnPreparedListenerクラスで定義しなければならないことを述べています。
私が間違ったことについての情報を感謝します。リクエストされた場合、より多くの情報を提供してください。
完全なコードで更新されました。
はmMediaPlayer.setOnPreparedListener(新しいOnPreparedListener(){;} onPrepared @Override 公共ボイド(MediaPlayerのMediaPlayerの){ mediaPlayer.start()})はなかったです。 mMediaPlayer.prepareAsync(); – Pauly
同じエラーが報告されました。おかげで、Lintは検査でエラーをピックアップしていません – Pauly
完全なエラーログを投稿できますか? MediaPlayerに間違ったインポートを使用している可能性がありますが、そうは思われません。 – Rockney