Android Open Source - PlayTunes Now Playing Activity






From Project

Back to project page PlayTunes.

License

The source code is released under:

Copyright (c) 2014, Impeccable Labs, LLC. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions ar...

If you think the Android project PlayTunes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ideabag.playtunes.activity;
/* ww w.  j a  v  a 2  s . c  om*/
import com.ideabag.playtunes.PlaylistManager;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.dialog.AddToPlaylistDialogFragment;
import com.ideabag.playtunes.fragment.TrackProgressFragment;
import com.ideabag.playtunes.media.PlaylistMediaPlayer;
import com.ideabag.playtunes.service.MusicPlayerService;
import com.ideabag.playtunes.util.AdmobUtil;
import com.ideabag.playtunes.util.AsyncDrawable;
import com.ideabag.playtunes.util.BitmapWorkerTask;
import com.ideabag.playtunes.util.StarToggleTask;
import com.ideabag.playtunes.util.TrackerSingleton;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.AdRequest.Builder;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;

import android.annotation.SuppressLint;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.database.ContentObserver;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PorterDuff;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.ToggleButton;

public class NowPlayingActivity extends ActionBarActivity {
  
  public static final String TAG = "Now Playing Activity";
  
  public boolean mIsBound = false;
  public MusicPlayerService mBoundService;
  
  private PlaylistManager mPlaylistManager;
  
  private TrackProgressFragment mProgressFragment;
  
  private boolean isPlaying = false;
  //private int currentPlayback = 0;
  
  private String lastAlbumUri = null;
  
  // Bound for activity_nowplaying.xml
  protected AdView adView;
  protected ImageView mAlbumArtBackground;
  protected ImageView mAlbumCover;
  
  TextView mSongTitle;
  TextView mSongArtist;
  TextView mSongAlbum;
  
  ToggleButton starButton;
  ImageButton playPauseButton;
  
  private String current_media_id;
  
  Tracker tracker;
  
  @SuppressLint("NewApi")
  @Override public void onCreate( Bundle savedInstanceState ) {
    super.onCreate( savedInstanceState );
    
    setContentView( R.layout.activity_nowplaying );
    
    mPlaylistManager = new PlaylistManager( this );
    
    Intent intent = getIntent();
    
        ActionBar supportBar = getSupportActionBar();
        
        
        supportBar.setSubtitle( getString( R.string.activity_title_now_playing ) );
        
        supportBar.setIcon( android.R.color.transparent );
        supportBar.setDisplayShowHomeEnabled( true );
        supportBar.setDisplayHomeAsUpEnabled( true );
        supportBar.setHomeButtonEnabled( true );
    
    findViewById( R.id.NowPlayingPrevButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.NowPlayingPlayPauseButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.NowPlayingNextButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.StarButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.MenuButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.NowPlayingShuffleButton ).setOnClickListener( controlsClickListener );
    findViewById( R.id.NowPlayingRepeatButton ).setOnClickListener( controlsClickListener );
    
    
    mProgressFragment = ( TrackProgressFragment ) getSupportFragmentManager().findFragmentById( R.id.TrackProgressFragment );
    
    mAlbumArtBackground = ( ImageView ) findViewById( R.id.NowPlayingBackground );
    mAlbumCover = ( ImageView ) findViewById( R.id.NowPlayingAlbumCover );
    mSongTitle = ( TextView ) findViewById( R.id.SongTitle );
    starButton = ( ToggleButton ) findViewById( R.id.StarButton );
    playPauseButton =  ( ImageButton ) findViewById( R.id.NowPlayingPlayPauseButton );
    
    mAlbumArtBackground.setColorFilter( getResources().getColor( R.color.textColorPrimary ), PorterDuff.Mode.MULTIPLY );
    
    // Show Playlist
    /*
    if ( null != intent && intent.hasExtra( "media_id" ) ) {
      
      setMediaID( intent.getStringExtra( "media_id" ) );
      
    }
    */
    // Set up ad banner
    
    adView = (AdView) findViewById( R.id.adView );
      
    Builder adRequestBuilder = new AdRequest.Builder().addTestDevice( AdRequest.DEVICE_ID_EMULATOR );
      AdmobUtil.AddTestDevices( this, adRequestBuilder );
      
      //adRequestBuilder.
      
      AdRequest adRequest = adRequestBuilder.build();
    
    
    // Start loading the ad in the background.
    adView.loadAd(adRequest);
    
    tracker = TrackerSingleton.getDefaultTracker( this );
    tracker.setScreenName( TAG );
    
    getContentResolver().registerContentObserver(
        MediaStore.Audio.Playlists.Members.getContentUri( "external", Long.parseLong( mPlaylistManager.createStarredIfNotExist() ) ), true, mediaStoreChanged );
    
    
  }
  
