У меня есть служба с MediaPlayer внутри и активность с кнопкой воспроизведения/паузы. Когда я нажимаю на кнопку, я называю StartService, но вместо того, чтобы играть музыку я ловлю ошибку:Ошибка MediaPlayer -38, 0 в службе android
09-01 19:10:10.216 15652-15652/com.itis.playerbuttontest E/MediaPlayer﹕ start called in state 4
09-01 19:10:10.216 15652-15652/com.itis.playerbuttontest E/MediaPlayer﹕ error (-38, 0)
09-01 19:10:10.230 15652-15652/com.itis.playerbuttontest E/MediaPlayer﹕ Error (-38,0)
Существует мой код услуги
public class AudioService extends Service implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener {
private MediaPlayer mPlayer;
public static final String URL = "https://cs1-43v4.vk-cdn.net/p7/ad8c4f11cc535b.mp3?extra=CHu-724p52zJOrv5ebIhtHeN1rtSvD21LMlBmqODVgmB1zag_CkzocrdSxWpkweYMG_9cRgM_7z_izqbLsXzIX7KJ8EfuD-d";
private void releaseMp() {
if (mPlayer != null) {
mPlayer.release();
}
mPlayer = null;
}
@Override
public void onCreate() {
super.onCreate();
try {
mPlayer = new MediaPlayer();
mPlayer.setDataSource(URL);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.setOnPreparedListener(this);
mPlayer.prepareAsync();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onDestroy() {
super.onDestroy();
releaseMp();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (intent.getAction().equals("PLAY") && !mPlayer.isPlaying()) {
mPlayer.start();
} else {
mPlayer.pause();
}
return START_STICKY;
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
stopSelf();
}
}
И есть код активность:
public class MainActivity extends AppCompatActivity {
boolean playing = false;
private MorphButton button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (MorphButton) findViewById(R.id.playPauseBtn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, AudioService.class);
i.setAction(playing ? "PAUSE" : "PLAY");
playing = !playing;
startService(i);
}
});
}
@Override
protected void onDestroy() {
super.onDestroy();
stopService(new Intent(this, AudioService.class));
}
}
Итак, что там не так?
Я решил эту проблему. Был неправильный URL. Но теперь у меня другая проблема. Когда я запускаю приложение на Android 4+, все в порядке, но когда я пытаюсь нажать кнопку на Android 2.3, медиаплеер не запускается. Я смотрел logcat и видел, что метод onPrepare не звонит? И я поймаю Почему? –
Также я ломаю ошибку (1, -2147483648). –