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) { } }