安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用


2018年06月06日 15:04:21


阅读数:106

内容比较简单,仅用作笔记,所以就不过多解释,有一些地方代码思路不是很清晰,有点乱,日后会进行修改的。

1、新建一个SoundPool管理器,实现soundpool的创建,加载以及播放音频等功能

[java] view plain copy print ?
  1. package com.example.myexplorer;
  2. import java.util.Random;
  3. import android.annotation.SuppressLint;
  4. import android.content.Context;
  5. import android.media.AudioAttributes;
  6. import android.media.SoundPool;
  7. import android.media.SoundPool.OnLoadCompleteListener;
  8. import android.os.Build;
  9. import android.os.Handler;
  10. import android.os.Message;
  11. import android.util.Log;
  12. import android.util.SparseArray;
  13. public class SoundPoolManager implements OnLoadCompleteListener{
  14. Context context;
  15. SoundPool soundPool;
  16. MyHandler myHandler;
  17. private final int SOUND_LOAD_OK=1;
  18. //创建一个SpareseArray对象来存放管理音频资源
  19. private SparseArray<Object> soundMap=new SparseArray<>();
  20. //实现构造函数,传递context
  21. public SoundPoolManager(Context context) {
  22. // TODO Auto-generated constructor stub
  23. this.context=context;
  24. }
  25. /
  26. 创建一个SoundPool池,回调时需要指定创建的池的最大可容纳数量,声音类型以及音频品质
  27. /
  28. @SuppressLint(“NewApi”)
  29. @SuppressWarnings(“deprecation”)
  30. protected void creatSounPool(int maxStreams,int streamType,int srcQuality) {
  31. if(Build.VERSION.SDK_INT>=21) {                                  //判断为安卓5以上时使用该方法创建,否则5.0以上系统不会播放
  32. AudioAttributes abs = new AudioAttributes.Builder()
  33. .setUsage(AudioAttributes.USAGE_MEDIA)
  34. .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
  35. .build() ;
  36. soundPool=new SoundPool.Builder()
  37. .setMaxStreams(5)
  38. .setAudioAttributes(abs)
  39. .build();   //创建一个SoundPool对象,该对象可以容纳5个音频流
  40. }
  41. else
  42. soundPool=new SoundPool(maxStreams,streamType,srcQuality);   //安卓5以下的soundpool创建方法
  43. Log.i(”SoundPoolCreat”,“successfull”);
  44. }
  45. /
  46.  加载资源到创建好的SoundPool里面,需要提供音频资源名称以及优先级
  47. /
  48. protected void load(String[] ResourcesName,int priority) {
  49. for(int i=0;i<ResourcesName.length;i++) {
  50. soundMap.put(i,soundPool.load(context,context.getResources().
  51. getIdentifier(”com.example.myexplorer:raw/”+ResourcesName[i]
  52. ,null,null) ,priority));
  53. Log.i(”SoundPoolLoad”+i,“successfull”);
  54. }
  55. soundPool.setOnLoadCompleteListener(this);
  56. }
  57. /
  58. 开始播放,要求提供左声道音量leftVolume,右声道音量rightVolume,播放优先级priority,是否循环loop(0为不循环,1为循环)
  59.  播放速率rate
  60. /
  61. protected void play(float leftVolume,
  62. float rightVolume,int priority,int loop,float rate) {
  63. int i=0;
  64. //随机播放加载的三个背景音乐
  65. soundPool.play((int)soundMap.get((int)(new Random().nextInt(3))),  //产生等概率0-2的随机数
  66. leftVolume, rightVolume, priority, loop, rate);
  67. Log.i(”SoundPoolPlay”+(i++),“successfull”);
  68. }
  69. /
  70. 设置加载完成监听,防止未加载完成就播放
  71. */
  72. @SuppressLint(“HandlerLeak”)
  73. @Override
  74. public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
  75. // TODO Auto-generated method stub
  76. Log.i(”Load”,“Complete”);
  77. myHandler=new MyHandler();
  78. Message message=myHandler.obtainMessage();
  79. message.what=SOUND_LOAD_OK;
  80. myHandler.sendMessage(message);
  81. }
  82. @SuppressLint(“HandlerLeak”)
  83. public class MyHandler extends Handler{
  84. private final int SOUND_LOAD_OK=1;
  85. @Override
  86. public void handleMessage(Message msg) {
  87. switch (msg.what) {
  88. case SOUND_LOAD_OK:
  89. //这里添加加载完成后需要做的事
  90. //play(1, 1, 0, 0, 1);
  91. break;
  92. default:
  93. break;
  94. }
  95. }
  96. }
  97. }
package com.example.myexplorer;
import java.util.Random;


http://www.taodudu.cc/news/show-5870406.html

