package com.glasstunes.cards;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.glasstunes.ControlsActivity;
import com.glasstunes.GlassTunesApp;
import com.glasstunes.R;
import com.glasstunes.screenslide.CardFragment;
import com.glasstunes.view.SliderView;
import com.woodblockwithoutco.remotemetadataprovider.media.RemoteMetadataProvider;
import com.woodblockwithoutco.remotemetadataprovider.media.enums.PlayState;
import com.woodblockwithoutco.remotemetadataprovider.media.listeners.OnArtworkChangeListener;
import com.woodblockwithoutco.remotemetadataprovider.media.listeners.OnMetadataChangeListener;
import com.woodblockwithoutco.remotemetadataprovider.media.listeners.OnPlaybackStateChangeListener;
public class NowPlayingCard extends CardFragment implements
OnArtworkChangeListener, OnMetadataChangeListener,
OnPlaybackStateChangeListener {
public static final NowPlayingCard newInstance() {
return new NowPlayingCard();
}
private RemoteMetadataProvider mMetadataProvider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMetadataProvider = RemoteMetadataProvider.getInstance(getActivity());
mMetadataProvider.setOnArtworkChangeListener(this);
mMetadataProvider.setOnMetadataChangeListener(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.musicplayer, container, false);
return v;
}
@Override
public void onStart() {
super.onStart();
mMetadataProvider.acquireRemoteControls();
((GlassTunesApp) getActivity().getApplication())
.addOnPlaybackStateChangedListener(this);
}
@Override
public void onStop() {
super.onStop();
mMetadataProvider.dropRemoteControls(false);
((GlassTunesApp) getActivity().getApplication())
.removeOnPlaybackStateChangedListener(this);
}
@Override
public void onSelect() {
startActivity(new Intent(getActivity(), ControlsActivity.class));
}
@Override
public void onArtworkChanged(Bitmap arg0) {
((ImageView) getView().findViewById(R.id.cover_image))
.setImageBitmap(arg0);
}
@Override
public void onMetadataChanged(String artist, String title, String album,
String albumArtist, long duration) {
((TextView) getView().findViewById(R.id.song_title)).setText(title);
((TextView) getView().findViewById(R.id.artist_name)).setText(artist);
}
@Override
public void onPlaybackStateChanged(PlayState playbackState) {
ImageView playStatus = (ImageView) getView().findViewById(
R.id.play_status);
SliderView progress = (SliderView) getView().findViewById(
R.id.progress_slider);
if (playbackState == PlayState.BUFFERING) {
progress.startIndeterminate();
} else {
progress.stopIndeterminate();
}
switch (playbackState) {
case PAUSED:
playStatus.setImageResource(R.drawable.ic_musicplayer_pause);
playStatus.setVisibility(View.VISIBLE);
break;
case PLAYING:
playStatus.setImageResource(R.drawable.ic_musicplayer_play);
playStatus.setVisibility(View.VISIBLE);
break;
case SKIPPING_BACKWARDS:
playStatus.setImageResource(R.drawable.ic_musicplayer_previous);
playStatus.setVisibility(View.VISIBLE);
break;
case SKIPPING_FORWARDS:
playStatus.setImageResource(R.drawable.ic_musicplayer_next);
playStatus.setVisibility(View.VISIBLE);
break;
default:
playStatus.setVisibility(View.INVISIBLE);
break;
}
}
}