MediaPlayer kann keine Audiodateien aus dem Programmdatenordner wiedergeben?

8

Wenn ich mein Audio vom MIC aufnehme und die Datei unter / data / data / ..... speichere, warum MediaPlayer kann diese Datei nicht abspielen? Wenn ich das Ziel nach / ändere SDcard / ..... - alles funktioniert super. Ich mache etwas falsch ? Ich habe nicht gefunden Einschränkung für MediaPlayer. Gerät - Samsung T959 (Galaxy S) Danke, ich hoffe, jemand weiß Lösung ....

    
dmtrlbdv 22.09.2010, 20:17
quelle

5 Antworten

8

Ich hatte die gleichen Probleme ... wenn ich setDataSource mit Dateipfaden verwendete, würde es nicht funktionieren; habe immer IOException bekommen.

das Ändern meines Codes, um setDataSource (FileDescriptor) zu verwenden, funktioniert ... und damit muss ich die Dateien nicht auf SDCard oder ähnliches kopieren.

Erstellen Sie also mit einem einfachen File-Objekt einen neuen FileInputStream und übergeben Sie den eigentlichen Dateideskriptor als Datenquelle wie in:

%Vor%

Beim Erstellen eines Eingabestroms werden die Dateidaten in den Speicher gezogen und dadurch Adressen / Daten / Datenzugriffsverletzungen.

    
Sheshadri Mantha 20.01.2011 00:32
quelle
3

Besser ist es, den Stream wie folgt zu schließen:

%Vor%

Es ist in der Dokumentation der Methode vermerkt:

android.media.MediaPlayer.setDataSource(FileDescriptor fd)

  

Legt die zu verwendende Datenquelle ( FileDescriptor ) fest. Es ist der Anrufer   Verantwortung, den Dateideskriptor zu schließen . Es ist sicher, dies zu tun als   sobald dieser Anruf zurückkehrt .

    
KitKat 29.09.2013 18:09
quelle
1

Verwenden Sie MediaPlayer.setDataSource (FileDescriptor fd)

    
n_j 23.09.2010 09:45
quelle
0

Versuchen Sie, ContentValues ​​festzulegen und einige Standard-Metadateneigenschaften zu speichern. Verwenden Sie dann einen ContentResolver, um die Metadaten und Uri auf die Datei zu setzen.

siehe: Ссылка

"Beispiel: Audioaufnahme Setup und Start", dann ändern Sie Uri base zu Ihrem / data / data / -Dateiname.

    
MatteKarla 22.09.2010 20:43
quelle
0

Aufgrund des Android-Sicherheitsmodells haben MediaPlayer nicht genügend Rechte. Es kann auf die SD-Karte zugreifen, aber es kann nicht auf andere Orte mit fehlenden Berechtigungen zugreifen.

Damit kann setDataSource (...) SecurityException auslösen und ich denke, dass es passiert.

Sie können diese Datei auf die folgende Art abspielen:

  • kopiere es in den temporären Ordner und spiele;
  • kopiere es in den temporären Ordner und spiele;
  • kopiere es auf sdcard;
  • lese es vollständig in den Speicher und versuche es per Stream.
dive 23.09.2010 08:47
quelle

Tags und Links