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