相关文章:

  • linux下tar命令
  • Swagger从入门到精通
  • Fragment中使用toolbar
  • vue-02
  • matlab投影点,matlab 投影相关函数知识介绍
  • matlab与geotiff影像的函数,用法介绍
  • Idea创建ssm的MAVEN项目
  • Javacv实现QSV硬件解码
  • FFmpeg集成qsv的编译安装
  • 深度学习,怎么知道你的训练数据真的够了?
  • 跳槽字节跳动,Alibaba高并发业务秒杀系统落地实战文档,深入剖析
  • 推荐系统-总结:从算法到工程
  • 从算法到工程,推荐系统全面总结
  • C# 设置鼠标位置
  • SecureCRT 设置 鼠标右键
  • js获取农历日期、节气等
  • “爱心接力 温暖传递” ——利尔达走进福利院,冬日送温暖活动
  • android 支付宝捐赠,打开支付宝 爱心捐赠平台暖心
  • 爱心传递,宝付“衣+衣=爱心暖冬行动”圆满落幕
  • 爱心传递|中国善网助力乡村教育
  • postgresql 吕宏庆_吕宏庆:用网络汇聚爱心 用行动传递温情
  • 用爱心传承爱心 用善心铸就明天
  • 早上的爱心粥
  • 计算机信息与科学学院青协,【学院青协】计算机青协 | 传递爱心,奉献自我,我们在行动...
  • 节日特供:神奇导电墨水笔和闪亮电子贺卡 点亮爱心 传递祝福 彰显创意
  • 二维码传递爱心 助力公司精准扶贫互助
  • 红心In 支持国产Pad 爱心传递
  • 昆仑爱心传递之旅——昆仑置业慈善捐赠行动
  • 爱心传递
  • 女生学高铁和计算机哪个更好,铁路最好的5个专业 女生学铁路什么专业好

安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用相关推荐

  1. progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条

    progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条 附上我在公司做下载播放项目 主要使用方法 progressBlock = (ProgressBlock) f ...

  2. Xamarin XAML语言教程构建进度条ProgressBar

    Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...

  3. 【鸿蒙 HarmonyOS】UI 组件 ( 进度条 ProgressBar 和 RoundProgressBar 组件 )

    文章目录 一.布局中设置 ProgressBar.RoundProgressBar 进度条 二.代码中设置 ProgressBar.RoundProgressBar 进度条 三.完整代码示例 四.Gi ...

  4. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  5. Windows Phone 7开发,进度条ProgressBar使用详解

    进度条在应用中的作用非常大,可以告诉用户当前操作执行的进度,以免用户在等待中失去耐心,进而关闭应 用.Windows Phone 7的进度条有两种样式,一种是从左往右循环滚动的小点点,这种进度条并不能 ...

  6. android软件开发之webView.addJavascriptInterface循环渐进【二】

    说明 文章列表 android软件开发之webView.addJavascriptInterface循环渐进[一]: http://www.sollyu.com/android-software-de ...

  7. Android 各种自定义进度条Progressbar

    Android 自定义进度条 Progressbar 控件集合 关于我,欢迎关注 博客:ccapton(http://blog.csdn.net/ccapton) 微信:Ccapton Github ...

  8. WPF的进度条progressbar,运行时间elapse time和等待spinner的实现

    今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧. 这个例子包含4个实现,分别是同步版本( ...

  9. 安卓开发之用RecyclerView做陈列式布局(仿小红书首页/淘宝商品浏览)

    安卓开发之用RecyclerView做陈列式布局 一.使用RecyclerView要先导入recyclerview-v7库 二.在layout文件夹内,新建一个xml文件,编写你要展示的item的样式 ...

最新文章

  1. UEFI引导的系统下装双系统解决方案
  2. (25)2-9-9-12分页(下)
  3. 第十二届蓝桥杯省赛:试题 A: 卡片(Java)
  4. 登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...
  5. 计算机键盘大赛活动总结,参加技能大赛的活动总结
  6. Java基础学习总结(153)——HashMap、Hashtable、ConcurrentHashMap的原理与区别
  7. 牛客网暑期ACM多校训练营(第五场)J-plan (模拟)
  8. bzoj 3552: 最右非零的数 hduoj 1066: Last non-zero Digit in N!(求N!的最后一个非0位)
  9. 《Android 开发入门》我为什么要在Android找工作越来越难的时候开始学习它
  10. 验证码识别——基于CNN+BLSTM+CTC秒杀不定长复杂验证码
  11. 如果想对控制反转和依赖注入有更深入的理解
  12. Unity3d C#使用Highlighting System 5.0高光插件的详细使用教学和脚本动态操作
  13. 常见端口的作用、漏洞和操作建议(转)
  14. apk加壳加密工具(apk protect) v1.0下载
  15. python是一种什么类型的植物_植被类型预测
  16. pandas-task08-文本数据.md
  17. 【安装库】WARNING: A newer version of conda exists.
  18. 3060ti配什么cpu和主板
  19. 个人作业2——英语学习APP案例分析
  20. xshell5之ssh隧道连接

热门文章

  1. CentOS6.5 安装Sphinx 配置MySQL数据源
  2. 高校选课系统前端页面设计
  3. 删除node_modules
  4. c#字符串按位转成asc_C# 你也可以写个服务器
  5. spring aop 配置注解 切入点说明
  6. openocd+tcl
  7. Java高级面试-超级全面-大厂集合
  8. 【观察】让IT变为业务的支撑者 Ivanti的重构与创新
  9. Netty框架之网络通信入门程序~helloWorld
  10. charles 抓包https