播放系统提示音

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();    }}

更多相关文章

  1. Android(安卓)HapticFeedback触感反馈
  2. android里,addContentView()动态增加view控件,并实现控件的顶部,中
  3. android 播放音频和视频
  4. android 参数 加密,解密 参数提交,数据返回
  5. 第一个Android登录页面 | HTTP 请求验证登录 | 完整代码
  6. android MediaPlayer SurfaceView 网络视频播放器
  7. 编程回忆之Android回忆(Android应用参数的获取)
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. Python技巧匿名函数、回调函数和高阶函数

随机推荐

  1. 7.1 DropTargetBar style
  2. Android调用Jni,非常简单的一个Demo
  3. Android中系统设置参数改变监听(以时间同
  4. Android(安卓)spinner 动态添加时报错 ja
  5. android 代码片段
  6. 学习笔记 Android(安卓)使用AIDL实现进程
  7. android图片缩放(指定大小)
  8. Android(安卓)adb命令启动系统组件
  9. android 操作剪切板
  10. Android中全屏无标题设置