//
// Copyright (c) 2014 VK.com
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of
// this software and associated documentation files (the "Software"), to deal in
// the Software without restriction, including without limitation the rights to
// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
// the Software, and to permit persons to whom the Software is furnished to do so,
// subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
/**
* Audio.java
* vk-android-sdk
*
* Created by Babichev Vitaly on 19.01.14.
* Copyright (c) 2014 VK. All rights reserved.
*/
package com.vk.sdk.api.model;
import android.os.Parcel;
import android.text.TextUtils;
import org.json.JSONObject;
import static com.vk.sdk.api.model.VKAttachments.TYPE_AUDIO;
import static com.vk.sdk.api.model.VKAttachments.VKApiAttachment;
/**
* An audio object describes an audio file and contains the following fields.
*/
@SuppressWarnings("unused")
public class VKApiAudio extends VKApiAttachment implements Identifiable, android.os.Parcelable {
/**
* Audio ID.
*/
public int id;
/**
* Audio owner ID.
*/
public int owner_id;
/**
* Artist name.
*/
public String artist;
/**
* Audio file title.
*/
public String title;
/**
* Duration (in seconds).
*/
public int duration;
/**
* Link to mp3.
*/
public String url;
/**
* ID of the lyrics (if available) of the audio file.
*/
public int lyrics_id;
/**
* ID of the album containing the audio file (if assigned).
*/
public int album_id;
/**
* Genre ID. See the list of audio genres.
*/
public int genre;
/**
* An access key using for get information about hidden objects.
*/
public String access_key;
public VKApiAudio(JSONObject from) {
parse(from);
}
/**
* Fills an Audio instance from JSONObject.
*/
public VKApiAudio parse(JSONObject from) {
id = from.optInt("id");
owner_id = from.optInt("owner_id");
artist = from.optString("artist");
title = from.optString("title");
duration = from.optInt("duration");
url = from.optString("url");
lyrics_id = from.optInt("lyrics_id");
album_id = from.optInt("album_id");
genre = from.optInt("genre_id");
access_key = from.optString("access_key");
return this;
}
/**
* Creates an Audio instance from Parcel.
*/
public VKApiAudio(Parcel in) {
this.id = in.readInt();
this.owner_id = in.readInt();
this.artist = in.readString();
this.title = in.readString();
this.duration = in.readInt();
this.url = in.readString();
this.lyrics_id = in.readInt();
this.album_id = in.readInt();
this.genre = in.readInt();
this.access_key = in.readString();
}
/**
* Creates empty Audio instance.
*/
public VKApiAudio() {
}
@Override
public int getId() {
return id;
}
@Override
public CharSequence toAttachmentString() {
StringBuilder result = new StringBuilder(TYPE_AUDIO).append(owner_id).append('_').append(id);
if(!TextUtils.isEmpty(access_key)) {
result.append('_');
result.append(access_key);
}
return result;
}
@Override
public String getType() {
return TYPE_AUDIO;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(this.id);
dest.writeInt(this.owner_id);
dest.writeString(this.artist);
dest.writeString(this.title);
dest.writeInt(this.duration);
dest.writeString(this.url);
dest.writeInt(this.lyrics_id);
dest.writeInt(this.album_id);
dest.writeInt(this.genre);
dest.writeString(this.access_key);
}
public static Creator<VKApiAudio> CREATOR = new Creator<VKApiAudio>() {
public VKApiAudio createFromParcel(Parcel source) {
return new VKApiAudio(source);
}
public VKApiAudio[] newArray(int size) {
return new VKApiAudio[size];
}
};
/**
* Audio object genres.
*/
public final static class Genre {
private Genre() {}
public final static int ROCK = 1;
public final static int POP = 2;
public final static int RAP_AND_HIPHOP = 3;
public final static int EASY_LISTENING = 4;
public final static int DANCE_AND_HOUSE = 5;
public final static int INSTRUMENTAL = 6;
public final static int METAL = 7;
public final static int DUBSTEP = 8;
public final static int JAZZ_AND_BLUES = 9;
public final static int DRUM_AND_BASS = 10;
public final static int TRANCE = 11;
public final static int CHANSON = 12;
public final static int ETHNIC = 13;
public final static int ACOUSTIC_AND_VOCAL = 14;
public final static int REGGAE = 15;
public final static int CLASSICAL = 16;
public final static int INDIE_POP = 17;
public final static int OTHER = 18;
public final static int SPEECH = 19;
public final static int ALTERNATIVE = 21;
public final static int ELECTROPOP_AND_DISCO = 22;
}
}