** У меня есть этот код, чтобы сделать песню go в l oop. В одном действии я сохраняю следующий необработанный идентификатор файла и вызываю метод из второго действия.
Это для первого действия. **
int_proximacord = res.getIdentifier(str_proximacord, "raw", getPackageName());
SharedPreferences proximacord = getSharedPreferences("Next_chord", MODE_PRIVATE);
SharedPreferences.Editor editor = proximacord.edit();
editor.putString("Next_chord", str_proximacord);
editor.apply();
MyMediaPlayer.getMediaPlayerInstance().play_Coach(getApplicationContext());
Затем во втором действии у меня есть проблема в строке:
mediaPlayer.setNextMediaPlayer (mNextPlayer);
Это дает мне эту ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.tms, PID: 19165
java.lang.IllegalStateException: This player not initialized
at android.media.MediaPlayer.setNextMediaPlayer(Native Method)
at com.example.tms.MyMediaPlayer.createNextMediaPlayer(MyMediaPlayer.java:102)
at com.example.tms.MyMediaPlayer$4.onCompletion(MyMediaPlayer.java:117)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3381)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
Я думаю, что инициализирую так же, как я инициализировал первый медиаплеер. Я проверил с помощью system.out все переменные, и все они одинаковы.
static MyMediaPlayer getMediaPlayerInstance() {
if (Instance == null) {
return Instance = new MyMediaPlayer();
}
return Instance;
}
public void play_Coach(Context context) {
this.context = context;
System.out.println("play_Coach: context " + context);
System.out.println("play_Coach: this.context " + this.context);
SharedPreferences proximacord = context.getSharedPreferences("Next_chord", MODE_PRIVATE);
str_proximacord = proximacord.getString("Next_chord", "");
System.out.println("play_Coach: str_proximacord " + str_proximacord);
Resources res = context.getResources();
int_proximacord = res.getIdentifier(str_proximacord, "raw", context.getPackageName());
System.out.println("play_Coach: int_proximacord " + int_proximacord);
mediaPlayer = MediaPlayer.create(context, int_proximacord);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
mp.setOnCompletionListener(onCompletionListener);
}
});
}
public void createNextMediaPlayer(Context context, int int_proximacord) {
System.out.println("createNextMediaPlayer: int_proximacord " + int_proximacord);
System.out.println("createNextMediaPlayer: context " + context);
mNextPlayer = MediaPlayer.create(context, int_proximacord);
mediaPlayer.setNextMediaPlayer(mNextPlayer);
mediaPlayer.setOnCompletionListener(onCompletionListener);
}
private MediaPlayer.OnCompletionListener onCompletionListener = new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mediaPlayer) {
mediaPlayer.release();
System.out.println("onCompletion: context " + context);
System.out.println("onCompletion: int_proximacord " + int_proximacord);
createNextMediaPlayer(context, int_proximacord);
}
};