/*
* 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.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.SeekBar;
import android.widget.TextView;
import com.dmplayer.R;
import com.dmplayer.adapter.DrawerAdapter;
import com.dmplayer.fragments.FragmentAllSongs;
import com.dmplayer.fragments.FragmentEqualizer;
import com.dmplayer.fragments.FragmentFeedBack;
import com.dmplayer.fragments.FragmentFevorite;
import com.dmplayer.fragments.FragmentLibrary;
import com.dmplayer.fragments.FragmentSettings;
import com.dmplayer.manager.MediaController;
import com.dmplayer.manager.MusicPreferance;
import com.dmplayer.manager.NotificationManager;
import com.dmplayer.models.DrawerItem;
import com.dmplayer.models.SongDetail;
import com.dmplayer.phonemidea.DMPlayerUtility;
import com.dmplayer.recyclerviewutils.ItemClickSupport;
import com.dmplayer.slidinguppanelhelper.SlidingUpPanelLayout;
import com.dmplayer.uicomponent.PlayPauseView;
import com.dmplayer.uicomponent.Slider;
import com.dmplayer.utility.LogWriter;
import com.dmplayer.utility.SystemBarTintManager;
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.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class DMPlayerBaseActivity extends ActionBarActivity implements View.OnClickListener, Slider.OnValueChangedListener,
NotificationManager.NotificationCenterDelegate {
private static final String TAG = "ActivityDMPlayerBase";
private Context context;
private SharedPreferences sharedPreferences;
private ActionBarDrawerToggle mDrawerToggle;
private int theme;
private FrameLayout statusBar;
private Toolbar toolbar;
private DrawerLayout mDrawerLayout;
private RecyclerView recyclerViewDrawer;
private RecyclerView.Adapter adapterDrawer;
private SlidingUpPanelLayout mLayout;
private RelativeLayout slidepanelchildtwo_topviewone;
private RelativeLayout slidepanelchildtwo_topviewtwo;
private boolean isExpand = false;
private DisplayImageOptions options;
private ImageLoader imageLoader = ImageLoader.getInstance();
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;
@Override
protected void onCreate(Bundle savedInstanceState) {
//Set your theme first
context = DMPlayerBaseActivity.this;
theme();
//Set your Layout view
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dmplayerbase);
//System bar color set
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
// systembartiteniam();
}
toolbarStatusBar();
navigationDrawer();
initiSlidingUpPanel();
setFragment(0);
getIntentData();
}
@Override
protected void onResume() {
super.onResume();
addObserver();
loadAlreadyPlayng();
}
@Override
protected void onPause() {
super.onPause();
removeObserver();
}
@Override
protected void onDestroy() {
removeObserver();
if (MediaController.getInstance().isAudioPaused()) {
MediaController.getInstance().cleanupPlayer(context, true, true);
}
super.onDestroy();
}
@Override
public void onBackPressed() {
if (isExpand) {
mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
} else {
super.onBackPressed();
overridePendingTransition(0, 0);
finish();
}
}
@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;
}
}
/**
* Get intent data from music choose option
*/
private void getIntentData() {
try {
Uri data = getIntent().getData();
if (data != null) {
if (data.getScheme().equalsIgnoreCase("file")) {
String path = data.getPath().toString();
if (!TextUtils.isEmpty(path)) {
MediaController.getInstance().cleanupPlayer(context, true, true);
MusicPreferance.getPlaylist(context, path);
updateTitle(false);
MediaController.getInstance().playAudio(MusicPreferance.playingSongDetail);
mLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED);
}
}
if (data.getScheme().equalsIgnoreCase("http"))
LogWriter.info(TAG, data.getPath().toString());
if (data.getScheme().equalsIgnoreCase("content"))
LogWriter.info(TAG, data.getPath().toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void toolbarStatusBar() {
statusBar = (FrameLayout) findViewById(R.id.statusBar);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
}
public void navigationDrawer() {
// Cast drawer
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
// Fix right margin to 56dp (portrait)
View drawer = findViewById(R.id.scrimInsetsFrameLayout);
ViewGroup.LayoutParams layoutParams = drawer.getLayoutParams();
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
layoutParams.width = displayMetrics.widthPixels - (56 * Math.round(displayMetrics.density));
}
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
layoutParams.width = displayMetrics.widthPixels + (20 * Math.round(displayMetrics.density)) - displayMetrics.widthPixels / 2;
}
// Setup Drawer Icon
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close);
mDrawerLayout.setDrawerListener(mDrawerToggle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mDrawerToggle.syncState();
// statusBar color behind navigation drawer
TypedValue typedValueStatusBarColor = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValueStatusBarColor, true);
final int colorStatusBar = typedValueStatusBarColor.data;
mDrawerLayout.setStatusBarBackgroundColor(colorStatusBar);
// Setup RecyclerView inside drawer
final TypedValue typedValue = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);
final int color = typedValue.data;
recyclerViewDrawer = (RecyclerView) findViewById(R.id.recyclerViewDrawer);
recyclerViewDrawer.setHasFixedSize(true);
recyclerViewDrawer.setLayoutManager(new LinearLayoutManager(DMPlayerBaseActivity.this));
ArrayList<DrawerItem> drawerItems = new ArrayList<>();
final String[] drawerTitles = getResources().getStringArray(R.array.drawer);
final TypedArray drawerIcons = getResources().obtainTypedArray(R.array.drawerIcons);
for (int i = 0; i < drawerTitles.length; i++) {
drawerItems.add(new DrawerItem(drawerTitles[i], drawerIcons.getDrawable(i)));
}
drawerIcons.recycle();
adapterDrawer = new DrawerAdapter(drawerItems);
recyclerViewDrawer.setAdapter(adapterDrawer);
recyclerViewDrawer.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
for (int i = 0; i < drawerTitles.length; i++) {
if (i == sharedPreferences.getInt("FRAGMENT", 0)) {
ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon);
TextView textViewDrawerTitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemTitle);
imageViewDrawerIcon.setColorFilter(color);
if (Build.VERSION.SDK_INT > 15) {
imageViewDrawerIcon.setImageAlpha(255);
} else {
imageViewDrawerIcon.setAlpha(255);
}
textViewDrawerTitle.setTextColor(color);
RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem);
TypedValue typedValueDrawerSelected = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true);
int colorDrawerItemSelected = typedValueDrawerSelected.data;
colorDrawerItemSelected = (colorDrawerItemSelected & 0x00FFFFFF) | 0x30000000;
relativeLayoutDrawerItem.setBackgroundColor(colorDrawerItemSelected);
} else {
ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon);
TextView textViewDrawerTitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemTitle);
imageViewDrawerIcon.setColorFilter(getResources().getColor(R.color.md_text));
if (Build.VERSION.SDK_INT > 15) {
imageViewDrawerIcon.setImageAlpha(138);
} else {
imageViewDrawerIcon.setAlpha(138);
}
textViewDrawerTitle.setTextColor(getResources().getColor(R.color.md_text));
RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem);
relativeLayoutDrawerItem.setBackgroundColor(getResources().getColor(R.color.md_white_1000));
}
}
// unregister listener (this is important)
recyclerViewDrawer.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
// RecyclerView item listener.
ItemClickSupport itemClickSupport = ItemClickSupport.addTo(recyclerViewDrawer);
itemClickSupport.setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
@Override
public void onItemClick(RecyclerView parent, View view, final int position, long id) {
for (int i = 0; i < drawerTitles.length; i++) {
if (i == position) {
ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon);
TextView textViewDrawerTitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemTitle);
imageViewDrawerIcon.setColorFilter(color);
if (Build.VERSION.SDK_INT > 15) {
imageViewDrawerIcon.setImageAlpha(255);
} else {
imageViewDrawerIcon.setAlpha(255);
}
textViewDrawerTitle.setTextColor(color);
RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem);
TypedValue typedValueDrawerSelected = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true);
int colorDrawerItemSelected = typedValueDrawerSelected.data;
colorDrawerItemSelected = (colorDrawerItemSelected & 0x00FFFFFF) | 0x30000000;
relativeLayoutDrawerItem.setBackgroundColor(colorDrawerItemSelected);
} else {
ImageView imageViewDrawerIcon = (ImageView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.imageViewDrawerIcon);
TextView textViewDrawerTitle = (TextView) recyclerViewDrawer.getChildAt(i).findViewById(R.id.textViewDrawerItemTitle);
imageViewDrawerIcon.setColorFilter(getResources().getColor(R.color.md_text));
if (Build.VERSION.SDK_INT > 15) {
imageViewDrawerIcon.setImageAlpha(138);
} else {
imageViewDrawerIcon.setAlpha(138);
}
textViewDrawerTitle.setTextColor(getResources().getColor(R.color.md_text));
RelativeLayout relativeLayoutDrawerItem = (RelativeLayout) recyclerViewDrawer.getChildAt(i).findViewById(R.id.relativeLayoutDrawerItem);
relativeLayoutDrawerItem.setBackgroundColor(getResources().getColor(R.color.md_white_1000));
}
}
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after some time
setFragment(position);
if (isExpand) {
mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
}
}
}, 250);
mDrawerLayout.closeDrawers();
}
});
}
private void initiSlidingUpPanel() {
mLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);
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());
MediaController.getInstance().shuffleList(MusicPreferance.playlist);
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");
}
});
}
public void setFragment(int position) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (position) {
case 0:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentAllSongs fragmentallsongs = new FragmentAllSongs();
fragmentTransaction.replace(R.id.fragment, fragmentallsongs);
fragmentTransaction.commit();
toolbar.setTitle("All Songs");
break;
case 1:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentLibrary fragmentlibrary = new FragmentLibrary();
fragmentTransaction.replace(R.id.fragment, fragmentlibrary);
fragmentTransaction.commit();
toolbar.setTitle("My Library");
break;
case 2:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentFevorite fragmentfevorite = new FragmentFevorite();
fragmentTransaction.replace(R.id.fragment, fragmentfevorite);
fragmentTransaction.commit();
toolbar.setTitle("Favorite");
break;
case 3:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentSettings fragmentsettings = new FragmentSettings();
fragmentTransaction.replace(R.id.fragment, fragmentsettings);
fragmentTransaction.commit();
toolbar.setTitle("Settings");
break;
case 4:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentEqualizer fragmentequalizer = new FragmentEqualizer();
fragmentTransaction.replace(R.id.fragment, fragmentequalizer);
fragmentTransaction.commit();
toolbar.setTitle("Equilizer");
break;
case 5:
sharedPreferences.edit().putInt("FRAGMENT", position).apply();
FragmentFeedBack fragmentfeedback = new FragmentFeedBack();
fragmentTransaction.replace(R.id.fragment, fragmentfeedback);
fragmentTransaction.commit();
toolbar.setTitle("Send feedback");
break;
}
}
//Catch theme changed from settings
public void theme() {
sharedPreferences = getSharedPreferences("VALUES", Context.MODE_PRIVATE);
theme = sharedPreferences.getInt("THEME", 0);
DMPlayerUtility.settingTheme(context, theme);
}
private void loadImageLoaderOption() {
this.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();
}
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);
}
}
}
}
private void loadAlreadyPlayng() {
SongDetail mSongDetail = MusicPreferance.getLastSong(context);
ArrayList<SongDetail> playlist = MusicPreferance.getPlaylist(context);
if (mSongDetail != null) {
updateTitle(false);
}
MediaController.getInstance().checkIsFavorite(context, mSongDetail, img_Favorite);
}
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) {
// 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 systembartiteniam() {
try {
setTranslucentStatus(true);
TypedValue typedValueStatusBarColor = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimaryDark, typedValueStatusBarColor, true);
final int colorStatusBar = typedValueStatusBarColor.data;
SystemBarTintManager tintManager = new SystemBarTintManager(this);
tintManager.setStatusBarTintEnabled(true);
tintManager.setStatusBarTintColor(colorStatusBar);
} catch (Exception e) {
e.printStackTrace();
}
}
private void setTranslucentStatus(boolean on) {
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
if (on) {
winParams.flags |= bits;
} else {
winParams.flags &= ~bits;
}
win.setAttributes(winParams);
}
}