Android 使用Vitamio打造自己的萬能播放器(8)——細(xì)節(jié)優(yōu)化
前言
成功的產(chǎn)品往往在細(xì)節(jié)之處也做到極致,產(chǎn)品和項(xiàng)目從使用的角度來看最大的區(qū)別我認(rèn)為也就是細(xì)節(jié)的處理上。開播視頻的目標(biāo)是產(chǎn)品,前面7篇文章高歌猛進(jìn),添加了很多的功能,也該停下來休整一下,優(yōu)化一下,也歡迎交流反饋?zhàn)龅貌恢艿降牡胤健S捎陂_源,大家也可以按照自己的喜好來添加修改不同的功能和細(xì)節(jié)。
系列
1、Android 使用Vitamio打造自己的萬能播放器(1)——準(zhǔn)備
2、Android 使用Vitamio打造自己的萬能播放器(2)—— 手勢(shì)控制亮度、音量、縮放
3、Android 使用Vitamio打造自己的萬能播放器(3)——本地播放(主界面、視頻列表)
4、Android 使用Vitamio打造自己的萬能播放器(4)——本地播放(快捷搜索、數(shù)據(jù)存儲(chǔ))
5、Android 使用Vitamio打造自己的萬能播放器(5)——在線播放(播放優(yōu)酷視頻)
6、Android 使用Vitamio打造自己的萬能播放器(6)——在線播放(播放列表)
7、Android 使用Vitamio打造自己的萬能播放器(7)——在線播放(下載視頻)
正文
一、更新日志
1. 新增:顯示SDCard剩余空間
如果SD卡容量有限,而且經(jīng)常使用下載視頻,對(duì)剩余空間比較關(guān)注。如圖:

代碼網(wǎng)上找的,也有在項(xiàng)目里用過的:
public static String showFileSize(long size) {
String fileSize;
if (size < KB)
fileSize = size + "B";
else if (size < MB)
fileSize = String.format("%.1f", size / KB) + "KB";
else if (size < GB)
fileSize = String.format("%.1f", size / MB) + "MB";
else
fileSize = String.format("%.1f", size / GB) + "GB";
return fileSize;
}
/** 顯示SD卡剩余空間 */
public static String showFileAvailable() {
String result = "";
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
StatFs sf = new StatFs(Environment.getExternalStorageDirectory().getPath());
long blockSize = sf.getBlockSize();
long blockCount = sf.getBlockCount();
long availCount = sf.getAvailableBlocks();
return showFileSize(availCount * blockSize) + " / " + showFileSize(blockSize * blockCount);
}
return result;
}
2. 改進(jìn):加載網(wǎng)頁時(shí)顯示正在加載效果
未改之前每次進(jìn)入網(wǎng)頁都會(huì)空白一片,加載完后才顯示出來,體驗(yàn)較差。
3. 改進(jìn):在線視頻欄目在多個(gè)網(wǎng)站之間切換時(shí)后退混亂的問題
未改前使用WebView默認(rèn)的前進(jìn)后退功能,使用中發(fā)現(xiàn)切換后還是會(huì)出現(xiàn)后退混亂的狀況。注意clearHistory不能清除當(dāng)前的url。修改參照帖子,這里。 注意需要判斷鏈接是否相同,即:
if (!mHistory.contains(url)) mHistory.add(0, url);
4. 新增:顯示正在加載的url

