区块链技术博客
www.b2bchain.cn

Android 自定义SPlayer播放器,支持缓存和预下载求职学习资料

本文介绍了Android 自定义SPlayer播放器,支持缓存和预下载求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

Git Splayer

SPlayer

播放url格式的网络音频,支持缓存.

引入

implementation 'com.alex:SPlayer:1.0.4'

用法:

详情请下载demo查看

Gitee地址

GitHub

初始化

public class AppApplication extends Application {          public void onCreate() {         super.onCreate();         //初始化是必须的         SPlayer.init(this);         //以下不是必须设置         //corePoolSize 设置核心下载最大线程,默认2 最大6. 传入小于0或大于6不生效         //maximumPoolSize 设置最大下载线程数量,默认8,小于corePoolSize则等于corePoolSize,最大数值64,根据机器性能自己选择适当的线程数         SPlayer.instance().setCorePoolSize(int corePoolSize).setMaximumPoolSize(int maximumPoolSize);         //设置缓存文件夹目录和缓存文件夹名称         //cacheDirPath 默认为 mContext.getExternalCacheDir()         //cachePath 默认为 "/VoiceCache"         SPlayer.instance().setCacheDirPath(String cacheDirPath).setCachePath(String cachePath);         SPlayer.instance()                         .useWakeMode(false)//是否使用唤醒锁,默认不使用                         .useWifiLock(false)//是否使用wifi锁,默认不使用                         .setUseCache(false);//是否使用缓存,默认开启      } }

使用

//预加载,会下载文件下来 VoiceDownloadUtil.instance()                 .download(data, new OnDownloadListener() {                                          public void onDownloadSuccess(File file) {                         button.setText("加载完成");                         button.setOnClickListener(new View.OnClickListener() {                                                          public void onClick(View view) {                                 mOnViewClickListener.onViewClick(button, position);                             }                         });                     }                                           public void onDownloading(int progress) {                         button.setText(progress + "%");                     }                                           public void onDownloadFailed(Exception e) {                         button.setText("加载失败" + e.toString());                     }                 });
//普通播放 SPlayer.instance()         .useWakeMode(false)//是否使用环形锁,默认不使用         .useWifiLock(false)//是否使用wifi锁,默认不使用         .setUseCache(true)//是否使用缓存,默认开启         .playByUrl(localList.get(0), new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {                 Toast.makeText(MainActivity.this, "加载进度:" + i + "%", Toast.LENGTH_SHORT).show();                 if (i == 100) {                     Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show();                 }             }                           public void onCompletion(SMediaPlayer mediaPlayer) {                 Toast.makeText(MainActivity.this, "播放完成", Toast.LENGTH_SHORT).show();             }                           public void onError(Exception e) {                 Toast.makeText(MainActivity.this, "播放异常" + e.toString(), Toast.LENGTH_SHORT).show();             }          });  String cacheSize = SPlayer.instance().getCacheSize(); //获取缓存大小,已格式化单位  SPlayer.instance().clearCache();//删除缓存  SPlayer.instance().seekTo(int i);//增加播放进度修改  SPlayer.instance().seekTo(long long, MediaPlayer.SEEK_CLOSEST);//适用api28以上的精准定位  //播放assets文件         SPlayer.instance().playByAsset("overtime.mp3", new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {              }                           public void onCompletion(SMediaPlayer mediaPlayer) {              }                           public void onError(Exception e) {              }         });

权限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

升级计划

  • [x] 重写优化MediaPlayer
  • [x] 添加缓存查询和删除
  • [ ] 增加边播边缓存功能
  • [ ] 添加录音功能

测试机型

  • [x] 红米K20 pro Android10 MIUI12
  • [x] 雷电模拟器3.0 Android7.1.2
  • [x] AS自带模拟器 API26

更细日志

v1.0.2

  • 增加修改播放进度的方法

v1.0.1

