android开发(44) 使用了 SoundPool 播放提示音

SoundPool

一个声音播放的辅助类,从名字可以看出,它具有 “池”的能力,它先加载声音文件到内存,以支持多次播放声音文件。

特点

  • SoundPool适合 短小的 声音文件
  • SoundPool适合播放 “需要多次播放的提示音”,比如在 一些常用的 请登录,请点击什么的
  • 相比mediaPlayer,耗用资源更少 
  • 支持 同时 播放多个声音 

使用方法

  创建实例

    

mSoundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);
soundPoolMap = new HashMap<Integer, Integer>(); //这里我创建一个 hash 表,用于记录加载过的声音的ID,一般我们会定义一个常量作为检索该声音的KEY

  加载声音文件

 soundPoolMap.put(KEY_SOUND_A1, mSoundPool.load(this, R.raw.a1, 1));
        soundPoolMap.put(KEY_SOUND_A2, mSoundPool.load(this, R.raw.a2, 1));//注意,这里 hash表里 记录

  播放声音文件

mSoundPool.play(soundPoolMap.get(KEY_SOUND_A1), 1, 1, 0, 0, 1); //注意,这里从hash表里取出了具体的ID

  注册一个监听器,在加载声音完毕的时候获得消息  

mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                alert(" " + sampleId);
            }
        });

最后,是完整的类的代码,示例代码可以在我的github上下载:https://github.com/vir56k/demo/tree/master/SoundPoolDemo

package demo.vir56k.soundpooldemo;

import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import java.util.HashMap;

public class MainActivity extends AppCompatActivity {
    public static final int KEY_SOUND_A1 = 1;
    public static final int KEY_SOUND_A2 = 1;

    SoundPool mSoundPool;
    private HashMap<Integer, Integer> soundPoolMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mSoundPool = new SoundPool(1, AudioManager.STREAM_ALARM, 0);
        mSoundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
                alert(" " + sampleId);
            }
        });
        soundPoolMap = new HashMap<Integer, Integer>();
        soundPoolMap.put(KEY_SOUND_A1, mSoundPool.load(this, R.raw.a1, 1));
        soundPoolMap.put(KEY_SOUND_A2, mSoundPool.load(this, R.raw.a2, 1));
    }

    private void alert(String s) {
        Log.i("Alert: ", s + "");
    }

    public void onClickView(View view) {
        if (view.getId() == R.id.button) {
            mSoundPool.play(soundPoolMap.get(KEY_SOUND_A1), 1, 1, 0, 0, 1);
        }
        if (view.getId() == R.id.button2) {
            mSoundPool.play(soundPoolMap.get(KEY_SOUND_A2), 1, 1, 0, 0, 1);
        }
    }

}

  

时间: 2025-01-03 08:18:39

android开发(44) 使用了 SoundPool 播放提示音的相关文章

Android开发中Eclipse里的智能提示设置

今天开始学习一下Android开发,直接在Android Developers下载的一个开发工具包,然后再下了一个JDK,配置完环境变量等一系列的工作后环境就搭建好了,在新建好第一个Android项目 后,唉?写代码没有智能提示?对于用惯了VS的.NET开发者来说,简直不能接受啊,肯定哪里有设置对不对! 百度了一下,设置如下:1.java文件中智能提示打 开Eclipse 依次选择 Window > Preferences > Java > Editor - Content Assist

【Android开发VR实战】二.播放360&amp;#176;全景视频

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发VR实战]二.播放360°全景视频 VR即Virtual Reality虚拟现实.虚拟现实技术是一种能够创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,怎样在Android中去开发VR功能的APP

【Android开发VR实战】二.播放360&#176;全景视频

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53924006 本文出自[DylanAndroid的博客] [Android开发VR实战]二.播放360°全景视频 VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Android中去开发VR功能的APP

android播放提示音

主要有两种方式: 往项目的res/raw目录中放入音效文件. 1.MediaPlayer播放一般音频 private void playSound(){ final MediaPlayer mediaPlayer = MediaPlayer.create(activity, R.raw.bubble); mediaPlayer.start(); mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){/

Android 播放提示音 的简单方法

public static void sendSound(Context mContext) { //上下文 Uri mUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); //获取系统默认的notification提示音,Uri:通用资源标志符 Ringtone mRingtone = RingtoneManager.getRingtone(mContext, mUri); mRingtone.play()

Android开发实战之简单音乐播放器

最近开始学习音频相关.所以,很想自己做一个音乐播放器,于是,花了一天学习,将播放器的基本功能实现了出来.我觉得学习知识点还是蛮多的,所以写篇博客总结一下关于一个音乐播放器实现的逻辑.希望这篇博文对你的学习和生活有所帮助.效果图: **实现逻辑** 在市面上的音乐播放app,即时你关了.那么一样会在后台播放,所以播放的逻辑应该写在Service中.并且能够实现Service和Activity之间进行通信.那么Service是四大组件之一,所以在使用的时候一定不要忘了在配置文件中声明一下. <ser

android开发 eclipse 里面编写xml无提示

刚开始在网上看别人说的adt版本太高了我的adt是23,我就按他的方法下载了一个22的adt结果集成不了,这种方式果断放弃!! 然后我就注意到了新建项目的时候控制台有这个日志输出 AppWidget declare-styleable AppWidgetProviderInfo not found in file /Users/liping/Desktop/adt-bundle-mac-x86_64-20140624/sdk/platforms/android-19/data/res/value

Android 开发环境jdk配置 执行javac提示不是内部或外部命令解决方法

'JAVAC' 不是内部或外部命令,也不是可运行的程序 或批处理文件.问题解决方法分享! 'JAVA' 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法相似. 原因一:没有安装jdk,只安装了jre 1 jdk1.7.0_60+jre才是完整的,如果没有安装jdk的话,在cmd里边输入javac就会提示"'JAVAC' 不是内部或外部命令,也不是可运行的程序 或批处理文件" 步骤阅读 2 解决方法是安装jdk END 百度经验:jingyan.baidu.com 安装了JD

android通话时第二通电话呼叫等待提示音音量大小

callnotifier.java public void run() { ...... switch (mToneId) { case TONE_CALL_WAITING: toneType = ToneGenerator.TONE_SUP_CALL_WAITING; toneVolume = TONE_RELATIVE_VOLUME_HIPRI;  //可以更改这个音量,目前是80,代表相对其它声音的大小 // Call waiting tone is stopped by stopTone