/*
* Copyright 2016 Substance Mobile
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.animbus.music.media.objects;
import android.net.Uri;
import android.support.v4.media.session.MediaSessionCompat.QueueItem;
import com.animbus.music.media.Library;
import com.animbus.music.util.GEMUtil;
import static android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
import static android.support.v4.media.MediaMetadataCompat.METADATA_KEY_ARTIST;
import static android.support.v4.media.MediaMetadataCompat.METADATA_KEY_DURATION;
import static android.support.v4.media.MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER;
/**
* Wrapper around a MediaMetadataCompat optimised for Song metadata
*/
public class Song extends MediaObject {
public long ID, albumID;
///////////////////////////////////////////////////////////////////////////
// Uri
///////////////////////////////////////////////////////////////////////////
@Override
protected Uri getBaseUri() {
return EXTERNAL_CONTENT_URI;
}
///////////////////////////////////////////////////////////////////////////
// Artist
///////////////////////////////////////////////////////////////////////////
public String getSongArtist() {
return data.getString(METADATA_KEY_ARTIST);
}
public Song setSongArtist(String songArtist) {
putString(METADATA_KEY_ARTIST, songArtist);
return this;
}
///////////////////////////////////////////////////////////////////////////
// Song Duration
///////////////////////////////////////////////////////////////////////////
public long getSongDuration() {
return data.getLong(METADATA_KEY_DURATION);
}
public Song setSongDuration(long songDuration) {
putLong(METADATA_KEY_DURATION, songDuration);
return this;
}
public String getSongDurString() {
return GEMUtil.stringForTime(getSongDuration());
}
///////////////////////////////////////////////////////////////////////////
// Track Number
///////////////////////////////////////////////////////////////////////////
public String getTrackNumberString() {
long track = data.getLong(METADATA_KEY_TRACK_NUMBER);
return track != 0 ? String.valueOf(track) : "-";
}
public Song setTrackNumber(long trackNumber) {
putLong(METADATA_KEY_TRACK_NUMBER, trackNumber);
return this;
}
///////////////////////////////////////////////////////////////////////////
// Album
///////////////////////////////////////////////////////////////////////////
public long getAlbumID() {
return albumID;
}
public Song setAlbumID(long albumID) {
this.albumID = albumID;
return this;
}
public Album getAlbum() {
return Library.findAlbumById(getAlbumID());
}
///////////////////////////////////////////////////////////////////////////
// Misc
///////////////////////////////////////////////////////////////////////////
public QueueItem toQueueItem() {
return new QueueItem(data.getDescription(), getID());
}
@Deprecated
public static Song parse() {
//Do nothing. This method will be removed soon
return new Song();
}
}