package com.nf2m.activity;
import android.Manifest;
import android.annotation.TargetApi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.transition.Slide;
import android.transition.Transition;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.nf2m.R;
import com.nf2m.fragment.AlbumAlbumFragment;
import com.nf2m.fragment.AlbumsFragment;
import com.nf2m.fragment.ArtistsFragment;
import com.nf2m.fragment.BaseFragment;
import com.nf2m.fragment.FavoritesListFragment;
import com.nf2m.fragment.NowPlayingFragment;
import com.nf2m.fragment.NowPlayingListFragment;
import com.nf2m.fragment.PlaylistsFragment;
import com.nf2m.fragment.RecentlyAddedFragment;
import com.nf2m.fragment.SettingsFragment;
import com.nf2m.fragment.SongSongFragment;
import com.nf2m.listener.OnItemClickListener;
import com.nf2m.service.MediaPlayerService;
import com.startapp.android.publish.StartAppSDK;
import com.startapp.android.publish.banner.BannerListener;
import com.startapp.android.publish.banner.bannerstandard.BannerStandard;
import java.util.HashMap;
import butterknife.Bind;
import butterknife.ButterKnife;
public class TarMediaPlayerActivity extends AppCompatActivity implements OnItemClickListener {
private static final String ACCOUNT_ID = "103862709";
private static final String APP_ID = "203730967";
private static final int NAV_ITEM_NOW_PLAYING = 1;
private static final int NAV_ITEM_NOW_PLAYING_LIST = 2;
private static final int NAV_ITEM_FAVORITES_LIST = 3;
private static final int NAV_ITEM_RECENTLY_ADDED_LIST = 4;
private static final int NAV_ITEM_SONGS = 5;
private static final int NAV_ITEM_ALBUMS = 6;
private static final int NAV_ITEM_ARTISTS = 7;
private static final int NAV_ITEM_PLAYLISTS = 8;
private static final int NAV_ITEM_SETTINGS = 9;
private static final int NAV_ITEM_EXIT = 10;
public static final String ITEM_STATE_OTHER = "other";
public static final String ITEM_STATE_MAIN = "main";
public static final String ITEM_STATE_NOWPLAYLIST = "nowplaylist";
public static final String ITEM_STATE_NOW = "now";
public static final String ACTION_FINISH = "action_finish";
private static final int MY_PERMISSIONS_REQUEST = 0;
private final HashMap<Integer, Boolean> selectionList = new HashMap<>();
/**
* Fragment managing the behaviors, interactions and presentation of the navigation drawer.
*/
/**
* Used to store the last screen title. For use in {@link #restoreActionBar()}.
*/
public CharSequence mTitle;
public static String item_state;
public static Intent serviceIntent;
public static boolean isUpdateCustomSong;
public static Toolbar toolbar;
public static Slide slideTransition;
public static int sdkInt;
public static View fabPlay;
private NavigationAdapter adapter;
public static boolean isActivity;
private boolean isExit;
private BannerStandard startAppBanner2;
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equalsIgnoreCase(ACTION_FINISH)) {
isExit = true;
finish();
}
}
};
private boolean isHıdeBanner;
public boolean onNavigationItemSelected(int position) {
//onTrimMemory(TRIM_MEMORY_UI_HIDDEN);
// update the main content by replacing fragments
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
BaseFragment.isAlbumSong = false;
BaseFragment.isArtist = false;
selectionList.clear();
setDefaultColor();
switch (position) {
case NAV_ITEM_NOW_PLAYING:
startAppBanner2.hideBanner();
selectionList.put(NAV_ITEM_NOW_PLAYING, true);
item_state = ITEM_STATE_NOWPLAYLIST;
NowPlayingFragment nowPlayingFragment = new NowPlayingFragment();
transaction.replace(R.id.container, nowPlayingFragment).commit();
break;
case NAV_ITEM_NOW_PLAYING_LIST:
initBanner();
selectionList.put(NAV_ITEM_NOW_PLAYING_LIST, true);
item_state = ITEM_STATE_MAIN;
NowPlayingListFragment nowPlayingListFragment = new NowPlayingListFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(nowPlayingListFragment);
}
transaction.replace(R.id.container, nowPlayingListFragment);
transaction.commit();
break;
case NAV_ITEM_FAVORITES_LIST:
initBanner();
selectionList.put(NAV_ITEM_FAVORITES_LIST, true);
item_state = ITEM_STATE_OTHER;
FavoritesListFragment favoritesListFragment = new FavoritesListFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(favoritesListFragment);
}
transaction.replace(R.id.container, favoritesListFragment);
transaction.commit();
break;
case NAV_ITEM_RECENTLY_ADDED_LIST:
initBanner();
selectionList.put(NAV_ITEM_RECENTLY_ADDED_LIST, true);
item_state = ITEM_STATE_OTHER;
RecentlyAddedFragment recentlyAddedFragment = new RecentlyAddedFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(recentlyAddedFragment);
}
transaction.replace(R.id.container, recentlyAddedFragment);
transaction.commit();
break;
case NAV_ITEM_SONGS:
initBanner();
selectionList.put(NAV_ITEM_SONGS, true);
item_state = ITEM_STATE_OTHER;
SongSongFragment songFragment = new SongSongFragment();
songFragment.setRetainInstance(true);
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(songFragment);
}
transaction.replace(R.id.container, songFragment);
transaction.commit();
break;
case NAV_ITEM_ALBUMS:
initBanner();
selectionList.put(NAV_ITEM_ALBUMS, true);
item_state = ITEM_STATE_OTHER;
AlbumsFragment albumsFragment = new AlbumAlbumFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(albumsFragment);
}
transaction.replace(R.id.container, albumsFragment);
transaction.commit();
break;
case NAV_ITEM_ARTISTS:
initBanner();
selectionList.put(NAV_ITEM_ARTISTS, true);
item_state = ITEM_STATE_OTHER;
ArtistsFragment artistsFragment = new ArtistsFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(artistsFragment);
}
transaction.replace(R.id.container, artistsFragment);
transaction.commit();
break;
case NAV_ITEM_PLAYLISTS:
initBanner();
selectionList.put(NAV_ITEM_PLAYLISTS, true);
item_state = ITEM_STATE_OTHER;
PlaylistsFragment playlistsFragment = new PlaylistsFragment();
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
initAnim(playlistsFragment);
}
transaction.replace(R.id.container, playlistsFragment);
transaction.commit();
break;
case NAV_ITEM_SETTINGS:
initBanner();
selectionList.put(NAV_ITEM_SETTINGS, true);
item_state = ITEM_STATE_OTHER;
SettingsFragment settingsFragment = new SettingsFragment();
transaction.replace(R.id.container, settingsFragment).commit();
break;
case NAV_ITEM_EXIT:
isExit = true;
finish();
break;
}
adapter.notifyDataSetChanged();
return true;
}
private void initBanner() {
if (isHıdeBanner) {
startAppBanner2.hideBanner();
} else {
startAppBanner2.showBanner();
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void initAnim(Fragment fragment) {
slideTransition = new Slide();
slideTransition.addListener(new Transition.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
}
@Override
public void onTransitionEnd(Transition transition) {
}
@Override
public void onTransitionCancel(Transition transition) {
}
@Override
public void onTransitionPause(Transition transition) {
}
@Override
public void onTransitionResume(Transition transition) {
}
});
slideTransition.setSlideEdge(Gravity.LEFT);
slideTransition.setDuration(200);
fragment.setEnterTransition(slideTransition);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StartAppSDK.init(this, ACCOUNT_ID, APP_ID, true);
isActivity = true;
serviceIntent = new Intent(this, MediaPlayerService.class);
sdkInt = Build.VERSION.SDK_INT;
ButterKnife.bind(this);
setContentView(R.layout.tablet_main_layout);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
RecyclerView rvNavList = (RecyclerView) findViewById(R.id.rvNavList);
adapter = new NavigationAdapter();
adapter.setOnItemClickListener(this);
rvNavList.setAdapter(adapter);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
linearLayoutManager.scrollToPosition(0);
rvNavList.setLayoutManager(linearLayoutManager);
final BannerStandard startAppBanner = (BannerStandard) findViewById(R.id.startAppBanner);
startAppBanner.setBannerListener(new BannerListener() {
@Override
public void onReceiveAd(View view) {
startAppBanner.showBanner();
}
@Override
public void onFailedToReceiveAd(View view) {
startAppBanner.hideBanner();
}
@Override
public void onClick(View view) {
}
});
startAppBanner.showBanner();
startAppBanner2 = (BannerStandard) findViewById(R.id.startAppBanner2);
startAppBanner2.setBannerListener(new BannerListener() {
@Override
public void onReceiveAd(View view) {
isHıdeBanner = false;
}
@Override
public void onFailedToReceiveAd(View view) {
isHıdeBanner = true;
}
@Override
public void onClick(View view) {
}
});
startAppBanner2.showBanner();
initReceiver();
restoreActionBar();
fabPlay = findViewById(R.id.idFabPlay);
if (sdkInt == Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.INTERNET},
MY_PERMISSIONS_REQUEST);
} else {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
}
} else {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
}
}
private void initReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(ACTION_FINISH);
registerReceiver(receiver, intentFilter);
}
@Override
public void onItemClick(int position) {
onNavigationItemSelected(position);
}
public class NavigationAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int TYPE_HEADER = 0;
private static final int TYPE_ITEM = 1;
private OnItemClickListener clickListener;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_HEADER) {
View view = getLayoutInflater().inflate(R.layout.tablet_nav_header, parent, false);
return new NavHeaderViewHolder(view);
} else if (viewType == TYPE_ITEM) {
View view = getLayoutInflater().inflate(R.layout.tablet_nav_item, parent, false);
return new NavItemViewHolder(view, clickListener);
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (holder instanceof NavItemViewHolder) {
NavItemViewHolder navHolder = (NavItemViewHolder) holder;
switch (position) {
case NAV_ITEM_NOW_PLAYING:
navHolder.tvNavText.setText(getString(R.string.title_now_playing));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_play));
break;
case NAV_ITEM_NOW_PLAYING_LIST:
navHolder.tvNavText.setText(getString(R.string.item_now_playing_list));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_playlist));
break;
case NAV_ITEM_FAVORITES_LIST:
navHolder.tvNavText.setText(getString(R.string.title_favorites_list));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_favorite));
break;
case NAV_ITEM_RECENTLY_ADDED_LIST:
navHolder.tvNavText.setText(getString(R.string.title_recently_added_list));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_recently_added));
break;
case NAV_ITEM_SONGS:
navHolder.tvNavText.setText(getString(R.string.title_songs));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_song));
break;
case NAV_ITEM_ALBUMS:
navHolder.tvNavText.setText(getString(R.string.title_albums));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_album));
break;
case NAV_ITEM_ARTISTS:
navHolder.tvNavText.setText(getString(R.string.title_artists));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_artist));
break;
case NAV_ITEM_PLAYLISTS:
navHolder.tvNavText.setText(getString(R.string.title_playlists));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_playlist));
break;
case NAV_ITEM_SETTINGS:
navHolder.tvNavText.setText(getString(R.string.title_settings));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_settings));
break;
case NAV_ITEM_EXIT:
navHolder.tvNavText.setText(getString(R.string.title_exit));
navHolder.ivNavImage.setImageDrawable(getResources().getDrawable(R.drawable.ic_exit));
break;
}
if (isPositionChecked(position)) {
navHolder.tvNavText.setTextColor(getResources().getColor(R.color.primary_dark));
navHolder.ivNavImage.setColorFilter(getResources().getColor(R.color.primary_dark));
} else {
navHolder.tvNavText.setTextColor(getResources().getColor(R.color.secondary_text));
navHolder.ivNavImage.setColorFilter(getResources().getColor(R.color.primary_text));
}
}
}
private boolean isPositionChecked(int position) {
System.out.println(selectionList.size());
return selectionList.get(position) != null;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_HEADER;
}
return TYPE_ITEM;
}
@Override
public int getItemCount() {
return 11;
}
public void setOnItemClickListener(final OnItemClickListener clickListener) {
this.clickListener = clickListener;
}
class NavItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private final OnItemClickListener clickListener;
public
@Bind(R.id.tvNavText)
TextView tvNavText;
public
@Bind(R.id.ivNavImage)
ImageView ivNavImage;
public NavItemViewHolder(View itemView, OnItemClickListener clickListener) {
super(itemView);
this.clickListener = clickListener;
ButterKnife.bind(this, itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (clickListener != null) {
clickListener.onItemClick(getAdapterPosition());
}
}
}
class NavHeaderViewHolder extends RecyclerView.ViewHolder {
public NavHeaderViewHolder(View itemView) {
super(itemView);
}
}
}
public void restoreActionBar() {
if (mTitle != null) {
toolbar.setTitle(mTitle);
}
}
public void setActionBarTitle(String title) {
mTitle = title;
restoreActionBar();
}
@Override
protected void onDestroy() {
if (!MediaPlayerService.isPlaying || isExit) {
stopService(serviceIntent);
}
isActivity = false;
isUpdateCustomSong = false;
unregisterReceiver(receiver);
super.onDestroy();
}
@Override
public void onBackPressed() {
BaseFragment.isAlbumSong = false;
BaseFragment.isArtist = false;
if (getSupportFragmentManager().getBackStackEntryCount() >= 1) {
if (item_state.equalsIgnoreCase(ITEM_STATE_NOW)) {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
} else {
super.onBackPressed();
}
} else {
if (item_state.equalsIgnoreCase(ITEM_STATE_MAIN)) {
finish();
} else if (item_state.equalsIgnoreCase(ITEM_STATE_NOW)) {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
} else if (item_state.equalsIgnoreCase(ITEM_STATE_NOWPLAYLIST)) {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING_LIST);
} else if (item_state.equalsIgnoreCase(ITEM_STATE_OTHER)) {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
}
}
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void setDefaultColor() {
if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setStatusBarColor(getResources().getColor(R.color.primary_dark));
TarMediaPlayerActivity.toolbar.setBackgroundColor(getResources().getColor(R.color.primary));
} else {
TarMediaPlayerActivity.toolbar.setBackgroundColor(getResources().getColor(R.color.primary));
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
onNavigationItemSelected(NAV_ITEM_NOW_PLAYING);
} else {
finish();
}
}
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
}
}