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?