Android(安卓)播放提示音
16lz
2022-05-29
播放系统提示音
Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);Ringtone r = RingtoneManager.getRingtone(Utils.getApp(), notification);r.play();
播放指定提示音
public class SoundUtils { /** * 播放声音 不能同时播放多种音频 * 消耗资源较大 * * @param rawId */ public static void playSoundByMedia(int rawId) { try { MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnCompletionListener(beepListener); try { AssetFileDescriptor file = Utils.getApp().getResources().openRawResourceFd( rawId); mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); file.close(); mediaPlayer.setVolume(0.50f, 0.50f); mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) { mediaPlayer = null; } } catch (Exception e) { e.printStackTrace(); } } private static final MediaPlayer.OnCompletionListener beepListener = new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mediaPlayer) { mediaPlayer.seekTo(0); } }; /** * 适合播放声音短,文件小 * 可以同时播放多种音频 * 消耗资源较小 */ public static void playSound(int rawId) { SoundPool soundPool; if (Build.VERSION.SDK_INT >= 21) { SoundPool.Builder builder = new SoundPool.Builder(); //传入音频的数量 builder.setMaxStreams(1); //AudioAttributes是一个封装音频各种属性的类 AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder(); //设置音频流的合适属性 attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC); builder.setAudioAttributes(attrBuilder.build()); soundPool = builder.build(); } else { //第一个参数是可以支持的声音数量,第二个是声音类型,第三个是声音品质 soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 5); } //第一个参数Context,第二个参数资源Id,第三个参数优先级 soundPool.load(Utils.getApp(), rawId, 1); soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { soundPool.play(1, 1, 1, 0, 0, 1); } }); //第一个参数id,即传入池中的顺序,第二个和第三个参数为左右声道,第四个参数为优先级,第五个是否循环播放,0不循环,-1循环 //最后一个参数播放比率,范围0.5到2,通常为1表示正常播放// soundPool.play(1, 1, 1, 0, 0, 1); //回收Pool中的资源 //soundPool.release(); }}
更多相关文章
- Android(安卓)HapticFeedback触感反馈
- android里,addContentView()动态增加view控件,并实现控件的顶部,中
- android 播放音频和视频
- android 参数 加密,解密 参数提交,数据返回
- 第一个Android登录页面 | HTTP 请求验证登录 | 完整代码
- android MediaPlayer SurfaceView 网络视频播放器
- 编程回忆之Android回忆(Android应用参数的获取)
- mybatisplus的坑 insert标签insert into select无参数问题的解决
- Python技巧匿名函数、回调函数和高阶函数