hallo block,
danke für deine hilfe, leider hat es so auch nicht funktioniert. habe es dann mit getResources().getResourceEntryName(i) versucht und es ging. ![]()
leider hat sich aber nun ein anderes problem dadurch herausgepuppt, und zwar hatte ich ja erwähnt, das ich in meinem projekt auch auf die meta-daten des mp3-files zugreife, also sprich den interpreter, songtitel und eventuell auch songcover abfrage und dem display aufliste. vorher hatte ich nur ein einziges mp3-file im raw ordner um es generell zu testen ob die meta-daten abgerufen wurden. die methode sah so aus, was auch tadellos funktionierte:
private String loadMp3DataFile() {
String mp3_parameter;
String uriPath2 = "android.resource://" + getPackageName() + "/raw/music";
Uri uri = Uri.parse(uriPath);
// load data file
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(getApplication(), uri);
String artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
// String currentduration = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
byte[] songCover = metaRetriever.getEmbeddedPicture();
if(songCover != null) {
f2.cover.setImageBitmap(BitmapFactory.decodeByteArray(songCover, 0, songCover.length));
}
else {
f2.cover.setImageResource(com.example.swipeview3.R.drawable.gf_cover);
}
// close object
metaRetriever.release();
//return parameter
mp3_parameter = (artist + "\n" + title);
return mp3_parameter;
}
Alles anzeigen
jetzt habe ich ja mehrere mp3-files im raw verzeichnis die zufällig ausgewählt werden. habe die Methode von oben dann dementsprechend geändert in:
private String loadMp3DataFile(int i) {
String mp3_parameter;
String uriPath = "android.resource://" + getPackageName() + "/raw/" + getResources().getResourceEntryName(i);
Uri uri = Uri.parse(uriPath);
// load data file
MediaMetadataRetriever metaRetriever = new MediaMetadataRetriever();
metaRetriever.setDataSource(getApplication(), uri);
String artist = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
String title = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE);
// String currentduration = metaRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
byte[] songCover = metaRetriever.getEmbeddedPicture();
if(songCover != null) {
f2.cover.setImageBitmap(BitmapFactory.decodeByteArray(songCover, 0, songCover.length));
}
else {
f2.cover.setImageResource(com.example.swipeview3.R.drawable.gf_cover);
}
// close object
metaRetriever.release();
//return parameter
mp3_parameter = (artist + "\n" + title);
return mp3_parameter;
}
Alles anzeigen
so müsste es eigentlich funktionieren, aber ich bekomme bei mp3_parameter für artist und title stets null und cover ist die gf_cover. irgendwas scheint da mit der uri glaube ich nicht zu stimmen, obwohl ich es in der log ausgegeben und überprüft habe.
habe folgendes eingegeben:
String uriPath2 = "android.resource://" + getPackageName() + "/raw/music";
String uriPath = "android.resource://" + getPackageName() + "/raw/" + getResources().getResourceEntryName(i);
Log.e("Ausgabe", uriPath);
Log.e("Ausgabe", uriPath2);
ausgabe ist:
03-07 10:52:43.250: E/Ausgabe(28800): android.resource://com.example.swipeview3/raw/black_b
03-07 10:52:43.250: E/Ausgabe(28800): android.resource://com.example.swipeview3/raw/music
also die uri stimmt eigentlich, warum wird dann aber null ausgegeben? ![]()