安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用
2018-06-07 15:48
211 查看
原
安卓开发之WebView,进度条ProgressBar以及MediaPlayer和SonundPool的使用
2018年06月06日 15:04:21
阅读数:106
内容比较简单,仅用作笔记,所以就不过多解释,有一些地方代码思路不是很清晰,有点乱,日后会进行修改的。
1、新建一个SoundPool管理器,实现soundpool的创建,加载以及播放音频等功能
[java] view plain copy print?- 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;
相关文章推荐
- 【React Native开发】React Native控件之WebView组件详解以及实例使用(22)
- 安卓开发学习心得-------WebView的使用
- 安卓开发_WebView如何在Fragment中使用
- 移动开发:使用桌面chrome调试安卓设备上的chrome和cordova app(webview)
- [Phonegap+Sencha Touch] 移动开发17 使用桌面版chrome调试安卓设备上的chrome和webview
- [Phonegap+Sencha Touch] 移动开发39 某些安卓手机的webview使用location.href="tel:123456"不能调到打电话的界面
- 安卓开发:弹出自定义对话框自动播放视频(仿视频广告效果,使用mediaplayer和surfaceview做播放器)
- iOS开发 WKWebView使用第三方库WebViewJavascriptBridge 以及js端处理
- 安卓开发14:WebView使用
- 安卓开发_关于WebView使用链接时调用浏览器显示的问题
- iOS开发之WKWebView的使用以及遇到的问题
- 安卓webView开发使用及加载html标签乱码处理
- [Phonegap+Sencha Touch] 移动开发35 让phonegap的webview(安卓)使用chromium内核
- Android开发模板------WebView加载时显示ProgressBar进度条
- iOS开发 WKWebView使用第三方库WebViewJavascriptBridge 以及js端处理
- Android开发中webView的使用以及与js交互传值问题
- 混合开发(一)——WebView开发高级技巧之加载网页以及JavaScript,加载进度条
- [Phonegap+Sencha Touch] 移动开发17 使用桌面版chrome调试安卓设备上的chrome和webview
- Android多媒体开发 音乐播放(加带进度条、时间显示)以及使用SoundPool播放音效
- 混合开发(一)——WebView开发高级技巧之加载网页以及JavaScript,加载进度条