/* * This is the source code of DMPLayer for Android v. 1.0.0. * You should have received a copy of the license in this archive (see LICENSE). * Copyright @Dibakar_Mistry, 2015. */ package com.dmplayer.activities; import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.Toolbar; import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.TextView; import com.dmplayer.R; import com.dmplayer.manager.MediaController; import com.dmplayer.manager.MusicPreferance; import com.dmplayer.manager.NotificationManager; import com.dmplayer.models.SongDetail; import com.dmplayer.observablelib.ObservableScrollView; import com.dmplayer.observablelib.ObservableScrollViewCallbacks; import com.dmplayer.observablelib.ScrollState; import com.dmplayer.observablelib.ScrollUtils; import com.dmplayer.phonemidea.DMPlayerUtility; import com.dmplayer.phonemidea.PhoneMediaControl; import com.dmplayer.slidinguppanelhelper.SlidingUpPanelLayout; import com.dmplayer.uicomponent.ExpandableHeightListView; import com.dmplayer.uicomponent.PlayPauseView; import com.dmplayer.uicomponent.Slider; import com.nineoldandroids.animation.AnimatorSet; import com.nineoldandroids.animation.ObjectAnimator; import com.nineoldandroids.view.ViewHelper; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; public class AlbumAndArtisDetailsActivity extends ActionBarActivity implements View.OnClickListener, ObservableScrollViewCallbacks, Slider.OnValueChangedListener, NotificationManager.NotificationCenterDelegate { private View mToolbarView; private ObservableScrollView mScrollView; private int mParallaxImageHeight; private SharedPreferences sharedPreferences; private int color = 0xFFFFFF; private Context context; private long id = -1; private long tagFor = -1; private String albumname = ""; private String title_one = ""; private String title_sec = ""; private ImageView banner; private FloatingActionButton fab_button; private TextView tv_albumname, tv_title_fst, tv_title_sec; private ExpandableHeightListView recycler_songslist; private AllSongsListAdapter mAllSongsListAdapter; private ArrayList<SongDetail> songList = new ArrayList<SongDetail>(); private DisplayImageOptions options; private ImageLoader imageLoader = ImageLoader.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { //Set your theme first context = AlbumAndArtisDetailsActivity.this; theme(); //Set your Layout view super.onCreate(savedInstanceState); setContentView(R.layout.activity_albumandartisdetails); initialize(); getBundleValuse(); initiSlidingUpPanel(); loadAlreadyPaing(); addObserver(); fabanim(); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: onBackPressed(); break; } return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { if (isExpand) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } else { super.onBackPressed(); overridePendingTransition(0, 0); finish(); } } @Override protected void onDestroy() { super.onDestroy(); removeObserver(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bottombar_play: if (MediaController.getInstance().getPlayingSongDetail() != null) PlayPauseEvent(v); break; case R.id.btn_play: if (MediaController.getInstance().getPlayingSongDetail() != null) PlayPauseEvent(v); break; case R.id.btn_forward: if (MediaController.getInstance().getPlayingSongDetail() != null) MediaController.getInstance().playNextSong(); break; case R.id.btn_backward: if (MediaController.getInstance().getPlayingSongDetail() != null) MediaController.getInstance().playPreviousSong(); break; case R.id.btn_suffel: v.setSelected(v.isSelected() ? false : true); MediaController.getInstance().shuffleMusic = v.isSelected() ? true : false; MusicPreferance.setShuffel(context, (v.isSelected() ? true : false)); MediaController.getInstance().shuffleList(MusicPreferance.playlist); DMPlayerUtility.changeColorSet(context, (ImageView) v, v.isSelected()); break; case R.id.btn_toggle: v.setSelected(v.isSelected() ? false : true); MediaController.getInstance().repeatMode = v.isSelected() ? 1 : 0; MusicPreferance.setRepeat(context, (v.isSelected() ? 1 : 0)); DMPlayerUtility.changeColorSet(context, (ImageView) v, v.isSelected()); break; case R.id.bottombar_img_Favorite: if (MediaController.getInstance().getPlayingSongDetail() != null) { MediaController.getInstance().storeFavoritePlay(context, MediaController.getInstance().getPlayingSongDetail(), v.isSelected() ? 0 : 1); v.setSelected(v.isSelected() ? false : true); DMPlayerUtility.animateHeartButton(v); findViewById(R.id.ivLike).setSelected(v.isSelected() ? true : false); DMPlayerUtility.animatePhotoLike(findViewById(R.id.vBgLike), findViewById(R.id.ivLike)); } break; default: break; } } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); onScrollChanged(mScrollView.getCurrentScrollY(), false, false); } @Override public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) { int baseColor = color; float alpha = Math.min(1, (float) scrollY / mParallaxImageHeight); mToolbarView.setBackgroundColor(ScrollUtils.getColorWithAlpha(alpha, baseColor)); ViewHelper.setTranslationY(banner, scrollY / 2); } @Override public void onDownMotionEvent() { } @Override public void onUpOrCancelMotionEvent(ScrollState scrollState) { } //Catch theme changed from settings public void theme() { sharedPreferences = getSharedPreferences("VALUES", Context.MODE_PRIVATE); int theme = sharedPreferences.getInt("THEME", 0); DMPlayerUtility.settingTheme(context, theme); } private void initialize() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); mToolbarView = findViewById(R.id.toolbar); // Setup RecyclerView inside drawer final TypedValue typedValue = new TypedValue(); getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true); color = typedValue.data; mToolbarView.setBackgroundColor(ScrollUtils.getColorWithAlpha(0, color)); mScrollView = (ObservableScrollView) findViewById(R.id.scroll); mScrollView.setScrollViewCallbacks(this); mParallaxImageHeight = getResources().getDimensionPixelSize(R.dimen.parallax_image_height); banner = (ImageView) findViewById(R.id.banner); tv_albumname = (TextView) findViewById(R.id.tv_albumname); tv_title_fst = (TextView) findViewById(R.id.tv_title_frst); tv_title_sec = (TextView) findViewById(R.id.tv_title_sec); recycler_songslist = (ExpandableHeightListView) findViewById(R.id.recycler_allSongs); mAllSongsListAdapter = new AllSongsListAdapter(context); recycler_songslist.setAdapter(mAllSongsListAdapter); options = new DisplayImageOptions.Builder().showImageOnLoading(R.drawable.bg_default_album_art) .showImageForEmptyUri(R.drawable.bg_default_album_art).showImageOnFail(R.drawable.bg_default_album_art).cacheInMemory(true) .cacheOnDisk(true).considerExifParams(true).bitmapConfig(Bitmap.Config.RGB_565).build(); try { fab_button = (FloatingActionButton) findViewById(R.id.fab_button); fab_button.setColorFilter(color); if (Build.VERSION.SDK_INT > 15) { fab_button.setImageAlpha(255); } else { fab_button.setAlpha(255); } } catch (Exception e) { e.printStackTrace(); } } private void getBundleValuse() { Bundle mBundle = getIntent().getExtras(); if (mBundle != null) { id = mBundle.getLong("id"); tagFor = mBundle.getLong("tagfor"); albumname = mBundle.getString("albumname"); title_one = mBundle.getString("title_one"); title_sec = mBundle.getString("title_sec"); } if (tagFor == PhoneMediaControl.SonLoadFor.Gener.ordinal()) { loadGenersSongs(id); } else if (tagFor == PhoneMediaControl.SonLoadFor.Album.ordinal()) { loadAlbumSongs(id); } else if (tagFor == PhoneMediaControl.SonLoadFor.Artis.ordinal()) { loadArtisSongs(id); } else { } tv_albumname.setText(albumname); tv_title_fst.setText(title_one); tv_title_sec.setText(title_sec); } private void loadAlbumSongs(long id) { PhoneMediaControl mPhoneMediaControl = PhoneMediaControl.getInstance(); PhoneMediaControl.setPhonemediacontrolinterface(new PhoneMediaControl.PhoneMediaControlINterface() { @Override public void loadSongsComplete(ArrayList<SongDetail> songsList_) { songList = songsList_; mAllSongsListAdapter.notifyDataSetChanged(); if (songList != null && songList.size() >= 1) { tv_title_sec.setText(songList.size() + " songs"); } } }); mPhoneMediaControl.loadMusicList(context, id, PhoneMediaControl.SonLoadFor.Album, ""); String contentURI = "content://media/external/audio/albumart/" + id; imageLoader.displayImage(contentURI, banner, options); } private void loadArtisSongs(long id) { PhoneMediaControl mPhoneMediaControl = PhoneMediaControl.getInstance(); PhoneMediaControl.setPhonemediacontrolinterface(new PhoneMediaControl.PhoneMediaControlINterface() { @Override public void loadSongsComplete(ArrayList<SongDetail> songsList_) { songList = songsList_; mAllSongsListAdapter.notifyDataSetChanged(); if (songList != null && songList.size() >= 1) { String contentURI = "content://media/external/audio/media/" + songList.get(0).getId() + "/albumart"; imageLoader.displayImage(contentURI, banner, options); } } }); mPhoneMediaControl.loadMusicList(context, id, PhoneMediaControl.SonLoadFor.Artis, ""); } private void loadGenersSongs(long id) { PhoneMediaControl mPhoneMediaControl = PhoneMediaControl.getInstance(); PhoneMediaControl.setPhonemediacontrolinterface(new PhoneMediaControl.PhoneMediaControlINterface() { @Override public void loadSongsComplete(ArrayList<SongDetail> songsList_) { songList = songsList_; mAllSongsListAdapter.notifyDataSetChanged(); if (songList != null && songList.size() >= 1) { String contentURI = "content://media/external/audio/media/" + songList.get(0).getId() + "/albumart"; imageLoader.displayImage(contentURI, banner, options); tv_title_sec.setText(songList.size() + " songs"); } } }); mPhoneMediaControl.loadMusicList(context, id, PhoneMediaControl.SonLoadFor.Gener, ""); } public class AllSongsListAdapter extends BaseAdapter { private Context context = null; private LayoutInflater layoutInflater; public AllSongsListAdapter(Context mContext) { this.context = mContext; this.layoutInflater = LayoutInflater.from(mContext); } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder mViewHolder; if (convertView == null) { mViewHolder = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.inflate_allsongsitem, null); mViewHolder.song_row = (LinearLayout) convertView.findViewById(R.id.inflate_allsong_row); mViewHolder.textViewSongName = (TextView) convertView.findViewById(R.id.inflate_allsong_textsongname); mViewHolder.textViewSongArtisNameAndDuration = (TextView) convertView.findViewById(R.id.inflate_allsong_textsongArtisName_duration); mViewHolder.imageSongThm = (ImageView) convertView.findViewById(R.id.inflate_allsong_imgSongThumb); mViewHolder.imagemore = (ImageView) convertView.findViewById(R.id.img_moreicon); convertView.setTag(mViewHolder); } else { mViewHolder = (ViewHolder) convertView.getTag(); } SongDetail mDetail = songList.get(position); String audioDuration = ""; try { audioDuration = DMPlayerUtility.getAudioDuration(Long.parseLong(mDetail.getDuration())); } catch (NumberFormatException e) { e.printStackTrace(); } mViewHolder.textViewSongArtisNameAndDuration.setText((audioDuration.isEmpty() ? "" : audioDuration + " | ") + mDetail.getArtist()); mViewHolder.textViewSongName.setText(mDetail.getTitle()); String contentURI = "content://media/external/audio/media/" + mDetail.getId() + "/albumart"; imageLoader.displayImage(contentURI, mViewHolder.imageSongThm, options); convertView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { SongDetail mDetail = songList.get(position); if (mDetail != null) { if (MediaController.getInstance().isPlayingAudio(mDetail) && !MediaController.getInstance().isAudioPaused()) { MediaController.getInstance().pauseAudio(mDetail); } else { MediaController.getInstance().setPlaylist(songList, mDetail, (int) tagFor, (int) id); } } } }); mViewHolder.imagemore.setColorFilter(Color.DKGRAY); if (Build.VERSION.SDK_INT > 15) { mViewHolder.imagemore.setImageAlpha(255); } else { mViewHolder.imagemore.setAlpha(255); } mViewHolder.imagemore.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { PopupMenu popup = new PopupMenu(context, v); popup.getMenuInflater().inflate(R.menu.list_item_option, popup.getMenu()); popup.show(); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.playnext: break; case R.id.addtoque: break; case R.id.addtoplaylist: break; case R.id.gotoartis: break; case R.id.gotoalbum: break; case R.id.delete: break; default: break; } return true; } }); } catch (Exception e) { e.printStackTrace(); } } }); return convertView; } @Override public int getCount() { return (songList != null) ? songList.size() : 0; } class ViewHolder { TextView textViewSongName; ImageView imageSongThm, imagemore; TextView textViewSongArtisNameAndDuration; LinearLayout song_row; } } /*-----------------All Work Related to Slide Panel-----------------*/ private static final String TAG = "ActivityDMPlayerBase"; private SlidingUpPanelLayout mLayout; private RelativeLayout slidepanelchildtwo_topviewone; private RelativeLayout slidepanelchildtwo_topviewtwo; private boolean isExpand = false; private ImageLoadingListener animateFirstListener = new AnimateFirstDisplayListener(); private ImageView songAlbumbg; private ImageView img_bottom_slideone; private ImageView img_bottom_slidetwo; private TextView txt_playesongname; private TextView txt_songartistname; private TextView txt_playesongname_slidetoptwo; private TextView txt_songartistname_slidetoptwo; private TextView txt_timeprogress; private TextView txt_timetotal; private ImageView imgbtn_backward; private ImageView imgbtn_forward; private ImageView imgbtn_toggle; private ImageView imgbtn_suffel; private ImageView img_Favorite; private PlayPauseView btn_playpause; private PlayPauseView btn_playpausePanel; private Slider audio_progress; private boolean isDragingStart = false; private int TAG_Observer; private void initiSlidingUpPanel() { mLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); // songAlbumbg = (ImageView) findViewById(R.id.image_songAlbumbg); songAlbumbg = (ImageView) findViewById(R.id.image_songAlbumbg_mid); img_bottom_slideone = (ImageView) findViewById(R.id.img_bottom_slideone); img_bottom_slidetwo = (ImageView) findViewById(R.id.img_bottom_slidetwo); txt_timeprogress = (TextView) findViewById(R.id.slidepanel_time_progress); txt_timetotal = (TextView) findViewById(R.id.slidepanel_time_total); imgbtn_backward = (ImageView) findViewById(R.id.btn_backward); imgbtn_forward = (ImageView) findViewById(R.id.btn_forward); imgbtn_toggle = (ImageView) findViewById(R.id.btn_toggle); imgbtn_suffel = (ImageView) findViewById(R.id.btn_suffel); btn_playpause = (PlayPauseView) findViewById(R.id.btn_play); audio_progress = (Slider) findViewById(R.id.audio_progress_control); btn_playpausePanel = (PlayPauseView) findViewById(R.id.bottombar_play); img_Favorite = (ImageView) findViewById(R.id.bottombar_img_Favorite); TypedValue typedvaluecoloraccent = new TypedValue(); getTheme().resolveAttribute(R.attr.colorAccent, typedvaluecoloraccent, true); final int coloraccent = typedvaluecoloraccent.data; audio_progress.setBackgroundColor(coloraccent); audio_progress.setValue(0); audio_progress.setOnValueChangedListener(this); imgbtn_backward.setOnClickListener(this); imgbtn_forward.setOnClickListener(this); imgbtn_toggle.setOnClickListener(this); imgbtn_suffel.setOnClickListener(this); img_Favorite.setOnClickListener(this); btn_playpausePanel.Pause(); btn_playpause.Pause(); txt_playesongname = (TextView) findViewById(R.id.txt_playesongname); txt_songartistname = (TextView) findViewById(R.id.txt_songartistname); txt_playesongname_slidetoptwo = (TextView) findViewById(R.id.txt_playesongname_slidetoptwo); txt_songartistname_slidetoptwo = (TextView) findViewById(R.id.txt_songartistname_slidetoptwo); slidepanelchildtwo_topviewone = (RelativeLayout) findViewById(R.id.slidepanelchildtwo_topviewone); slidepanelchildtwo_topviewtwo = (RelativeLayout) findViewById(R.id.slidepanelchildtwo_topviewtwo); slidepanelchildtwo_topviewone.setVisibility(View.VISIBLE); slidepanelchildtwo_topviewtwo.setVisibility(View.INVISIBLE); slidepanelchildtwo_topviewone.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } }); slidepanelchildtwo_topviewtwo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } }); ((PlayPauseView) findViewById(R.id.bottombar_play)).setOnClickListener(this); ((PlayPauseView) findViewById(R.id.btn_play)).setOnClickListener(this); imgbtn_toggle.setSelected((MusicPreferance.getRepeat(context) == 1) ? true : false); MediaController.getInstance().shuffleMusic = imgbtn_toggle.isSelected() ? true : false; DMPlayerUtility.changeColorSet(context, (ImageView) imgbtn_toggle, imgbtn_toggle.isSelected()); imgbtn_suffel.setSelected(MusicPreferance.getShuffel(context) ? true : false); MediaController.getInstance().repeatMode = imgbtn_suffel.isSelected() ? 1 : 0; DMPlayerUtility.changeColorSet(context, (ImageView) imgbtn_suffel, imgbtn_suffel.isSelected()); mLayout.setPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() { @Override public void onPanelSlide(View panel, float slideOffset) { Log.i(TAG, "onPanelSlide, offset " + slideOffset); if (slideOffset == 0.0f) { isExpand = false; slidepanelchildtwo_topviewone.setVisibility(View.VISIBLE); slidepanelchildtwo_topviewtwo.setVisibility(View.INVISIBLE); } else if (slideOffset > 0.0f && slideOffset < 1.0f) { // if (isExpand) { // slidepanelchildtwo_topviewone.setAlpha(1.0f); // slidepanelchildtwo_topviewtwo.setAlpha(1.0f - // slideOffset); // } else { // slidepanelchildtwo_topviewone.setAlpha(1.0f - // slideOffset); // slidepanelchildtwo_topviewtwo.setAlpha(1.0f); // } } else { isExpand = true; slidepanelchildtwo_topviewone.setVisibility(View.INVISIBLE); slidepanelchildtwo_topviewtwo.setVisibility(View.VISIBLE); } } @Override public void onPanelExpanded(View panel) { Log.i(TAG, "onPanelExpanded"); isExpand = true; } @Override public void onPanelCollapsed(View panel) { Log.i(TAG, "onPanelCollapsed"); isExpand = false; } @Override public void onPanelAnchored(View panel) { Log.i(TAG, "onPanelAnchored"); } @Override public void onPanelHidden(View panel) { Log.i(TAG, "onPanelHidden"); } }); } private void loadAlreadyPaing() { SongDetail mSongDetail = MediaController.getInstance().getPlayingSongDetail(); if (mSongDetail != null) { loadSongsDetails(mSongDetail); updateTitle(false); MediaController.getInstance().checkIsFavorite(context, mSongDetail, img_Favorite); } } private static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>()); @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if (loadedImage != null) { ImageView imageView = (ImageView) view; boolean firstDisplay = !displayedImages.contains(imageUri); if (firstDisplay) { FadeInBitmapDisplayer.animate(imageView, 500); displayedImages.add(imageUri); } } } } public void addObserver() { TAG_Observer = MediaController.getInstance().generateObserverTag(); NotificationManager.getInstance().addObserver(this, NotificationManager.audioDidReset); NotificationManager.getInstance().addObserver(this, NotificationManager.audioPlayStateChanged); NotificationManager.getInstance().addObserver(this, NotificationManager.audioDidStarted); NotificationManager.getInstance().addObserver(this, NotificationManager.audioProgressDidChanged); NotificationManager.getInstance().addObserver(this, NotificationManager.newaudioloaded); } public void removeObserver() { NotificationManager.getInstance().removeObserver(this, NotificationManager.audioDidReset); NotificationManager.getInstance().removeObserver(this, NotificationManager.audioPlayStateChanged); NotificationManager.getInstance().removeObserver(this, NotificationManager.audioDidStarted); NotificationManager.getInstance().removeObserver(this, NotificationManager.audioProgressDidChanged); NotificationManager.getInstance().removeObserver(this, NotificationManager.newaudioloaded); } public void loadSongsDetails(SongDetail mDetail) { String contentURI = "content://media/external/audio/media/" + mDetail.getId() + "/albumart"; imageLoader.displayImage(contentURI, songAlbumbg, options, animateFirstListener); imageLoader.displayImage(contentURI, img_bottom_slideone, options, animateFirstListener); imageLoader.displayImage(contentURI, img_bottom_slidetwo, options, animateFirstListener); txt_playesongname.setText(mDetail.getTitle()); txt_songartistname.setText(mDetail.getArtist()); txt_playesongname_slidetoptwo.setText(mDetail.getTitle()); txt_songartistname_slidetoptwo.setText(mDetail.getArtist()); if (txt_timetotal != null) { long duration = Long.valueOf(mDetail.getDuration()); txt_timetotal.setText(duration != 0 ? String.format("%d:%02d", duration / 60, duration % 60) : "-:--"); } updateProgress(mDetail); } @Override public void didReceivedNotification(int id, Object... args) { if (id == NotificationManager.audioDidStarted || id == NotificationManager.audioPlayStateChanged || id == NotificationManager.audioDidReset) { updateTitle(id == NotificationManager.audioDidReset && (Boolean) args[1]); } else if (id == NotificationManager.audioProgressDidChanged) { SongDetail mSongDetail = MediaController.getInstance().getPlayingSongDetail(); updateProgress(mSongDetail); } } @Override public void newSongLoaded(Object... args) { MediaController.getInstance().checkIsFavorite(context, (SongDetail) args[0], img_Favorite); } private void updateTitle(boolean shutdown) { SongDetail mSongDetail = MediaController.getInstance().getPlayingSongDetail(); if (mSongDetail == null && shutdown) { return; } else { updateProgress(mSongDetail); if (MediaController.getInstance().isAudioPaused()) { btn_playpausePanel.Pause(); btn_playpause.Pause(); } else { btn_playpausePanel.Play(); btn_playpause.Play(); } SongDetail audioInfo = MediaController.getInstance().getPlayingSongDetail(); loadSongsDetails(audioInfo); if (txt_timetotal != null) { long duration = Long.valueOf(audioInfo.getDuration()); txt_timetotal.setText(duration != 0 ? String.format("%d:%02d", duration / 60, duration % 60) : "-:--"); } } } private void updateProgress(SongDetail mSongDetail) { if (audio_progress != null && mSongDetail != null) { // When SeekBar Draging Don't Show Progress if (!isDragingStart) { // Progress Value comming in point it range 0 to 1 audio_progress.setValue((int) (mSongDetail.audioProgress * 100)); } String timeString = String.format("%d:%02d", mSongDetail.audioProgressSec / 60, mSongDetail.audioProgressSec % 60); txt_timeprogress.setText(timeString); } } private void PlayPauseEvent(View v) { if (MediaController.getInstance().isAudioPaused()) { MediaController.getInstance().playAudio(MediaController.getInstance().getPlayingSongDetail()); ((PlayPauseView) v).Play(); } else { MediaController.getInstance().pauseAudio(MediaController.getInstance().getPlayingSongDetail()); ((PlayPauseView) v).Pause(); } } @Override public void onValueChanged(int value) { MediaController.getInstance().seekToProgress(MediaController.getInstance().getPlayingSongDetail(), (float) value / 100); } private void fabanim() { ObjectAnimator anim = ObjectAnimator.ofFloat(fab_button, "scaleX", 0.0f, 1.0f); ObjectAnimator anim1 = ObjectAnimator.ofFloat(fab_button, "scaleY", 0.0f, 1.0f); ObjectAnimator anim2 = ObjectAnimator.ofFloat(fab_button, "alpha", 0.0f, 1.0f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(anim, anim1, anim2); animatorSet.setDuration(500); animatorSet.start(); } }