package com.ideabag.playtunes.fragment.xlarge; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.ideabag.playtunes.R; import com.ideabag.playtunes.activity.MainActivity; import com.ideabag.playtunes.database.MediaQuery; import com.ideabag.playtunes.fragment.TrackProgressFragment; import com.ideabag.playtunes.media.PlaylistMediaPlayer; import com.ideabag.playtunes.media.PlaylistMediaPlayer.PlaybackListener; import com.ideabag.playtunes.util.GAEvent.AudioControls; import com.ideabag.playtunes.util.GAEvent.Categories; import com.ideabag.playtunes.util.GAEvent.FooterControls; import com.ideabag.playtunes.util.GAEvent.Playlist; import com.ideabag.playtunes.util.AsyncDrawable; import com.ideabag.playtunes.util.BitmapWorkerTask; import com.ideabag.playtunes.util.TrackerSingleton; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.ToggleButton; public class LargeFooterControlsFragment extends Fragment { public static final String TAG = "Large Footer Controls"; private MainActivity mActivity; private Tracker mTracker; private String lastAlbumUri = null; private String current_media_id; private boolean isPlaying = false; //private boolean isShowing = false; // // Views from fragment_footer_controls.xml // //private ImageButton mPlayPauseButton; //private ImageView mAlbumCover; //private TextView mTitle, mArtist; private ImageButton mPrevButton; private ImageButton mNextButton; private ImageButton mPlayPauseButton; private ImageButton mRepeatButton; private ImageButton mShuffleButton; private TrackProgressFragment mProgressFragment; @Override public void onAttach( Activity activity ) { super.onAttach( activity ); mActivity = ( MainActivity ) activity; mTracker = TrackerSingleton.getDefaultTracker( mActivity ); } @SuppressLint("NewApi") @Override public void onActivityCreated( Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); mNextButton = ( ImageButton ) getView().findViewById( R.id.NowPlayingNextButton ); mPlayPauseButton = ( ImageButton ) getView().findViewById( R.id.NowPlayingPlayPauseButton ); mPrevButton = ( ImageButton ) getView().findViewById( R.id.NowPlayingPrevButton ); mRepeatButton = ( ImageButton ) getView().findViewById( R.id.NowPlayingRepeatButton ); mShuffleButton = ( ImageButton ) getView().findViewById( R.id.NowPlayingShuffleButton ); mNextButton.setOnClickListener( controlsClickListener ); mPlayPauseButton.setOnClickListener( controlsClickListener ); mPrevButton.setOnClickListener( controlsClickListener ); mRepeatButton.setOnClickListener( controlsClickListener ); mShuffleButton.setOnClickListener( controlsClickListener ); } @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) { return inflater.inflate( R.layout.fragment_footer_controls, container, false ); } @Override public void onResume() { super.onResume(); if ( mProgressFragment == null ) { android.util.Log.i( TAG, "ProgressFragment is null"); mProgressFragment = ( TrackProgressFragment ) getChildFragmentManager().findFragmentById( R.id.TrackProgressFragment ); } mActivity.addPlaybackListener( PlaybackListener ); } @Override public void onPause() { super.onPause(); mActivity.removePlaybackListener( PlaybackListener ); } @Override public void onDestroyView() { super.onDestroyView(); //recycleAlbumArt(); } View.OnClickListener controlsClickListener = new View.OnClickListener() { @Override public void onClick( View v ) { int id = v.getId(); if ( id == R.id.NowPlayingPlayPauseButton ) { if ( isPlaying ) { mActivity.mBoundService.pause(); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.FOOTER_CONTROLS ) .setAction( AudioControls.ACTION_PAUSE ) .build()); } else { mActivity.mBoundService.play(); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.FOOTER_CONTROLS ) .setAction( AudioControls.ACTION_PLAY ) .build()); } } else if ( id == R.id.NowPlayingNextButton ) { mActivity.mBoundService.next(); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.FOOTER_CONTROLS ) .setAction( AudioControls.ACTION_NEXT ) .build()); } else if ( id == R.id.NowPlayingPrevButton ) { mActivity.mBoundService.prev(); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.FOOTER_CONTROLS ) .setAction( AudioControls.ACTION_PREV ) .build()); }else if ( id == R.id.NowPlayingRepeatButton ) { String repeatState = (String) v.getTag( R.id.tag_repeat_state ); if ( null == repeatState || repeatState.equals( "0" ) ) { mActivity.mBoundService.setLooping( PlaylistMediaPlayer.LOOP_ALL ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( "now playing button" ) .setAction( "click" ) .setLabel( "repeat" ) .setValue( 1 ) .build()); } else if ( repeatState.equals( "1" ) ) { mActivity.mBoundService.setLooping( PlaylistMediaPlayer.LOOP_ONE ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( "now playing button" ) .setAction( "click" ) .setLabel( "repeat" ) .setValue( 2 ) .build()); } else { mActivity.mBoundService.setLooping( PlaylistMediaPlayer.LOOP_NO ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( "now playing button" ) .setAction( "click" ) .setLabel( "repeat" ) .setValue( 0 ) .build()); } } else if ( id == R.id.NowPlayingShuffleButton ) { //ImageButton ib = ( ImageButton ) v; String shuffleState = (String) v.getTag( R.id.tag_shuffle_state ); if ( null == shuffleState || shuffleState.equals( "0" ) ) { mActivity.mBoundService.setShuffle( true ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( "now playing button" ) .setAction( "click" ) .setLabel( "shuffle" ) .setValue( 1 ) .build()); } else { mActivity.mBoundService.setShuffle( false ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( "now playing button" ) .setAction( "click" ) .setLabel( "shuffle" ) .setValue( 0 ) .build()); } } } }; /* private void recycleAlbumArt() { BitmapDrawable bd = ( BitmapDrawable ) mAlbumCover.getDrawable(); if ( null != bd && null != bd.getBitmap() ) { bd.getBitmap().recycle(); mAlbumCover.setImageBitmap( null ); } } */ PlaybackListener PlaybackListener = new PlaybackListener() { @Override public void onTrackChanged( String media_id ) { } @Override public void onPlay() { isPlaying = true; mPlayPauseButton.setImageResource( R.drawable.ic_action_playback_pause_white ); //mTitle.setSelected( true ); //mTitle.setSingleLine( true ); //mTitle.setEllipsize( TextUtils.TruncateAt.MARQUEE ); mProgressFragment.startProgress(); } @Override public void onPause() { isPlaying = false; mPlayPauseButton.setImageResource( R.drawable.ic_action_playback_play_white ); //mTitle.setEllipsize( TextUtils.TruncateAt.END ); mProgressFragment.stopProgress(); } @Override public void onPlaylistDone() { mProgressFragment.stopProgress(); } @Override public void onLoopingChanged( int loopState ) { if ( loopState == PlaylistMediaPlayer.LOOP_ALL ) { mRepeatButton.setTag( R.id.tag_repeat_state, "1" ); mRepeatButton.setImageResource( R.drawable.ic_action_playback_repeat_orange_dark ); } else if ( loopState == PlaylistMediaPlayer.LOOP_ONE ) { mRepeatButton.setTag( R.id.tag_repeat_state, "2" ); mRepeatButton.setImageResource( R.drawable.ic_action_playback_repeat_1_orange_dark ); } else { mRepeatButton.setTag( R.id.tag_repeat_state, "0" ); mRepeatButton.setImageResource( R.drawable.ic_action_playback_repeat_white ); } } @Override public void onShuffleChanged(boolean isShuffling) { if ( !isShuffling ) { mShuffleButton.setTag( R.id.tag_shuffle_state, "0" ); mShuffleButton.setImageResource( R.drawable.ic_action_playback_schuffle_white ); } else { mShuffleButton.setTag( R.id.tag_shuffle_state, "1" ); mShuffleButton.setImageResource( R.drawable.ic_action_playback_schuffle_orange_dark ); } } @Override public void onDurationChanged( int position, int duration ) { if ( mProgressFragment == null ) { android.util.Log.i( TAG, "null 1"); } mProgressFragment.setDuration( duration ); mProgressFragment.setProgress( position ); } }; }