  // Connect and disconnect from the player service
  
  @Override public void onStart() {
    super.onStart();
    
    
    if ( mIsBound && mBoundService != null ) {
      
      mBoundService.addPlaybackListener( mPlaybackListener );
      getSupportActionBar().setTitle( mBoundService.mPlaylistName );
      
    } else {
      
      doBindService();
      
    }
    
  }
  
  @Override public void onStop() {
    super.onStop();
    
    if ( mIsBound && mBoundService != null ) {
      
      mBoundService.removePlaybackListener( mPlaybackListener );
      
    }
    
    doUnbindService();
    
  }
  
  @Override public void onResume() {
    super.onResume();
    
    //Tracker tracker = TrackerSingleton.getDefaultTracker( this );

          // Set screen name.
          // Where path is a String representing the screen name.
    
    //t.set( "_count", ""+adapter.getCount() );
    
          // Send a screen view.
    tracker.send( new HitBuilders.AppViewBuilder().build() );
    
    adView.resume();
    
    
  }
  
  @Override public void onPause() {
    super.onPause();
    
    adView.pause();
    
  }
  
  
  
  @Override public void onDestroy() {
    super.onDestroy();
    
    getContentResolver().unregisterContentObserver( mediaStoreChanged );
    adView.destroy();
    //doUnbindService();
    
    
  }
  
  View.OnClickListener controlsClickListener = new View.OnClickListener() {
    
    @Override public void onClick( View v ) {
      
      int id = v.getId();
      
      if ( id == R.id.NowPlayingPlayPauseButton ) {
        
        if ( isPlaying ) {
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "pause" )
              .build());
          
          mBoundService.pause();
          
        } else {
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "play" )
              .build());
          
