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.design.widget.NavigationView; import android.support.v4.app.ActivityCompat; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.transition.Slide; import android.transition.Transition; import android.view.Gravity; import android.view.MenuItem; import android.view.View; 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.service.MediaPlayerService; import com.startapp.android.publish.StartAppSDK; import com.startapp.android.publish.banner.BannerListener; import com.startapp.android.publish.banner.bannerstandard.BannerStandard; import butterknife.ButterKnife; @TargetApi(Build.VERSION_CODES.LOLLIPOP) public class TarMediaPlayerActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { private static final int MY_PERMISSIONS_REQUEST = 0; public static final String ITEM_STATE_OTHER = "other"; public static final String ITEM_STATE_NOWPLAYLIST = "nowplaylist"; public static final String ITEM_STATE_NOW = "now"; private static final String ITEM_STATE_MAIN = "main"; private static final String ACCOUNT_ID = "103862709"; private static final java.lang.String APP_ID = "203730967"; public static final String ACTION_FINISH = "action_finish"; /** * Fragment managing the behaviors, interactions and presentation of the navigation drawer. */ /** * Used to store the last screen title. For use in {@link #restoreActionBar()}. */ private CharSequence mTitle; public static String item_state; public static Intent serviceIntent; private NavigationView navigationView; public static Toolbar toolbar; public static Slide slideTransition; public static int sdkInt; public static boolean isActivity; private boolean isExit; private BannerStandard startAppBanner2; @NonNull private final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, @NonNull Intent intent) { if (intent.getAction().equalsIgnoreCase(ACTION_FINISH)) { isExit = true; finish(); } } }; private boolean isHıdeBanner; @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { //onTrimMemory(TRIM_MEMORY_UI_HIDDEN); // update the main content by replacing fragments getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); BaseFragment.isAlbumSong = false; BaseFragment.isArtist = false; setDefaultColor(); switch (item.getItemId()) { case R.id.nm_now_playing: startAppBanner2.hideBanner(); item_state = ITEM_STATE_NOWPLAYLIST; NowPlayingFragment nowPlayingFragment = new NowPlayingFragment(); transaction.replace(R.id.container, nowPlayingFragment).commit(); break; case R.id.nm_now_playing_list: initBanner(); NowPlayingListFragment nowPlayingListFragment = new NowPlayingListFragment(); if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) { initAnim(nowPlayingListFragment); } item_state = ITEM_STATE_MAIN; transaction.replace(R.id.container, nowPlayingListFragment); transaction.commit(); break; case R.id.nm_favorites_list: initBanner(); 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 R.id.nm_recently_added_list: initBanner(); 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 R.id.nm_library_song: initBanner(); 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 R.id.nm_album: initBanner(); 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 R.id.nm_artist: initBanner(); 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 R.id.nm_playlist: initBanner(); 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 R.id.nm_settings: initBanner(); item_state = ITEM_STATE_OTHER; SettingsFragment settingsFragment = new SettingsFragment(); transaction.replace(R.id.container, settingsFragment).commit(); break; case R.id.nm_exit: isExit = true; finish(); break; } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); drawer.closeDrawer(GravityCompat.START); return true; } private void initBanner() { if (isHıdeBanner) { startAppBanner2.hideBanner(); } else { startAppBanner2.showBanner(); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void initAnim(@NonNull 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.activity_main); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.setDrawerListener(toggle); toggle.syncState(); initReceiver(); navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); 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(); restoreActionBar(); if (sdkInt >= Build.VERSION_CODES.M) { if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST); } else { setItemChecked(R.id.nm_now_playing); } } else { setItemChecked(R.id.nm_now_playing); } } private void initReceiver() { IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ACTION_FINISH); registerReceiver(receiver, intentFilter); } private void setItemChecked(int id) { navigationView.setCheckedItem(id); onNavigationItemSelected(navigationView.getMenu().findItem(id)); } @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if (drawer.isDrawerOpen(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { BaseFragment.isAlbumSong = false; BaseFragment.isArtist = false; if (getSupportFragmentManager().getBackStackEntryCount() >= 1) { if (item_state.equalsIgnoreCase(ITEM_STATE_NOW)) { setItemChecked(R.id.nm_now_playing); } else { super.onBackPressed(); } } else { if (item_state.equalsIgnoreCase(ITEM_STATE_MAIN)) { finish(); } else if (item_state.equalsIgnoreCase(ITEM_STATE_NOW)) { setItemChecked(R.id.nm_now_playing); } else if (item_state.equalsIgnoreCase(ITEM_STATE_NOWPLAYLIST)) { setItemChecked(R.id.nm_now_playing_list); } else if (item_state.equalsIgnoreCase(ITEM_STATE_OTHER)) { setItemChecked(R.id.nm_now_playing); } } } } private void setDefaultColor() { if (sdkInt >= Build.VERSION_CODES.LOLLIPOP) { getWindow().setStatusBarColor(getColorCode(R.color.primary_dark)); TarMediaPlayerActivity.toolbar.setBackgroundColor(getColorCode(R.color.primary)); } else { TarMediaPlayerActivity.toolbar.setBackgroundColor(getColorCode(R.color.primary)); } } private int getColorCode(int id) { return ContextCompat.getColor(getApplicationContext(), id); } public void restoreActionBar() { if (mTitle != null) { toolbar.setTitle(mTitle); } } public void setActionBarTitle(String title) { mTitle = title; restoreActionBar(); } @Override protected void onPause() { super.onPause(); } @Override protected void onDestroy() { if (!MediaPlayerService.isPlaying || isExit) { stopService(serviceIntent); } isActivity = false; unregisterReceiver(receiver); super.onDestroy(); } @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) { setItemChecked(R.id.nm_now_playing); } else { finish(); } } } } @Override protected void onSaveInstanceState(Bundle outState) { } }