package com.mercandalli.android.apps.files.shared; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; import org.json.JSONException; import org.json.JSONObject; public class SharedAudioData { private static final String TAG = "SharedAudioData"; private static final String WEAR_KEY_STATUS = "s"; private static final String WEAR_KEY_ACTION = "a"; private static final String WEAR_KEY_FILE = "f"; private static final String WEAR_KEY_FILE_ID = "id"; private static final String WEAR_KEY_FILE_TITLE = "ti"; private static final String WEAR_KEY_FILE_ALBUM = "al"; private static final String WEAR_KEY_FILE_ARTIST = "at"; private int mId; @Nullable private String mTitle; @Nullable private String mArtist; @Nullable private String mAlbum; @SharedAudioPlayerUtils.Status private int mStatus; @SharedAudioPlayerUtils.Action private int mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_UNKNOWN; public SharedAudioData(final String json) { try { final JSONObject jsonObject = new JSONObject(json); if (jsonObject.has(WEAR_KEY_STATUS)) { updateStatus(jsonObject.getInt(WEAR_KEY_STATUS)); } if (jsonObject.has(WEAR_KEY_ACTION)) { updateOrder(jsonObject.getInt(WEAR_KEY_ACTION)); } if (jsonObject.has(WEAR_KEY_FILE)) { JSONObject file = jsonObject.getJSONObject(WEAR_KEY_FILE); if (file.has(WEAR_KEY_FILE_ID)) { mId = file.getInt(WEAR_KEY_FILE_ID); } if (file.has(WEAR_KEY_FILE_TITLE)) { mTitle = file.getString(WEAR_KEY_FILE_TITLE); } if (file.has(WEAR_KEY_FILE_ARTIST)) { mArtist = file.getString(WEAR_KEY_FILE_ARTIST); } if (file.has(WEAR_KEY_FILE_ALBUM)) { mAlbum = file.getString(WEAR_KEY_FILE_ALBUM); } } } catch (JSONException e) { Log.e(TAG, "Failed to convert Json", e); } } public SharedAudioData(int id, String title, String artist, String album) { mId = id; mTitle = title; mArtist = artist; mAlbum = album; } public int getId() { return mId; } @Nullable public String getTitle() { return mTitle; } @Nullable public String getArtist() { return mArtist; } @Nullable public String getAlbum() { return mAlbum; } @SharedAudioPlayerUtils.Status public int getStatus() { return mStatus; } public void setStatus(@SharedAudioPlayerUtils.Status int status) { this.mStatus = status; } @SharedAudioPlayerUtils.Action public int getAction() { return mAction; } public void setAction(@SharedAudioPlayerUtils.Action int action) { mAction = action; } @SharedAudioPlayerUtils.Action public int getTogglePlayPauseOrder() { if (mStatus == SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PAUSED) { return SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PLAY; } else { return SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PAUSE; } } @NonNull public JSONObject toJson() { final JSONObject jsonObject = new JSONObject(); try { final JSONObject file = new JSONObject(); file.put(WEAR_KEY_FILE_ID, mId); file.put(WEAR_KEY_FILE_TITLE, mTitle); file.put(WEAR_KEY_FILE_ALBUM, mAlbum); file.put(WEAR_KEY_FILE_ARTIST, mArtist); jsonObject.put(WEAR_KEY_FILE, file); jsonObject.put(WEAR_KEY_STATUS, mStatus); jsonObject.put(WEAR_KEY_ACTION, mAction); } catch (JSONException e) { e.printStackTrace(); } return jsonObject; } private void updateStatus(int status) { switch (status) { case SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PAUSED: mStatus = SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PAUSED; break; case SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PLAYING: mStatus = SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PLAYING; break; case SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PREPARING: mStatus = SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_PREPARING; break; default: mStatus = SharedAudioPlayerUtils.AUDIO_PLAYER_STATUS_UNKNOWN; } } private void updateOrder(int order) { switch (order) { case SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_NEXT: mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_NEXT; break; case SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PAUSE: mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PAUSE; break; case SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PLAY: mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PLAY; break; case SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PREVIOUS: mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_PREVIOUS; break; default: mAction = SharedAudioPlayerUtils.AUDIO_PLAYER_ACTION_UNKNOWN; } } }