          mBoundService.play();
          
        }
        
      } else if ( id == R.id.NowPlayingNextButton ) {
        
        tracker.send( new HitBuilders.EventBuilder()
            .setCategory( "now playing button" )
            .setAction( "click" )
            .setLabel( "next" )
            .build());
        
        mBoundService.next();
        
      } else if ( id == R.id.NowPlayingPrevButton ) {
        
        tracker.send( new HitBuilders.EventBuilder()
            .setCategory( "now playing button" )
            .setAction( "click" )
            .setLabel( "previous" )
            .build());
        
        mBoundService.prev();
        
      } else if ( id == R.id.StarButton ) {
        
        //current_media_id
        ToggleButton starButton = (ToggleButton) v;
        
        if ( starButton.isChecked() ) {
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "star" )
              .setValue( 1 )
              .build());
          
          mPlaylistManager.addFavorite( current_media_id );
          
        } else {
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "star" )
              .setValue( 0 )
              .build());
          
          mPlaylistManager.removeFavorite( current_media_id );
          
        }
        
      } else if ( id == R.id.MenuButton ) {
        
        tracker.send( new HitBuilders.EventBuilder()
            .setCategory( "now playing button" )
            .setAction( "click" )
            .setLabel( "song menu" )
            .build());
        
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
            
        Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog");
        
          if ( prev != null ) {
              
            ft.remove( prev );
            
          }
        
        AddToPlaylistDialogFragment newFragment = new AddToPlaylistDialogFragment();
        newFragment.setMediaID( current_media_id );
            
              newFragment.show( ft, "dialog" );
        
      } else if ( id == R.id.NowPlayingRepeatButton ) {
        
        String repeatState = (String) v.getTag( R.id.tag_repeat_state );
        
        if ( null == repeatState || repeatState.equals( "0" ) ) {
          
          mBoundService.setLooping( PlaylistMediaPlayer.LOOP_ALL );
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "repeat" )
              .setValue( 1 )
              .build());
          
        } else if ( repeatState.equals( "1" ) ) {
          
          mBoundService.setLooping( PlaylistMediaPlayer.LOOP_ONE );
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "repeat" )
              .setValue( 2 )
              .build());
          
        } else {
          
          mBoundService.setLooping( PlaylistMediaPlayer.LOOP_NO );
          
          tracker.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" ) ) {
          
          mBoundService.setShuffle( true );
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "shuffle" )
              .setValue( 1 )
              .build());
          
        } else {
          
          mBoundService.setShuffle( false );
          
          tracker.send( new HitBuilders.EventBuilder()
              .setCategory( "now playing button" )
              .setAction( "click" )
              .setLabel( "shuffle" )
              .setValue( 0 )
              .build());
          
        }
        
      }
      
    }
    
  };
  
  @Override public boolean onCreateOptionsMenu( Menu menu ) {
      
    MenuInflater inflater = getMenuInflater();
      inflater.inflate( R.menu.nowplaying, menu );
      
      return super.onCreateOptionsMenu( menu );
      
  }
  
    @Override public boolean onOptionsItemSelected( MenuItem item ) {
      
        if ( item.getItemId() == R.id.NowPlayingShowButton ) {
          
          tracker.send( new HitBuilders.EventBuilder()
          .setCategory( "now playing action button" )
          .setAction( "click" )
          .setLabel( "now playing" )
          .build());
          
          setResult( RESULT_OK );
          finish();
          
          return true;
          
        }
        
        return super.onOptionsItemSelected( item );
        
    }
    
    public void setMediaID( String media_id ) {
      
      android.util.Log.i("now playing media_id", ( media_id == null ? "Is Null" : media_id ) );
      
      if ( null == media_id ) {
        
        // Close the activitiy
        finish();
        
      } else if ( media_id != this.current_media_id ) {
        
        this.current_media_id = media_id;
        
        starButton.setTag( R.id.tag_song_id, media_id );
        
        new StarToggleTask( starButton ).execute( media_id );
      
        MediaQuery mSongQuery = new MediaQuery(
          MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
          new String[] {
            
            MediaStore.Audio.Media.ALBUM,
            MediaStore.Audio.Media.ARTIST,
            MediaStore.Audio.Media.TITLE,
            MediaStore.Audio.Media.ALBUM_ID,
            MediaStore.Audio.Media.DURATION,
            MediaStore.Audio.Media._ID
            
          },
          MediaStore.Audio.Media._ID + "=?",
          new String[] {
            
              media_id
            
          },
          null
        );
      
        MediaQuery.executeAsync( this, mSongQuery, new MediaQuery.OnQueryCompletedListener() {
        
        @Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
          
          mResult.moveToFirst();
          
          String title = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.TITLE ) );
          String artist = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.ARTIST ) );
          String album = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.ALBUM ) );
          int duration = mResult.getInt( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.DURATION ) );
          
          String album_id = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.ALBUM_ID ) );
          
          
          
          MediaQuery mAlbumArt = new MediaQuery(
              MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
                new String[] {
                  
                  MediaStore.Audio.Albums.ALBUM_ART,
                  MediaStore.Audio.Albums._ID
                  
                },
                MediaStore.Audio.Albums._ID + "=?",
              new String[] {
                
                album_id
                
              },
              null
            );
          
          MediaQuery.executeAsync( getBaseContext(), mAlbumArt, new MediaQuery.OnQueryCompletedListener() {
            
            @Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
              
              mResult.moveToFirst();
              String nextAlbumUri = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Albums.ALBUM_ART ) );
              
              // 
              // This tests if we loaded previous album art and that it wasn't null
              // If the nextAlbumUri is null, it means there's no album art and 
              // we load from an image resource.
              // 
              
              
              /*
              if ( null == nextAlbumUri && null != lastAlbumUri) {
                
                recycleAlbumArt();
                
              } else if ( null != nextAlbumUri && null != lastAlbumUri && !lastAlbumUri.equals( nextAlbumUri ) ) {
                
                recycleAlbumArt();
                
              }
              */
              if ( null == nextAlbumUri ) {
                
                mAlbumCover.setImageResource( R.drawable.no_album_art_full );
                
              } else if ( lastAlbumUri == null || !nextAlbumUri.equals( lastAlbumUri ) ) {
                
                /*
                try {
                  
                  BitmapFactory.Options options = new BitmapFactory.Options();
                  
                  Bitmap albumArtBitmap = BitmapFactory.decodeFile( nextAlbumUri, options );
                  
                  
                  
                  //Bitmap newAlbumArt = Bitmap.createScaledBitmap( albumArtBitmap, albumArtBitmap.getWidth() * 4, albumArtBitmap.getHeight() * 4, true );
                  
                  mAlbumArtBackground.setImageBitmap( albumArtBitmap );
                  
                } catch( Throwable t) {
                  
                  // OutOfMemoryException :-/
                  t.printStackTrace();
                  
                }
                //findViewById( R.id.NowPlayingBackground ).setBackgroundDrawable( new BitmapDrawable( newAlbumArt ) );
                */
                final BitmapWorkerTask albumThumbTask = new BitmapWorkerTask( mAlbumCover );
                final BitmapWorkerTask albumFullTask = new BitmapWorkerTask( mAlbumArtBackground );
                    final AsyncDrawable asyncThumbDrawable =
                            new AsyncDrawable( getResources(),
                                null, // BitmapFactory.decodeResource( mContext.getResources(), R.drawable.no_album_art_thumb )
                                albumThumbTask );
                    final AsyncDrawable asyncFullDrawable =
                            new AsyncDrawable( getResources(),
                                null, // BitmapFactory.decodeResource( mContext.getResources(), R.drawable.no_album_art_thumb )
                                albumFullTask );
                    
                    mAlbumCover.setImageDrawable( asyncThumbDrawable );
                    albumThumbTask.execute( nextAlbumUri );
                    
                    mAlbumArtBackground.setImageDrawable( asyncFullDrawable );
                    albumFullTask.execute( nextAlbumUri );
                
                    lastAlbumUri = nextAlbumUri;
                    
              }
              
              // Otherwise, nextAlbumUri and lastAlbumUri are the same, we leave the ImageView alone
              // and don't recycle the backing bitmap;
              
              lastAlbumUri = nextAlbumUri;
              
              mResult.close();
              
            }
            
          });
          
          mSongTitle.setText( title );
          ( ( TextView ) findViewById( R.id.SongArtist ) ).setText( artist );
          ( ( TextView ) findViewById( R.id.SongAlbum ) ).setText( album );
          
          mProgressFragment.setDuration( duration );
          
          mResult.close();
          
        }
        
      });
        

      
      }
      
    }
    /*
     private void recycleAlbumArt() {
       
       BitmapDrawable mAlbumDrawable = ( BitmapDrawable ) mAlbumCover.getDrawable();
       BitmapDrawable mBackgroundDrawable = ( BitmapDrawable ) mAlbumArtBackground.getDrawable();
       
       if ( null != mAlbumDrawable && null != mAlbumDrawable.getBitmap() ) {
         
         mAlbumDrawable.getBitmap().recycle();
         mAlbumCover.setImageBitmap( null );
         
       }
       
       if ( null != mBackgroundDrawable && null != mBackgroundDrawable.getBitmap() ) {
        
         mBackgroundDrawable.getBitmap().recycle();
         mAlbumArtBackground.setImageBitmap( null );
         
       }
       
      
      
     }
     */
    private PlaylistMediaPlayer.PlaybackListener mPlaybackListener = new PlaylistMediaPlayer.PlaybackListener() {

    @Override public void onTrackChanged( String media_id ) {
      
      setMediaID( media_id );
      
    }

    @Override public void onPlay(int playbackPositionMilliseconds) {
      
      isPlaying = true;
      mProgressFragment.setProgress( playbackPositionMilliseconds );
      mProgressFragment.startProgress();
      
      playPauseButton.setImageResource( R.drawable.ic_action_playback_pause_white );
      
    }

    @Override public void onPause( int playbackPositionMilliseconds ) {
      
      isPlaying = false;
      mProgressFragment.setProgress( playbackPositionMilliseconds );
      mProgressFragment.stopProgress();
      playPauseButton.setImageResource( R.drawable.ic_action_playback_play_white );
      
    }

    @Override public void onPlaylistDone() {
      
      isPlaying = false;
      setMediaID( null );
      
    }

    @Override public void onLoopingChanged( int loopState ) {
      
      ImageButton mRepeatButton = ( (ImageButton) findViewById( R.id.NowPlayingRepeatButton ) );
      
      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) {
      
      ImageButton mShuffleButton = ( (ImageButton) findViewById( R.id.NowPlayingShuffleButton ) );
      
      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 );
        
      }
      
    }
    
  };
    
  private ServiceConnection mConnection = new ServiceConnection() {
    
      public void onServiceConnected( ComponentName className, IBinder service ) {
          // This is called when the connection with the service has been
          // established, giving us the service object we can use to
          // interact with the service.  Because we have bound to a explicit
          // service that we know is running in our own process, we can
          // cast its IBinder to a concrete class and directly access it.
        mBoundService = ( ( MusicPlayerService.MusicPlayerServiceBinder ) service ).getService();
          
        //android.util.Log.i("Attached to service", "Now Playing Activity connected to service." );
        
        //setMediaID( mBoundService.CURRENT_MEDIA_ID );
        //mBoundService.doAttachActivity();
        mBoundService.addPlaybackListener( mPlaybackListener );
          
        getSupportActionBar().setTitle( mBoundService.mPlaylistName );
        
          //mmBoundService.next();
          
      }

      public void onServiceDisconnected( ComponentName className ) {
          // This is called when the connection with the service has been
          // unexpectedly disconnected -- that is, its process crashed.
          // Because it is running in our same process, we should never
          // see this happen.
        
        mBoundService = null;
          
      }
      
  };
  
  void doBindService() {
      // Establish a connection with the service.  We use an explicit
      // class name because we want a specific service implementation that
      // we know will be running in our own process (and thus won't be
      // supporting component replacement by other applications).
      bindService( new Intent( NowPlayingActivity.this, MusicPlayerService.class ), mConnection, Context.BIND_AUTO_CREATE );
      
      mIsBound = true;
      
  }
  
  void doUnbindService() {
    
      if ( mIsBound && mBoundService != null ) {
          
        // Remove service's reference to local object
        //mBoundService.doDetachActivity();
        //android.util.Log.i("Detached from service", "Now Playing Activity disconnected from service." );
        // Detach our existing connection.
        
        mBoundService.removePlaybackListener( mPlaybackListener );
        
          unbindService( mConnection );
          mIsBound = false;
          
      }
      
  }
  
  ContentObserver mediaStoreChanged = new ContentObserver( new Handler() ) {
    
        @Override public void onChange( boolean selfChange ) {
            
            runOnUiThread( new Runnable() {

        @Override public void run() {
          
          new StarToggleTask( starButton ).execute( current_media_id );
          
        }
              
            });
            
            super.onChange( selfChange );
            
        }

  };
  
}




