2016-08-01 15 views
0

Warum wirft dieser Code eine IllegalArgumentException? Ich möchte den Titel einer MP3-Datei zeigen, dieDen Titel einer MP3 erhalten wirft "java.lang.IllegalArgumentException"

im „raw“ Ordner befinden,
mediaPlayer = MediaPlayer.create(getActivity(), R.raw.willy_william_ego); 
      MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
      Uri uri = (Uri) Uri.fromFile(new File("android.resource://com.hthl.kellergassen_app/raw/willy_william_ego")); 
      mmr.setDataSource(getActivity(), uri); 
      String title = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 
+1

Stacktrace, bitte. – Fildor

+0

Was ist ** willy_william_ego **? Was noch wichtiger ist, warum gibt es keinen **. Mp3 ** Link in Ihrem Code? –

+0

was meinst du mit Stacktrace? @Fildor – Goetti

Antwort

1

Sie bekommen das Problem in setDataSource Unter der Annahme, es werde sein, weil der URI Sie vorbei in ist aus irgendeinem Grund nicht gültig - wahrscheinlich weil die Datei nicht gefunden wurde. Sind Sie sicher, dass es mit diesem Namen vorhanden ist und keine Dateierweiterung hat?

Vom Javadoc ...

Leere setDataSource (Context Kontext, Uri uri)

Legt die Datenquelle als Inhalt Uri. Rufen Sie diese Methode vor den anderen Methoden in dieser Klasse auf. Diese Methode kann zeitaufwendig sein.

Parameter Kontext Kontext: der Kontext zu verwenden, wenn die uri Uri Uri Lösung: Der Inhalt URI der Daten, die Sie

Wirft Illegal spielen wollen, wenn die Uri ist ungültig SecurityException, wenn der Uri aufgrund fehlender Berechtigungen nicht verwendet werden kann.

UPDATE - Nachdem Sie Ihren Code angesehen haben, scheint es, dass Sie den hartcodierten String com.hthl.kellergassen_app als Paketnamen verwenden, aber das stimmt nicht. Nach dem Stacktrace ist es com.htlhl.kellergassen_app - beachten Sie die zusätzlichen "l" in "htlhl" (das ist in der Zeichenfolge, die Sie verwenden, um den URI zu erstellen).

+0

danke für die antwort ... die uri muss gültig sein, da ich mit meinem mediaplayer die richtige datei abspielen kann ich starte den mediaplayer so: uri = Uri.parse ("android.resource: //" + getActivity(). getPackageName() + "/ raw/ger_station_01"); mediaPlayer = MediaPlayer.create (getActivity(), uri); und dann sollte setDateSource (uri) ungültig sein? Ich glaube nicht ... – Goetti

+0

Endgültige Antwort - Sehen Sie sich den Code für MediaMetadataRetriever an und Sie können sehen, dass das die Ursache für die IllegalArgumentException ist. Ob Sie zustimmen oder nicht, das ist was passiert! :) –

+0

Es sieht aus als ob Sie den Namen falsch haben. Sehen Sie das Update in meiner bearbeiteten Antwort. –

Verwandte Themen