Android MediaPlayer echec de la préparation: statut = 0x1
Je suis en train de construire un enregistreur audio qui a besoin de lire le son enregistré. Je suis en cours d'exécution dans beaucoup de difficulté à la lecture de l'audio. Je sais que le fichier existe parce que je l'ai isolé dans un dossier sur ma Carte SD, mais pour quelque raison il ne peut pas le lire.
Voici mon code:
public class RecorderEditActivity extends SherlockActivity implements
DatabaseHelper.MetadataListener {
private long position;
private Button playButton = null;
private TextView date = null;
private EditText title = null;
private EditText notes = null;
private Button saveButton = null;
private MediaPlayer mediaPlayer = null;
private boolean isPlaying = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_item);
position = getIntent().getExtras().getLong(DatabaseHelper.KEY_ROWID);
playButton = (Button) findViewById(R.id.play);
date = (TextView) findViewById(R.id.recording_date);
title = (EditText) findViewById(R.id.edit_title);
notes = (EditText) findViewById(R.id.edit_notes);
saveButton = (Button) findViewById(R.id.save_edit_button);
mediaPlayer = new MediaPlayer();
DatabaseHelper.getInstance(getApplicationContext()).getMetadataAsync(
position, this);
playButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!isPlaying) {
playButton.setText(R.string.stop_text);
try {
mediaPlayer = new MediaPlayer();
mediaPlayer
.setDataSource("sdcard/test/"
+ date.toString() + ".3gp");
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
}
});
} catch (Exception e) {
Log.e(e.getClass().getName(), e.getMessage(), e);
}
} else {
playButton.setText(R.string.play_text);
mediaPlayer.release();
}
isPlaying = !isPlaying;
}
});
Voici les erreurs de LogCat:
03-20 00:33:40.963: E/MediaPlayer(21268): error (1, -2147483648)
03-20 00:33:40.963: E/java.io.IOException(21268): Prepare failed.: status=0x1
03-20 00:33:40.963: E/java.io.IOException(21268): java.io.IOException: Prepare failed.: status=0x1
03-20 00:33:40.963: E/java.io.IOException(21268): at android.media.MediaPlayer.prepare(Native Method)
03-20 00:33:40.963: E/java.io.IOException(21268): at com.packagename.soundrecorder.RecorderEditActivity$1.onClick(RecorderEditActivity.java:56)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.view.View.performClick(View.java:4204)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.view.View$PerformClick.run(View.java:17355)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Handler.handleCallback(Handler.java:725)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Handler.dispatchMessage(Handler.java:92)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.os.Looper.loop(Looper.java:137)
03-20 00:33:40.963: E/java.io.IOException(21268): at android.app.ActivityThread.main(ActivityThread.java:5041)
03-20 00:33:40.963: E/java.io.IOException(21268): at java.lang.reflect.Method.invokeNative(Native Method)
03-20 00:33:40.963: E/java.io.IOException(21268): at java.lang.reflect.Method.invoke(Method.java:511)
03-20 00:33:40.963: E/java.io.IOException(21268): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-20 00:33:40.963: E/java.io.IOException(21268): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-20 00:33:40.963: E/java.io.IOException(21268): at dalvik.system.NativeStart.main(Native Method)
J'espère que quelqu'un peut m'aider à interpréter et résoudre ce problème. J'ai fait une tonne de recherches et de rien, je ne les aide.
Merci 🙂
Dans votre code
veuillez envoyer le fichier que vous essayez de jouer
avez-vous des <uses-permission android:name="android.la permission.READ_EXTERNAL_STORAGE"/> dans votre fichier de manifeste?
mediaPlayer
objet est créé deux fois une fois en dehors de la boucle, puis dans onClick
fonction. Avez-vous essayé de supprimer les mediaPlayer
objet avant de le getInstance
appel?veuillez envoyer le fichier que vous essayez de jouer
avez-vous des <uses-permission android:name="android.la permission.READ_EXTERNAL_STORAGE"/> dans votre fichier de manifeste?
OriginalL'auteur jkatz94 | 2013-03-19
Vous devez vous connecter pour publier un commentaire.
J'ai tout compris:
Les erreurs stupides comme d'habitude.
J'ai oublié d'ajouter la lecture de la mémoire externe de l'autorisation, et j'ai Vassili à remercier pour cela résoudre en raison de votre commentaire ci-dessus.
L'autre chose c'est que je n'ai pas d'appel getText() sur ma date TextView de sorte qu'il n'a pas de définir correctement le nom de fichier.
OriginalL'auteur jkatz94
Je pense que vous êtes confronté à la question en raison d'un mauvais
DataSource
mis à votreMediaPlayer
. Pouvez-vous s'il vous plaît essayez de votresetDataSource
avec la modification suivanteJe pense qu'avec ce changement, votre code doit fonctionner correctement
EDIT: Veuillez consulter ce post MediaPlayer Préparation Échoué pour plus de détails sur la raison derrière la préfixation
file://
à votre nom de fichier.OriginalL'auteur Ganesh
J'espère code suivant vous aidera à:
OriginalL'auteur Ulug'bek Ro'zimboyev