Java Source Code List

com.ideabag.playtunes.PlaylistManager.java
com.ideabag.playtunes.DragNDrop.DragListener.java
com.ideabag.playtunes.DragNDrop.DragNDropListView.java
com.ideabag.playtunes.DragNDrop.DropListener.java
com.ideabag.playtunes.DragNDrop.RemoveListener.java
com.ideabag.playtunes.activity.MainActivity.java
com.ideabag.playtunes.activity.NowPlayingActivity.java
com.ideabag.playtunes.activity.SettingsActivity.java
com.ideabag.playtunes.adapter.AlbumListAdapter.java
com.ideabag.playtunes.adapter.AlbumsAllAdapter.java
com.ideabag.playtunes.adapter.AlbumsOneAdapter.java
com.ideabag.playtunes.adapter.ArtistAlbumsAdapter.java
com.ideabag.playtunes.adapter.ArtistAllSongsAdapter.java
com.ideabag.playtunes.adapter.ArtistListAdapter.java
com.ideabag.playtunes.adapter.ArtistSinglesAdapter.java
com.ideabag.playtunes.adapter.ArtistsAllAdapter.java
com.ideabag.playtunes.adapter.AsyncQueryAdapter.java
com.ideabag.playtunes.adapter.GenresAllAdapter.java
com.ideabag.playtunes.adapter.GenresOneAdapter.java
com.ideabag.playtunes.adapter.NavigationListAdapter.java
com.ideabag.playtunes.adapter.PlaylistsAllAdapter.java
com.ideabag.playtunes.adapter.PlaylistsOneAdapter.java
com.ideabag.playtunes.adapter.SongListAdapter.java
com.ideabag.playtunes.adapter.SongsAllAdapter.java
com.ideabag.playtunes.adapter.search.SearchAlbumsAdapter.java
com.ideabag.playtunes.adapter.search.SearchArtistsAdapter.java
com.ideabag.playtunes.adapter.search.SearchSongsAdapter.java
com.ideabag.playtunes.database.MediaQuery.java
com.ideabag.playtunes.dialog.AddToPlaylistDialogFragment.java
com.ideabag.playtunes.dialog.CreatePlaylistDialogFragment.java
com.ideabag.playtunes.dialog.FeedbackDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistDeleteDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistMenuDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistRenameDialogFragment.java
com.ideabag.playtunes.dialog.RateAppDialogFragment.java
com.ideabag.playtunes.dialog.SongMenuDialogFragment.java
com.ideabag.playtunes.fragment.AlbumsAllFragment.java
com.ideabag.playtunes.fragment.AlbumsOneFragment.java
com.ideabag.playtunes.fragment.ArtistSinglesFragment.java
com.ideabag.playtunes.fragment.ArtistsAllFragment.java
com.ideabag.playtunes.fragment.ArtistsOneFragment.java
com.ideabag.playtunes.fragment.FooterControlsFragment.java
com.ideabag.playtunes.fragment.GenresAllFragment.java
com.ideabag.playtunes.fragment.GenresOneFragment.java
com.ideabag.playtunes.fragment.MusicBrowserFragment.java
com.ideabag.playtunes.fragment.NavigationDrawerFragment.java
com.ideabag.playtunes.fragment.NavigationFragment.java
com.ideabag.playtunes.fragment.PlaylistsAllFragment.java
com.ideabag.playtunes.fragment.PlaylistsOneFragment.java
com.ideabag.playtunes.fragment.SaveScrollListFragment.java
com.ideabag.playtunes.fragment.SongsFragment.java
com.ideabag.playtunes.fragment.TrackProgressFragment.java
com.ideabag.playtunes.fragment.search.SearchAlbumsFragment.java
com.ideabag.playtunes.fragment.search.SearchAllFragment.java
com.ideabag.playtunes.fragment.search.SearchArtistsFragment.java
com.ideabag.playtunes.fragment.search.SearchFragment.java
com.ideabag.playtunes.fragment.search.SearchSongsFragment.java
com.ideabag.playtunes.fragment.search.SearchSuggestionsFragment.java
com.ideabag.playtunes.media.AudioFocusHelper.java
com.ideabag.playtunes.media.MusicFocusable.java
com.ideabag.playtunes.media.MusicIntentReceiver.java
com.ideabag.playtunes.media.PlaylistMediaPlayer.java
com.ideabag.playtunes.media.RemoteControlClientCompat.java
com.ideabag.playtunes.media.RemoteControlHelper.java
com.ideabag.playtunes.service.LockscreenManager.java
com.ideabag.playtunes.service.MusicPlayerService.java
com.ideabag.playtunes.service.PlaybackNotification.java
com.ideabag.playtunes.util.AdmobUtil.java
com.ideabag.playtunes.util.AlbumSongsCountTask.java
com.ideabag.playtunes.util.AsyncDrawable.java
com.ideabag.playtunes.util.BitmapWorkerTask.java
com.ideabag.playtunes.util.CheckRemoteVersionFileTask.java
com.ideabag.playtunes.util.DrawerLayout.java
com.ideabag.playtunes.util.GAEvent.java
com.ideabag.playtunes.util.IMusicBrowser.java
com.ideabag.playtunes.util.ISearchableAdapter.java
com.ideabag.playtunes.util.LoadAlbumStackTask.java
com.ideabag.playtunes.util.MergeAdapter.java
com.ideabag.playtunes.util.QueryCountTask.java
com.ideabag.playtunes.util.SackOfViewsAdapter.java
com.ideabag.playtunes.util.SearchHistory.java
com.ideabag.playtunes.util.StarToggleTask.java
com.ideabag.playtunes.util.TrackerSingleton.java