package com.konka.music.ui.activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import com.konka.music.R; import com.konka.music.util.FileUtils; import com.konka.music.util.MyPreference; import com.konka.music.util.SDCardUtil; import com.konka.music.util.SDCardUtil.CapacityUtil; import com.konka.music.wedget.MusicApplication; /** * @author wangxu * @description 选择缓存歌曲路径 * */ public class SwitchCachePath extends SuperActivity implements OnClickListener{ private LinearLayout mInternalPathLayout, mExternalPathLayout; //内置 , 外置 private TextView mInternalCapacityTxt, mExternalCapacityTxt; //内置总容量, 外置总容量 private TextView mInternalMovieTxt, mExternalMovieTxt; //内置影片容量,外置影片容量 private TextView mInternalOtherTxt, mExternalOtherTxt; //内置其他容量,外置其他容量 private TextView mInternalSurplusTxt, mExternalSurplusTxt; //内置剩余容量,外置剩余容量 private TextView mInternalRadioBtn, mExternalRadioBtn; private ProgressBar mInternalProgressBar, mExternalProgressBar; //内置容量条,外置容量条 private ProgressBar mProgressBar; private String mDownloadPath = ""; private SDCardUtil mSdCardUtil; private CapacityUtil mCapacityUtil1, mCapacityUtil2; private MusicApplication mApplication; private static final String KEY_DOWNLOAD_PATH = "download_path"; private static final int MSG_SHOW_VIEW = 1; private static final int TYPE_INTERNAL = 2; private static final int TYPE_EXTERNAL = 3; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case MSG_SHOW_VIEW: dismissProgress(); showView(); break; default: break; } } }; private void choseSDCardState(boolean internal) { if(internal) { choseInternalSDCardState(); }else { choseExternalSDCardState(); } } private void choseInternalSDCardState() { try { mDownloadPath = mSdCardUtil.getInternalSDPath(); MyPreference.putPref(KEY_DOWNLOAD_PATH, mDownloadPath); mInternalRadioBtn.setEnabled(true); mInternalPathLayout.setClickable(false); mExternalRadioBtn.setEnabled(false); mExternalPathLayout.setClickable(true); }catch(Exception e) { e.printStackTrace(); } } private void choseExternalSDCardState() { try { mDownloadPath = mSdCardUtil.getExternalSDPath(); MyPreference.putPref(KEY_DOWNLOAD_PATH, mDownloadPath); mInternalRadioBtn.setEnabled(false); mInternalPathLayout.setClickable(true); mExternalRadioBtn.setEnabled(true); mExternalPathLayout.setClickable(false); }catch(Exception e) { e.printStackTrace(); } } private void dismissProgress() { if(mProgressBar!=null) mProgressBar.setVisibility(View.GONE); } private int getCurrentType() { if(mSdCardUtil == null) mSdCardUtil = SDCardUtil.getInstance(); return mSdCardUtil.getCurrentSDPath().equals(mSdCardUtil.getInternalSDPath())?TYPE_INTERNAL:TYPE_INTERNAL; } private String getCurrentName() { return getCurrentType()==TYPE_INTERNAL?"手机存储":"SD卡存储"; } private int getNextType() { if(mSdCardUtil == null) mSdCardUtil = SDCardUtil.getInstance(); return mSdCardUtil.getCurrentSDPath().equals(mSdCardUtil.getInternalSDPath())?TYPE_EXTERNAL:TYPE_INTERNAL; } private String getNextName() { return getNextType()==TYPE_INTERNAL?"手机存储":"SD卡存储"; } private void hideInternalView() { mInternalPathLayout.setVisibility(View.GONE); } private void hideExternalView() { mExternalPathLayout.setVisibility(View.GONE); } private boolean isInternalSDCard() { if(mDownloadPath.equals(mSdCardUtil.getInternalSDPath())) return true; return false; } private boolean isExternalSDCard() { if(mDownloadPath.equals(mSdCardUtil.getExternalSDPath())) return true; return false; } private void initData() { mSdCardUtil = SDCardUtil.getInstance(); mDownloadPath = MyPreference.getPref(KEY_DOWNLOAD_PATH, mApplication.getDownloadMusicPath()); // KLog.i("wangxu", "SwitchCachePath->initData->mDownloadPath=" + mDownloadPath); } private void initView() { //View mInternalRadioBtn = (TextView)findViewById(R.id.cache_internal_sdcard_path_radio); mExternalRadioBtn = (TextView)findViewById(R.id.cache_external_sdcarch_path_radio); mInternalPathLayout = (LinearLayout)findViewById(R.id.cache_internal_sdcard_path_layout); mExternalPathLayout = (LinearLayout)findViewById(R.id.cache_external_sdcarch_path_layout); mProgressBar = (ProgressBar)findViewById(R.id.mprogressbar); //Inflater LayoutInflater inflater = LayoutInflater.from(this); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT, 100); //内置存储 View externalView = inflater.inflate(R.layout.cache_bottom_showsize, null); externalView.setLayoutParams(params); externalView.setBackgroundResource(R.color.white); mInternalCapacityTxt = (TextView)externalView.findViewById(R.id.sd_capacity); mInternalMovieTxt = (TextView)externalView.findViewById(R.id.sd_offline_capacity); mInternalOtherTxt = (TextView)externalView.findViewById(R.id.sd_other_capacity); mInternalSurplusTxt = (TextView)externalView.findViewById(R.id.sd_suplus_capacity); mInternalProgressBar = (ProgressBar)externalView.findViewById(R.id.progressbar_capacity); mInternalPathLayout.addView(externalView); //外置存储 View view = inflater.inflate(R.layout.cache_bottom_showsize, null); view.setLayoutParams(params); view.setBackgroundResource(R.color.white); mExternalCapacityTxt = (TextView)view.findViewById(R.id.sd_capacity); mExternalMovieTxt = (TextView)view.findViewById(R.id.sd_offline_capacity); mExternalOtherTxt = (TextView)view.findViewById(R.id.sd_other_capacity); mExternalSurplusTxt = (TextView)view.findViewById(R.id.sd_suplus_capacity); mExternalProgressBar = (ProgressBar)view.findViewById(R.id.progressbar_capacity); mExternalPathLayout.addView(view); mInternalProgressBar.setMax(100); mInternalProgressBar.setProgress(0); mInternalProgressBar.setSecondaryProgress(0); mExternalProgressBar.setMax(100); mExternalProgressBar.setSecondaryProgress(0); mExternalProgressBar.setProgress(0); mInternalPathLayout.setOnClickListener(this); mExternalPathLayout.setOnClickListener(this); } private void prepareActionBar() { // ActionBar actionBar = getSupportActionBar(); // actionBar.setTitle("设置"); // actionBar.setHomeButtonEnabled(true); // actionBar.setDisplayHomeAsUpEnabled(false); // actionBar.setLogo(R.drawable.d_title_back_new); } private void showDialog(final boolean internal) { AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("提示") .setMessage("新增缓存将存储在"+getNextName()+",之前已缓存视频路径不变。") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub // choseSDCardState(getNextType()==TYPE_INTERNAL); dialog.dismiss(); choseSDCardState(internal); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub dialog.dismiss(); } }) .create(); dialog.show(); } private void showInternalView(CapacityUtil capacityUtil) { if(capacityUtil == null) return; mInternalCapacityTxt.setText("" + FileUtils.formatFileSize(capacityUtil.totalSize)); mInternalMovieTxt.setText("本地缓存 " + FileUtils.formatFileSize(capacityUtil.movieSize)); mInternalOtherTxt.setText("其他 " + FileUtils.formatFileSize(capacityUtil.otherSize-capacityUtil.movieSize)); mInternalSurplusTxt.setText("剩余 " + FileUtils.formatFileSize(capacityUtil.avaliableSize)); mInternalProgressBar.setProgress((int)(capacityUtil.movieSize/capacityUtil.totalSize*mInternalProgressBar.getMax())); mInternalProgressBar.setSecondaryProgress((int)((capacityUtil.otherSize)/capacityUtil.totalSize*mInternalProgressBar.getMax())); } private void showExternalView(CapacityUtil capacityUtil) { if(capacityUtil == null) return; mExternalCapacityTxt.setText("" + FileUtils.formatFileSize(capacityUtil.totalSize)); mExternalMovieTxt.setText("本地缓存 " + FileUtils.formatFileSize(capacityUtil.movieSize)); mExternalOtherTxt.setText("其他 " + FileUtils.formatFileSize(capacityUtil.otherSize-capacityUtil.movieSize)); mExternalSurplusTxt.setText("剩余 " + FileUtils.formatFileSize(capacityUtil.avaliableSize)); mExternalProgressBar.setProgress((int)((capacityUtil.movieSize/capacityUtil.totalSize*mExternalProgressBar.getMax()))); mExternalProgressBar.setSecondaryProgress((int)((capacityUtil.otherSize)/capacityUtil.totalSize*mExternalProgressBar.getMax())); } private void showProgress() { if(mProgressBar != null) mProgressBar.setVisibility(View.VISIBLE); } private void showView() { showInternalView(mCapacityUtil1); showExternalView(mCapacityUtil2); } private void updateSDCardState() { if(isExternalSDCard()) { choseExternalSDCardState(); }else if(isInternalSDCard()){ choseInternalSDCardState(); }else { //SD卡未挂载,显示空页面 } } @Override protected void onCreate(Bundle arg0) { // TODO Auto-generated method stub super.onCreate(arg0); mApplication = (MusicApplication)getApplication(); prepareActionBar(); setContentView(R.layout.download_switch_path); initData(); initView(); updateSDCardState(); showProgress(); new Thread() { @Override public void run() { mCapacityUtil1 = mSdCardUtil.getCapacity(mSdCardUtil.getInternalSDPath(), mSdCardUtil.getInternalSDPath()+("/konka/video/")); mCapacityUtil2 = mSdCardUtil.getCapacity(mSdCardUtil.getExternalSDPath(), mSdCardUtil.getExternalSDPath()+("/konka/video/")); mHandler.sendEmptyMessage(MSG_SHOW_VIEW); } }.start(); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub return true; } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.cache_internal_sdcard_path_layout: // choseInternalSDCardState(); showDialog(true); break; case R.id.cache_external_sdcarch_path_layout: // choseExternalSDCardState(); showDialog(false); break; } } }