安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用
原
安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用
2018年06月06日 15:04:21
阅读数:106
内容比较简单,仅用作笔记,所以就不过多解释,有一些地方代码思路不是很清晰,有点乱,日后会进行修改的。
1、新建一个SoundPool管理器,实现soundpool的创建,加载以及播放音频等功能
- package com.example.myexplorer;
- import java.util.Random;
- import android.annotation.SuppressLint;
- import android.content.Context;
- import android.media.AudioAttributes;
- import android.media.SoundPool;
- import android.media.SoundPool.OnLoadCompleteListener;
- import android.os.Build;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.util.SparseArray;
- public class SoundPoolManager implements OnLoadCompleteListener{
- Context context;
- SoundPool soundPool;
- MyHandler myHandler;
- private final int SOUND_LOAD_OK=1;
- //创建一个SpareseArray对象来存放管理音频资源
- private SparseArray<Object> soundMap=new SparseArray<>();
- //实现构造函数,传递context
- public SoundPoolManager(Context context) {
- // TODO Auto-generated constructor stub
- this.context=context;
- }
- /
- 创建一个SoundPool池,回调时需要指定创建的池的最大可容纳数量,声音类型以及音频品质
- /
- @SuppressLint(“NewApi”)
- @SuppressWarnings(“deprecation”)
- protected void creatSounPool(int maxStreams,int streamType,int srcQuality) {
- if(Build.VERSION.SDK_INT>=21) { //判断为安卓5以上时使用该方法创建,否则5.0以上系统不会播放
- AudioAttributes abs = new AudioAttributes.Builder()
- .setUsage(AudioAttributes.USAGE_MEDIA)
- .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
- .build() ;
- soundPool=new SoundPool.Builder()
- .setMaxStreams(5)
- .setAudioAttributes(abs)
- .build(); //创建一个SoundPool对象,该对象可以容纳5个音频流
- }
- else
- soundPool=new SoundPool(maxStreams,streamType,srcQuality); //安卓5以下的soundpool创建方法
- Log.i(”SoundPoolCreat”,“successfull”);
- }
- /
- 加载资源到创建好的SoundPool里面,需要提供音频资源名称以及优先级
- /
- protected void load(String[] ResourcesName,int priority) {
- for(int i=0;i<ResourcesName.length;i++) {
- soundMap.put(i,soundPool.load(context,context.getResources().
- getIdentifier(”com.example.myexplorer:raw/”+ResourcesName[i]
- ,null,null) ,priority));
- Log.i(”SoundPoolLoad”+i,“successfull”);
- }
- soundPool.setOnLoadCompleteListener(this);
- }
- /
- 开始播放,要求提供左声道音量leftVolume,右声道音量rightVolume,播放优先级priority,是否循环loop(0为不循环,1为循环)
- 播放速率rate
- /
- protected void play(float leftVolume,
- float rightVolume,int priority,int loop,float rate) {
- int i=0;
- //随机播放加载的三个背景音乐
- soundPool.play((int)soundMap.get((int)(new Random().nextInt(3))), //产生等概率0-2的随机数
- leftVolume, rightVolume, priority, loop, rate);
- Log.i(”SoundPoolPlay”+(i++),“successfull”);
- }
- /
- 设置加载完成监听,防止未加载完成就播放
- */
- @SuppressLint(“HandlerLeak”)
- @Override
- public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
- // TODO Auto-generated method stub
- Log.i(”Load”,“Complete”);
- myHandler=new MyHandler();
- Message message=myHandler.obtainMessage();
- message.what=SOUND_LOAD_OK;
- myHandler.sendMessage(message);
- }
- @SuppressLint(“HandlerLeak”)
- public class MyHandler extends Handler{
- private final int SOUND_LOAD_OK=1;
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case SOUND_LOAD_OK:
- //这里添加加载完成后需要做的事
- //play(1, 1, 0, 0, 1);
- break;
- default:
- break;
- }
- }
- }
- }
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的使用相关推荐
- progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条
progressblock 安卓自定义进度条 progressbar 高仿仿QQ下载进度条 附上我在公司做下载播放项目 主要使用方法 progressBlock = (ProgressBlock) f ...
- Xamarin XAML语言教程构建进度条ProgressBar
Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...
- 【鸿蒙 HarmonyOS】UI 组件 ( 进度条 ProgressBar 和 RoundProgressBar 组件 )
文章目录 一.布局中设置 ProgressBar.RoundProgressBar 进度条 二.代码中设置 ProgressBar.RoundProgressBar 进度条 三.完整代码示例 四.Gi ...
- 安卓开发之Handler、HandlerThread学习篇
安卓开发之Handler.HandlerThread学习心得篇 开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...
- Windows Phone 7开发,进度条ProgressBar使用详解
进度条在应用中的作用非常大,可以告诉用户当前操作执行的进度,以免用户在等待中失去耐心,进而关闭应 用.Windows Phone 7的进度条有两种样式,一种是从左往右循环滚动的小点点,这种进度条并不能 ...
- android软件开发之webView.addJavascriptInterface循环渐进【二】
说明 文章列表 android软件开发之webView.addJavascriptInterface循环渐进[一]: http://www.sollyu.com/android-software-de ...
- Android 各种自定义进度条Progressbar
Android 自定义进度条 Progressbar 控件集合 关于我,欢迎关注 博客:ccapton(http://blog.csdn.net/ccapton) 微信:Ccapton Github ...
- WPF的进度条progressbar,运行时间elapse time和等待spinner的实现
今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧. 这个例子包含4个实现,分别是同步版本( ...
- 安卓开发之用RecyclerView做陈列式布局(仿小红书首页/淘宝商品浏览)
安卓开发之用RecyclerView做陈列式布局 一.使用RecyclerView要先导入recyclerview-v7库 二.在layout文件夹内,新建一个xml文件,编写你要展示的item的样式 ...
最新文章
- UEFI引导的系统下装双系统解决方案
- (25)2-9-9-12分页(下)
- 第十二届蓝桥杯省赛:试题 A: 卡片(Java)
- 登录服务器用户账户限制,当用户有登录到的限制时,远程桌面登录报错的解决...
- 计算机键盘大赛活动总结,参加技能大赛的活动总结
- Java基础学习总结(153)——HashMap、Hashtable、ConcurrentHashMap的原理与区别
- 牛客网暑期ACM多校训练营(第五场)J-plan (模拟)
- bzoj 3552: 最右非零的数 hduoj 1066: Last non-zero Digit in N!(求N!的最后一个非0位)
- 《Android 开发入门》我为什么要在Android找工作越来越难的时候开始学习它
- 验证码识别——基于CNN+BLSTM+CTC秒杀不定长复杂验证码
- 如果想对控制反转和依赖注入有更深入的理解
- Unity3d C#使用Highlighting System 5.0高光插件的详细使用教学和脚本动态操作
- 常见端口的作用、漏洞和操作建议(转)
- apk加壳加密工具(apk protect) v1.0下载
- python是一种什么类型的植物_植被类型预测
- pandas-task08-文本数据.md
- 【安装库】WARNING: A newer version of conda exists.
- 3060ti配什么cpu和主板
- 个人作业2——英语学习APP案例分析
- xshell5之ssh隧道连接