  • 优化MediaPlayer
  • 增加缓存查询和删除功能

v1.0.4

-支持播放assets文件中的音频文件

Git Splayer

SPlayer

播放url格式的网络音频,支持缓存.

引入

implementation 'com.alex:SPlayer:1.0.4'

用法:

详情请下载demo查看

Gitee地址

GitHub

初始化

public class AppApplication extends Application {          public void onCreate() {         super.onCreate();         //初始化是必须的         SPlayer.init(this);         //以下不是必须设置         //corePoolSize 设置核心下载最大线程,默认2 最大6. 传入小于0或大于6不生效         //maximumPoolSize 设置最大下载线程数量,默认8,小于corePoolSize则等于corePoolSize,最大数值64,根据机器性能自己选择适当的线程数         SPlayer.instance().setCorePoolSize(int corePoolSize).setMaximumPoolSize(int maximumPoolSize);         //设置缓存文件夹目录和缓存文件夹名称         //cacheDirPath 默认为 mContext.getExternalCacheDir()         //cachePath 默认为 "/VoiceCache"         SPlayer.instance().setCacheDirPath(String cacheDirPath).setCachePath(String cachePath);         SPlayer.instance()                         .useWakeMode(false)//是否使用唤醒锁,默认不使用                         .useWifiLock(false)//是否使用wifi锁,默认不使用                         .setUseCache(false);//是否使用缓存,默认开启      } }

使用

//预加载,会下载文件下来 VoiceDownloadUtil.instance()                 .download(data, new OnDownloadListener() {                                          public void onDownloadSuccess(File file) {                         button.setText("加载完成");                         button.setOnClickListener(new View.OnClickListener() {                                                          public void onClick(View view) {                                 mOnViewClickListener.onViewClick(button, position);                             }                         });                     }                                           public void onDownloading(int progress) {                         button.setText(progress + "%");                     }                                           public void onDownloadFailed(Exception e) {                         button.setText("加载失败" + e.toString());                     }                 });
//普通播放 SPlayer.instance()         .useWakeMode(false)//是否使用环形锁,默认不使用         .useWifiLock(false)//是否使用wifi锁,默认不使用         .setUseCache(true)//是否使用缓存,默认开启         .playByUrl(localList.get(0), new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {                 Toast.makeText(MainActivity.this, "加载进度:" + i + "%", Toast.LENGTH_SHORT).show();                 if (i == 100) {                     Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show();                 }             }                           public void onCompletion(SMediaPlayer mediaPlayer) {                 Toast.makeText(MainActivity.this, "播放完成", Toast.LENGTH_SHORT).show();             }                           public void onError(Exception e) {                 Toast.makeText(MainActivity.this, "播放异常" + e.toString(), Toast.LENGTH_SHORT).show();             }          });  String cacheSize = SPlayer.instance().getCacheSize(); //获取缓存大小,已格式化单位  SPlayer.instance().clearCache();//删除缓存  SPlayer.instance().seekTo(int i);//增加播放进度修改  SPlayer.instance().seekTo(long long, MediaPlayer.SEEK_CLOSEST);//适用api28以上的精准定位  //播放assets文件         SPlayer.instance().playByAsset("overtime.mp3", new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {              }                           public void onCompletion(SMediaPlayer mediaPlayer) {              }                           public void onError(Exception e) {              }         });

权限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

升级计划

  • [x] 重写优化MediaPlayer
  • [x] 添加缓存查询和删除
  • [ ] 增加边播边缓存功能
  • [ ] 添加录音功能

测试机型

  • [x] 红米K20 pro Android10 MIUI12
  • [x] 雷电模拟器3.0 Android7.1.2
  • [x] AS自带模拟器 API26

更细日志

v1.0.2

  • 增加修改播放进度的方法

v1.0.1

