2016-10-29 2 views
0

Ich verwende MusicBobber Bibliothek in meinem Projekt. Es gibt kein Wiki zum Einstellen der Audio-URI von sdcard oder raw.So legen Sie Musikdatei in MusicBobber-Bibliothek

Ich weiß, in android mediaplayer Sie Musikdatei auf diese Weise einstellen:

MediaPlayer mediaPlayer= MediaPlayer.create(this, R.raw.song); 

aber keine Ahnung von dieser spezifischen Bibliothek. Gibt es jemanden, der mit dieser Bibliothek gearbeitet hat? Wie kann ich sagen, dass ich ein Lied spielen soll?

+0

retrive das Lied von der mobilen und dann verwenden Sie es als Array –

+0

können Sie mir einen Beispielcode zeigen? @NeelaySrivastava –

Antwort

1

Hier ist eine Probe des Erhalten Songs im Hintergrund

class MusicLoader extends BaseAsyncTaskLoader<Collection<MusicItem>> { 

private final Uri albumArtUri = Uri.parse("content://media/external/audio/albumart"); 

public MusicLoader(Context context) { 
    super(context); 
} 

@Override 
public Collection<MusicItem> loadInBackground() { 
    String[] projection = new String[]{ 
      MediaStore.Audio.Media.TITLE, 
      MediaStore.Audio.Media.ALBUM, 
      MediaStore.Audio.Media.ALBUM_ID, 
      MediaStore.Audio.Media.ARTIST, 
      MediaStore.Audio.Media.DURATION, 
      MediaStore.Audio.Media.DATA, 
    }; 
    Cursor cursor = getContext().getContentResolver().query(
      MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
      projection, 
      MediaStore.Audio.Media.IS_MUSIC + "=1", 
      null, 
      "LOWER(" + MediaStore.Audio.Media.ARTIST + ") ASC, " + 
        "LOWER(" + MediaStore.Audio.Media.ALBUM + ") ASC, " + 
        "LOWER(" + MediaStore.Audio.Media.TITLE + ") ASC" 
    ); 
    if (cursor == null) { 
     return Collections.emptyList(); 
    } 
    List<MusicItem> items = new ArrayList<>(); 
    try { 
     if (cursor.moveToFirst()) { 
      int title = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE); 
      int album = cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM); 
      int artist = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST); 
      int duration = cursor.getColumnIndex(MediaStore.Audio.Media.DURATION); 
      int albumId = cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID); 
      int data = cursor.getColumnIndex(MediaStore.Audio.Media.DATA); 
      do { 
       MusicItem item = new MusicItem() 
         .title(cursor.getString(title)) 
         .album(cursor.getString(album)) 
         .artist(cursor.getString(artist)) 
         .duration(cursor.getLong(duration)) 
         .albumArtUri(ContentUris.withAppendedId(albumArtUri, cursor.getLong(albumId))) 
         .fileUri(Uri.parse(cursor.getString(data))) 
         ; 
       items.add(item); 
      } while (cursor.moveToNext()); 
     } 
    } finally { 
     cursor.close(); 
    } 
    return items; 
} 
} 

Und das ist, wie Sie

class MusicItem implements Parcelable { 
private String title; 
private String album; 
private String artist; 
private long duration; 
private Uri albumArtUri; 
private Uri fileUri; 

public MusicItem title(String title) { 
    this.title = title; 
    return this; 
} 

public MusicItem album(String album) { 
    this.album = album; 
    return this; 
} 

public MusicItem artist(String artist) { 
    this.artist = artist; 
    return this; 
} 

public MusicItem duration(long duration) { 
    this.duration = duration; 
    return this; 
} 

public MusicItem albumArtUri(Uri albumArtUri) { 
    this.albumArtUri = albumArtUri; 
    return this; 
} 

public MusicItem fileUri(Uri fileUri) { 
    this.fileUri = fileUri; 
    return this; 
} 

public String title() { 
    return title; 
} 

public String album() { 
    return album; 
} 

public String artist() { 
    return artist; 
} 

public long duration() { 
    return duration; 
} 

public Uri albumArtUri() { 
    return albumArtUri; 
} 

public Uri fileUri() { 
    return fileUri; 
} 

@Override 
public boolean equals(Object o) { 
    if (this == o) return true; 
    if (o == null || getClass() != o.getClass()) return false; 

    MusicItem item = (MusicItem) o; 

    if (duration != item.duration) return false; 
    if (title != null ? !title.equals(item.title) : item.title != null) return false; 
    if (album != null ? !album.equals(item.album) : item.album != null) return false; 
    if (artist != null ? !artist.equals(item.artist) : item.artist != null) return false; 
    if (albumArtUri != null ? !albumArtUri.equals(item.albumArtUri) : item.albumArtUri != null) 
     return false; 
    return fileUri != null ? fileUri.equals(item.fileUri) : item.fileUri == null; 

} 

@Override 
public int hashCode() { 
    int result = title != null ? title.hashCode() : 0; 
    result = 31 * result + (album != null ? album.hashCode() : 0); 
    result = 31 * result + (artist != null ? artist.hashCode() : 0); 
    result = 31 * result + (int) (duration^(duration >>> 32)); 
    result = 31 * result + (albumArtUri != null ? albumArtUri.hashCode() : 0); 
    result = 31 * result + (fileUri != null ? fileUri.hashCode() : 0); 
    return result; 
} 

@Override 
public String toString() { 
    return "MusicItem{" + 
      "title='" + title + '\'' + 
      ", album='" + album + '\'' + 
      ", artist='" + artist + '\'' + 
      ", duration=" + duration + 
      ", albumArtUri=" + albumArtUri + 
      ", fileUri=" + fileUri + 
      '}'; 
} 


@Override 
public int describeContents() { 
    return 0; 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeString(this.title); 
    dest.writeString(this.album); 
    dest.writeString(this.artist); 
    dest.writeLong(this.duration); 
    dest.writeParcelable(this.albumArtUri, 0); 
    dest.writeParcelable(this.fileUri, 0); 
} 

public MusicItem() { 
} 

protected MusicItem(Parcel in) { 
    this.title = in.readString(); 
    this.album = in.readString(); 
    this.artist = in.readString(); 
    this.duration = in.readLong(); 
    this.albumArtUri = in.readParcelable(Uri.class.getClassLoader()); 
    this.fileUri = in.readParcelable(Uri.class.getClassLoader()); 
} 

public static final Creator<MusicItem> CREATOR = new Creator<MusicItem>() { 
    public MusicItem createFromParcel(Parcel source) { 
     return new MusicItem(source); 
    } 

    public MusicItem[] newArray(int size) { 
     return new MusicItem[size]; 
    } 
}; 
} 

das Arraylist-Objekt verwenden, können Sie einen Getter und Setter machen können, wenn Sie nicht wollen, zu Übergeben Sie die Array-Liste.

Verwandte Themen