package com.konka.music.ui.activity;
import java.util.ArrayList;
import android.content.Intent;
import android.os.Bundle;
import android.os.StrictMode;
import android.os.StrictMode.VmPolicy;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager.BackStackEntry;
import android.support.v4.app.FragmentTransaction;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import com.konka.music.R;
import com.konka.music.pojo.MusicInfo;
import com.konka.music.service.MusicInfoManager;
import com.konka.music.ui.fragment.MainFragment;
import com.konka.music.ui.fragment.SearchFragment;
import com.konka.music.ui.fragment.downloadmanager.DownloadParentFragment;
import com.konka.music.ui.widget.KGSeekBar;
import com.konka.music.util.AnimationUtil;
import com.konka.music.util.FragmentManagerUtil;
import com.konka.music.util.ViewTag;
import com.konka.music.util.ViewUtility;
public class MainActivity extends BaseActivity implements OnSeekBarChangeListener, OnClickListener {
public MainViewHolder mainViewHolder = new MainViewHolder();
private boolean DEVELOPER_MODE = false;
MainFragment mainFragment = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initKBaseViewHolder(mainViewHolder);
mainFragment = new MainFragment();
FragmentManagerUtil.swichFragment(getSupportFragmentManager(), mainFragment, false);
if (DEVELOPER_MODE) {
StrictMode.setVmPolicy(new VmPolicy.Builder()//
.detectLeakedSqlLiteObjects()//
.detectLeakedClosableObjects()//
.detectActivityLeaks()//
.detectAll()//
.build());
}
MusicInfoManager.startService(this.getApplicationContext(), "dddd");
onNewIntent(getIntent());
}
private void reasonIntentToSwitchFragment(Intent intent) {
Bundle extras = intent.getExtras();
if (extras.containsKey("fname")) {
String fname = extras.getString("fname");
Bundle bundle = intent.getExtras().getBundle("bundle");
Fragment fragment = Fragment.instantiate(this, fname, bundle);
FragmentManagerUtil.swichFragment(getSupportFragmentManager(), fragment, true);
}
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
String action = intent.getAction();
if (TextUtils.isEmpty(action)) {
return;
}
switch (action) {
case "swichFragment":
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count > 0) {
BackStackEntry backStackEntry = getSupportFragmentManager().getBackStackEntryAt(count - 1);
String backStackName = backStackEntry.getName();
if (!DownloadParentFragment.TAG.equals(backStackName)) {
reasonIntentToSwitchFragment(intent);
}
} else {
reasonIntentToSwitchFragment(intent);
}
break;
default:
break;
}
}
@Override
protected void onResume() {
super.onResume();
initPlaybuttonView(getMusicInfo());
}
private void initKBaseViewHolder(MainViewHolder viewHolder) {
viewHolder.playing_bar_toggle = ViewUtility.findViewById(this, R.id.playing_bar_toggle, this);
viewHolder.playing_bar_toggle.setTag(ViewTag.PLAY);
viewHolder.playing_bar_albumart = ViewUtility.findViewById(this, R.id.playing_bar_albumart, this);
viewHolder.playing_bar_next = ViewUtility.findViewById(this, R.id.playing_bar_next, this);
viewHolder.playing_bar_next.setTag(ViewTag.NEXT);
viewHolder.playing_bar_seeker = ViewUtility.findViewById(this, R.id.playing_bar_seeker);
viewHolder.playing_bar_seeker.setOnSeekBarChangeListener(this);
viewHolder.playing_bar_seeker.setPreventTapping(true); // konka-wangxu-20141216-禁止点击
viewHolder.playing_bar_song_name = ViewUtility.findViewById(this, R.id.playing_bar_song_name);
// viewHolder.playing_bar_clickable_bg_flash = ViewUtility.findViewById(this, R.id.playing_bar_clickable_bg_flash, this);
viewHolder.insert_music_note = ViewUtility.findViewById(this, R.id.insert_music_note);
viewHolder.playing_bar_singer_name = ViewUtility.findViewById(this, R.id.playing_bar_singer_name);
ViewUtility.findViewById(this, R.id.playing_bar_clickable_bg, this);
}
@Override
public void onServiceBindComplete() {
super.onServiceBindComplete();
initPlaybuttonView(getMusicInfo());
}
public class MainViewHolder {
public ImageButton playing_bar_toggle;
public ImageButton playing_bar_next;
public TextView playing_bar_song_name;
public KGSeekBar playing_bar_seeker;
public ImageView playing_bar_albumart;// 小图片
// public View playing_bar_clickable_bg_flash;
public ImageView insert_music_note;
public TextView playing_bar_singer_name;
}
@Override
public void onMusicBufferingUpdateProgress(int progress) {
super.onMusicBufferingUpdateProgress(progress);
mainViewHolder.playing_bar_seeker.setSecondaryProgress(progress);
}
@Override
public void onMusicPlaybackProgress(int progress) {
super.onMusicPlaybackProgress(progress);
mainViewHolder.playing_bar_seeker.setProgress(progress);
}
@Override
public void onMusicPause() {
super.onMusicPause();
updataView(R.drawable.ic_playing_bar_play);
}
/**
* 第一次初始化view状态
*/
private void initPlaybuttonView(MusicInfo musicInfo) {
if (musicInfo != null) {
mainViewHolder.playing_bar_song_name.setText(musicInfo.getMusicname());
mainViewHolder.playing_bar_singer_name.setText(musicInfo.getSinger());
} else {
System.out.println("mainViewHolder=" + mainViewHolder);
System.out.println("mainViewHolder.playing_bar_song_name=" + mainViewHolder.playing_bar_song_name);
mainViewHolder.playing_bar_song_name.setText(getString(R.string.app_name));
mainViewHolder.playing_bar_singer_name.setText(getString(R.string.spread_good_music));
}
updataView(isPlaying() ? R.drawable.ic_playing_bar_pause : R.drawable.ic_playing_bar_play);
mainViewHolder.playing_bar_seeker.setProgress(0);
mainViewHolder.playing_bar_seeker.setSecondaryProgress(0);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.search:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content, new SearchFragment());
ft.commitAllowingStateLoss();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onMusicPaly(MusicInfo musicinfo) {
super.onMusicPaly(musicinfo);
initPlaybuttonView(musicinfo);
// Bitmap bitmap=MusicImage.getImageFromMp3File(musicinfo.getData());
// if(bitmap!=null){
// mainViewHolder.playing_bar_albumart.setImageBitmap(bitmap);
// }else{
// mainViewHolder.playing_bar_albumart.setImageResource(R.drawable.playing_bar_default_avatar);
// }
}
private void updataView(int resId) {
if (mainViewHolder != null && mainViewHolder.playing_bar_toggle != null)
mainViewHolder.playing_bar_toggle.setImageResource(resId);
}
@Override
public void onClick(View v) {
Object tagobj = v.getTag();
if (tagobj != null && tagobj instanceof String) {
onViewTagClick((String) tagobj, null);
}
switch (v.getId()) {
case R.id.playing_bar_clickable_bg:
case R.id.playing_bar_clickable_bg_flash:
case R.id.playing_bar_albumart:
startActivity(new Intent(this, PlayerActivity.class));
break;
}
}
public void playAnimotion_playThisMusic(float fromXDelta, float fromYDelta, final MusicInfo musicInfo) {
AnimationUtil.playAnimotion_playThisMusic(this, fromXDelta, fromYDelta, musicInfo, mainViewHolder.insert_music_note);
}
public void playAnimotion_playAllMusic(float fromXDelta, float fromYDelta, ArrayList<MusicInfo> musicInfos) {
AnimationUtil.playAnimotion_playAllMusic(this, fromXDelta, fromYDelta, musicInfos, mainViewHolder.insert_music_note);
}
public void playAnimotion_insert(float fromXDelta, float fromYDelta) {
AnimationUtil.playAnimotion_insert(this, fromXDelta, fromYDelta, mainViewHolder.insert_music_note);
}
@Override
public void introductionData(MusicInfo musicinfo) {
super.introductionData(musicinfo);
// 有music传人到播放器了,需要initview
initPlaybuttonView(musicinfo);
updataView(R.drawable.ic_playing_bar_pause);
}
private long exitTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode && checkStackZore()) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
// ToastUtil.showToast(MainActivity.this, "再按一次退出程序");
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
return false;
} else {
finish();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
// 播放进度不能比缓冲进度快,没有数据时候不应该拖动
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if (fromUser) {
int secondaryProgress = seekBar.getSecondaryProgress();
if (secondaryProgress > 0) {
if (progress > secondaryProgress) {
seekBar.setProgress(secondaryProgress);
}
} else {
MusicInfo musicInfo = getMusicInfo();
if (musicInfo == null) {
seekBar.setProgress(0);
} else {
if (musicInfo.getData().startsWith("http")) {
seekBar.setProgress(0);
}
;
}
}
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
private boolean checkStackZore() {
return getSupportFragmentManager().getBackStackEntryCount() == 0;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int time = getDuration() * seekBar.getProgress() / 1000;
seekTo(time);
}
@Override
protected void onDestroy() {
super.onDestroy();
mainViewHolder.playing_bar_seeker = null;
mainViewHolder = null;
mainFragment = null;
}
}