  • 优化MediaPlayer
  • 增加缓存查询和删除功能

v1.0.4

-支持播放assets文件中的音频文件

Git Splayer

SPlayer

播放url格式的网络音频,支持缓存.

引入

implementation 'com.alex:SPlayer:1.0.4'

用法:

详情请下载demo查看

Gitee地址

GitHub

初始化

public class AppApplication extends Application {          public void onCreate() {         super.onCreate();         //初始化是必须的         SPlayer.init(this);         //以下不是必须设置         //corePoolSize 设置核心下载最大线程,默认2 最大6. 传入小于0或大于6不生效         //maximumPoolSize 设置最大下载线程数量,默认8,小于corePoolSize则等于corePoolSize,最大数值64,根据机器性能自己选择适当的线程数         SPlayer.instance().setCorePoolSize(int corePoolSize).setMaximumPoolSize(int maximumPoolSize);         //设置缓存文件夹目录和缓存文件夹名称         //cacheDirPath 默认为 mContext.getExternalCacheDir()         //cachePath 默认为 "/VoiceCache"         SPlayer.instance().setCacheDirPath(String cacheDirPath).setCachePath(String cachePath);         SPlayer.instance()                         .useWakeMode(false)//是否使用唤醒锁,默认不使用                         .useWifiLock(false)//是否使用wifi锁,默认不使用                         .setUseCache(false);//是否使用缓存,默认开启      } }

使用

//预加载,会下载文件下来 VoiceDownloadUtil.instance()                 .download(data, new OnDownloadListener() {                                          public void onDownloadSuccess(File file) {                         button.setText("加载完成");                         button.setOnClickListener(new View.OnClickListener() {                                                          public void onClick(View view) {                                 mOnViewClickListener.onViewClick(button, position);                             }                         });                     }                                           public void onDownloading(int progress) {                         button.setText(progress + "%");                     }                                           public void onDownloadFailed(Exception e) {                         button.setText("加载失败" + e.toString());                     }                 });
//普通播放 SPlayer.instance()         .useWakeMode(false)//是否使用环形锁,默认不使用         .useWifiLock(false)//是否使用wifi锁,默认不使用         .setUseCache(true)//是否使用缓存,默认开启         .playByUrl(localList.get(0), new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {                 Toast.makeText(MainActivity.this, "加载进度:" + i + "%", Toast.LENGTH_SHORT).show();                 if (i == 100) {                     Toast.makeText(MainActivity.this, "加载完成", Toast.LENGTH_SHORT).show();                 }             }                           public void onCompletion(SMediaPlayer mediaPlayer) {                 Toast.makeText(MainActivity.this, "播放完成", Toast.LENGTH_SHORT).show();             }                           public void onError(Exception e) {                 Toast.makeText(MainActivity.this, "播放异常" + e.toString(), Toast.LENGTH_SHORT).show();             }          });  String cacheSize = SPlayer.instance().getCacheSize(); //获取缓存大小,已格式化单位  SPlayer.instance().clearCache();//删除缓存  SPlayer.instance().seekTo(int i);//增加播放进度修改  SPlayer.instance().seekTo(long long, MediaPlayer.SEEK_CLOSEST);//适用api28以上的精准定位  //播放assets文件         SPlayer.instance().playByAsset("overtime.mp3", new PlayerListener() {                          public void LoadSuccess(SMediaPlayer mediaPlayer) {                 mediaPlayer.start();             }                           public void Loading(SMediaPlayer mediaPlayer, int i) {              }                           public void onCompletion(SMediaPlayer mediaPlayer) {              }                           public void onError(Exception e) {              }         });

权限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

升级计划

  • [x] 重写优化MediaPlayer
  • [x] 添加缓存查询和删除
  • [ ] 增加边播边缓存功能
  • [ ] 添加录音功能

测试机型

  • [x] 红米K20 pro Android10 MIUI12
  • [x] 雷电模拟器3.0 Android7.1.2
  • [x] AS自带模拟器 API26

更细日志

v1.0.2

  • 增加修改播放进度的方法

v1.0.1

  • 优化MediaPlayer
  • 增加缓存查询和删除功能

v1.0.4

-支持播放assets文件中的音频文件

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » Android 自定义SPlayer播放器,支持缓存和预下载求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们