Android 使用Vitamio打造自己的万能播放器(8)——细节优化

 更新时间:2016年07月25日 16:20:14   投稿:lqh  
本文主要介绍Android Vitamio开发播放器,这里给大家提供了一些小的细节优化,更加完善播放器的功能,希望能帮助有需要的小伙伴

前言

  成功的产品往往在细节之处也做到极致,产品和项目从使用的角度来看最大的区别我认为也就是细节的处理上。开播视频的目标是产品,前面7篇文章高歌猛进,添加了很多的功能,也该停下来休整一下,优化一下,也欢迎交流反馈做得不周到的地方。由于开源,大家也可以按照自己的喜好来添加修改不同的功能和细节。

系列

1、Android 使用Vitamio打造自己的万能播放器(1)——准备  

2、Android 使用Vitamio打造自己的万能播放器(2)—— 手势控制亮度、音量、缩放 

3、Android 使用Vitamio打造自己的万能播放器(3)——本地播放(主界面、视频列表) 

4、Android 使用Vitamio打造自己的万能播放器(4)——本地播放(快捷搜索、数据存储)

5、Android 使用Vitamio打造自己的万能播放器(5)——在线播放(播放优酷视频)

6、Android 使用Vitamio打造自己的万能播放器(6)——在线播放(播放列表)

7、Android 使用Vitamio打造自己的万能播放器(7)——在线播放(下载视频)

正文

  一、更新日志

    1.  新增:显示SDCard剩余空间

                   如果SD卡容量有限,而且经常使用下载视频,对剩余空间比较关注。如图:

代码网上找的,也有在项目里用过的:

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.  改进:加载网页时显示正在加载效果

  未改之前每次进入网页都会空白一片,加载完后才显示出来,体验较差。

   3.  改进:在线视频栏目在多个网站之间切换时后退混乱的问题

未改前使用WebView默认的前进后退功能,使用中发现切换后还是会出现后退混乱的状况。注意clearHistory不能清除当前的url。修改参照帖子,这里。 注意需要判断链接是否相同,即:

if (!mHistory.contains(url))
  mHistory.add(0, url); 

         4.  新增:显示正在加载的url

  

    5.  新增:删除、重命名视频文件

                   基础功能:

 /** 删除文件 */
 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播放视频时无法关闭的问题

                  使用浏览器的flash插件播放视频时可能会有此问题。

    7.  改进:下载视频显示对应视频标题名称

                   未改前下载视频为一长串数字。

   三、下载 

                   至本章节往后,代码均不再提供下载,请移步Google Code:    

                    http://code.google.com/p/android-oplayer

                    无法访问请尝试地址:https://over140@android-oplayer.googlecode.com/hg/ ,参照这里。

 以上就是对Android Vitamio开发播放器细节优化部分,后续继续补充。

相关文章

  • android dialog自定义实例详解

    android dialog自定义实例详解

    简单的自定义dialog,该dialog具备以下功能:有一个窗口可以显示文章、根据需求显示,有需要的朋友可以参考下
    2012-12-12
  • 自定义Android注解系列教程之注解变量

    自定义Android注解系列教程之注解变量

    这篇文章主要给大家介绍了关于自定义Android注解系列教程之注解变量的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 详解android shape的使用总结

    详解android shape的使用总结

    在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,本篇文章主要介绍了android shape的使用,有兴趣的可以一起了解一下。
    2016-12-12
  • 深踩Android Studio 缓存的坑及解决方法

    深踩Android Studio 缓存的坑及解决方法

    这篇文章主要介绍了深踩Android Studio 缓存的坑及解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • android 跳转到应用通知设置界面的示例

    android 跳转到应用通知设置界面的示例

    本篇文章主要介绍了android 跳转到应用通知设置界面的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Android实现多线程断点续传

    Android实现多线程断点续传

    这篇文章主要为大家详细介绍了Android实现多线程断点续传,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Android实现滚动刻度尺效果

    Android实现滚动刻度尺效果

    本篇文章主要介绍了Android实现滚动刻度尺效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 详解Android事件的分发、拦截和执行

    详解Android事件的分发、拦截和执行

    这篇文章主要为大家详细介绍了详解Android事件的分发、拦截和执行,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Flutter 中的PageStorage小部件使用及最佳实践

    Flutter 中的PageStorage小部件使用及最佳实践

    在Flutter中,PageStorage小部件提供了一种方法来保存和恢复页面间的信息,这对于具有多个页面且需要在这些页面之间共享状态的应用程序非常有用,本文将详细介绍PageStorage的用途、如何使用它以及一些最佳实践,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • Android BottomNavigationView与Fragment重建与重叠问题解决方法探索

    Android BottomNavigationView与Fragment重建与重叠问题解决方法探索

    这篇文章主要介绍了Android BottomNavigationView与Fragment重建与重叠问题解决,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2023-01-01

最新评论