5. 新增:刪除、重命名視頻文件
基礎(chǔ)功能:
/** 刪除文件 */
private void deleteFile(final FileAdapter adapter, final PFile f, final int position) {
new AlertDialog.Builder(getActivity()).setIcon(android.R.drawable.ic_dialog_alert).setTitle(R.string.file_delete).setMessage(getString(R.string.file_delete_confirm, f.title)).setNegativeButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
File file = new File(f.path);
if (file.canRead() && file.exists())
file.delete();
FileBusiness.deleteFile(getActivity(), f);
adapter.delete(position);
} catch (Exception e) {
}
}
}).setPositiveButton(android.R.string.no, null).show();
}
/** 重命名文件 */
private void renameFile(final FileAdapter adapter, final PFile f, final int position) {
final EditText et = new EditText(getActivity());
et.setText(f.title);
new AlertDialog.Builder(getActivity()).setTitle(R.string.file_rename).setIcon(android.R.drawable.ic_dialog_info).setView(et).setNegativeButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String name = et.getText().toString().trim();
if (name == null || name.trim().equals("") || name.trim().equals(f.title))
return;
try {
File fromFile = new File(f.path);
File nf = new File(fromFile.getParent(), name.trim());
if (nf.exists()) {
Toast.makeText(getActivity(), R.string.file_rename_exists, Toast.LENGTH_LONG).show();
} else if (fromFile.renameTo(nf)) {
f.title = name;
f.path = nf.getPath();
FileBusiness.renameFile(getActivity(), f);
adapter.notifyDataSetChanged();
}
} catch (SecurityException se) {
Toast.makeText(getActivity(), R.string.file_rename_failed, Toast.LENGTH_LONG).show();
}
}
}).setPositiveButton(android.R.string.no, null).show();
}
6. 修正:使用WebView播放視頻時(shí)無法關(guān)閉的問題
使用瀏覽器的flash插件播放視頻時(shí)可能會(huì)有此問題。
7. 改進(jìn):下載視頻顯示對(duì)應(yīng)視頻標(biāo)題名稱
未改前下載視頻為一長(zhǎng)串?dāng)?shù)字。
三、下載
至本章節(jié)往后,代碼均不再提供下載,請(qǐng)移步Google Code:
http://code.google.com/p/android-oplayer
無法訪問請(qǐng)嘗試地址:https://over140@android-oplayer.googlecode.com/hg/ ,參照這里。
以上就是對(duì)Android Vitamio開發(fā)播放器細(xì)節(jié)優(yōu)化部分,后續(xù)繼續(xù)補(bǔ)充。
- Android 使用Vitamio打造自己的萬能播放器(10)—— 本地播放 (縮略圖、視頻信息、視頻掃描服務(wù))
- Android 使用Vitamio打造自己的萬能播放器(9)—— 在線播放 (在線電視)
- Android 使用Vitamio打造自己的萬能播放器(7)——在線播放(下載視頻)
- Android 使用Vitamio打造自己的萬能播放器(6)——在線播放(播放列表)
- Android 使用Vitamio打造自己的萬能播放器(5)——在線播放(播放優(yōu)酷視頻)
- Android 使用Vitamio打造自己的萬能播放器(4)——本地播放(快捷搜索、數(shù)據(jù)存儲(chǔ))
- Android 使用Vitamio打造自己的萬能播放器(3)——本地播放(主界面、播放列表)
- Android 使用Vitamio打造自己的萬能播放器(2)—— 手勢(shì)控制亮度、音量、縮放
- Android 使用Vitamio打造自己的萬能播放器(1)——準(zhǔn)備
- Android使用vitamio插件實(shí)現(xiàn)視頻播放器
相關(guān)文章
Android通過繼承Binder類實(shí)現(xiàn)多進(jìn)程通信
本篇文章主要介紹了Android通過繼承Binder類實(shí)現(xiàn)多進(jìn)程通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
android利用消息機(jī)制獲取網(wǎng)絡(luò)圖片
這篇文章主要為大家詳細(xì)介紹了android利用消息機(jī)制獲取網(wǎng)絡(luò)圖片的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
android notification 的總結(jié)分析
notification是一種出現(xiàn)在任務(wù)欄的提示,特別是在4.0以后notification改進(jìn)了不少,本文內(nèi)容都是基于4.0及4.1以后總結(jié)來的2013-05-05
Android 圖文詳解Binder進(jìn)程通信底層原理
Android系統(tǒng)中,多進(jìn)程間的通信都是依賴于底層Binder IPC機(jī)制,Binder機(jī)制是一種RPC方案。例如:當(dāng)進(jìn)程A中的Activity與進(jìn)程B中的Service通信時(shí),就使用了binder機(jī)制2021-10-10
Android自定義ViewGroup的實(shí)現(xiàn)方法
這篇文章主要為大家詳細(xì)介紹了Android自定義ViewGroup的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2016-05-05
淺析Android中常見三種彈框在項(xiàng)目中的應(yīng)用
這篇文章主要介紹了淺析Android中常見三種彈框在項(xiàng)目中的應(yīng)用,需要的朋友可以參考下2017-03-03
Android編程之控件可拖動(dòng)的實(shí)現(xiàn)方法
這篇文章主要介紹了Android編程之控件可拖動(dòng)的實(shí)現(xiàn)方法,實(shí)例分析了Android響應(yīng)點(diǎn)擊及觸摸事件的相關(guān)技巧,需要的朋友可以參考下2016-02-02

