android 队列形式播放提示语音
2016-07-08 07:47
567 查看
有序播放,并且同一种提示音在相同时间段只会播放一次
import android.media.MediaPlayer; import android.net.Uri; import java.util.ArrayList; /** * Created by junjie on 2016/3/31. */ public class MediaPlayerUtil { private static MediaPlayer player; private static ArrayList<Integer> resources; private static MyOnCompletionListener myOnCompletionListener; private static int lastMedia; public static void init(){ if(player != null){ return; } player = new MediaPlayer(); resources = new ArrayList<>(); myOnCompletionListener = new MyOnCompletionListener(); player.setOnCompletionListener(myOnCompletionListener); } public static void release(){ if(player == null){ return; } player.setOnCompletionListener(null); if(player.isPlaying()){ player.stop(); } player.release(); player = null; myOnCompletionListener = null; resources.clear(); resources = null; } public static void addresource(int resource){ if(player == null){ init(); } //当前正在播放这条语音 或者 集合中已经有了这条语音,不重复播放 if((player.isPlaying() && lastMedia == resource) || resources.contains(resource)){ return; } resources.add(resource); readyPlayer(); } public static void addresources(ArrayList<Integer> _resources){ resources.addAll(_resources); readyPlayer(); } private static void readyPlayer(){ if(!player.isPlaying()){ playAndSetData(); } } static class MyOnCompletionListener implements MediaPlayer.OnCompletionListener { @Override public void onCompletion(MediaPlayer mp) { playAndSetData(); } } private static void playAndSetData(){ try{ if(resources.size() == 0){ lastMedia = 0; return; } player.reset(); player.setDataSource(AppContextUtil.getAppContext(), Uri.parse("android.resource://" + AppContextUtil.getAppContext().getPackageName() + "/" + resources.get(0)) ); lastMedia = resources.get(0); resources.remove(0); player.prepare(); player.start(); }catch (Exception e){ e.printStackTrace(); } } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories