Fondamentalement, j'ai mon activité principale qui, par une intention, appelle une autre activité qui a un bouton qui devrait jouer un son.Android MediaPlayer erreur avec intention et le bouton
Cela dit, dans la deuxième activité j'ai cette méthode:
public void start_sound(View v) {
String url = /*"MY_URL"*/;
try {
if (mp != null)
{
mp.stop();
mp.release();
mp = null;
}
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(url);
mp.prepare();
mp.start();
} catch (Exception e) {}
}
mp
est une variable globale (donc je peux vérifier chaque fois en cours de lecture ou est nulle).
Ce qui se passe quand je clique sur le bouton:
E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb40d7400
W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=676.58203, y[0]=318.10547, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=866058, downTime=860523, deviceId=0, source=0x1002 }
W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=676.58203, y[0]=318.10547, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=866058, downTime=860523, deviceId=0, source=0x1002 }
W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=676.58203, y[0]=318.10547, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=866058, downTime=860523, deviceId=0, source=0x1002 }
W/ViewRootImpl: Cancelling event due to no window focus: MotionEvent { action=ACTION_CANCEL, actionButton=0, id[0]=0, x[0]=676.58203, y[0]=318.10547, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=866058, downTime=860523, deviceId=0, source=0x1002 }
E/MediaPlayer: error (1, -2147483648)
I/Choreographer: Skipped 1806 frames! The application may be doing too much work on its main thread.
Le premier arrive quand je change de l'activité avec l'intention; les autres, quand j'appuie sur le bouton pour les sons.
J'ai déjà la permission dans le manifeste.
EDIT: Ceci est la classe complète:
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
public class activity_2 extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity_2);
}
public void start_sound(View v) {
String url = "<MY_URL>";
MediaPlayer mp = new MediaPlayer();
try {
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.setDataSource(url);
mp.setOnPreparedListener(this);
mp.prepare();
mp.start();
} catch (Exception ignored) {
}
}
}
Changé, maintenant il me donne 'E/MediaPlayer: arrêt appelé à l'état 0 E/MediaPlayer: erreur (-38,0) E/MediaPlayer: arrêt appelé à l'état 4 E/MediaPlayer: erreur (- 38,0) W/MediaPlayer: mediaplayer est parti avec des événements non gérés E/MediaPlayer: erreur (-38,0) E/MediaPlayer: erreur (1, -214 7483648) ' –
Quelle est l'erreur? –
Vérifiez la réponse éditée –