• android中使用soundpool播放音频


     1 package com.baorant.soundpooltest;
     2 
     3 import java.util.HashMap;
     4 
     5 import android.app.Activity;
     6 import android.media.AudioManager;
     7 import android.media.SoundPool;
     8 import android.os.Bundle;
     9 import android.view.View;
    10 import android.view.View.OnClickListener;
    11 import android.widget.Button;
    12 
    13 public class MainActivity extends Activity implements OnClickListener {
    14     Button bomb, shot, arrow;
    15     SoundPool soundPool;
    16     HashMap<Integer, Integer> soundMap = new HashMap<Integer, Integer>();
    17 
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         setContentView(R.layout.activity_main);
    22         bomb = (Button) findViewById(R.id.bomb);
    23         shot = (Button) findViewById(R.id.shot);
    24         arrow = (Button) findViewById(R.id.arrow);
    25         /**
    26          * 
    27          * soundPool对象的构造和sdk版本有关
    28          *  if(Build.VERSION.SDK_INT>=21){
    29          * SoundPool.Builder builder = new SoundPool.Builder();
    30          * builder.setMaxStreams(2);//传入音频数量 //AudioAttributes是一个封装音频各种属性的方法
    31          * AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
    32          * attrBuilder.setLegacyStreamType(AudioManager
    33          * .STREAM_MUSIC);//设置音频流的合适的属性
    34          * builder.setAudioAttributes(attrBuilder.build());//加载一个AudioAttributes
    35          * mPool = builder.build(); }else{ mPool = new
    36          * SoundPool(2,AudioManager.STREAM_MUSIC,0); }
    37          */
    38         soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
    39         soundMap.put(1, soundPool.load(this, R.raw.bomb, 1));
    40         soundMap.put(2, soundPool.load(this, R.raw.shot, 1));
    41         soundMap.put(3, soundPool.load(this, R.raw.arrow, 1));
    42         bomb.setOnClickListener(this);
    43         shot.setOnClickListener(this);
    44         arrow.setOnClickListener(this);
    45     }
    46 
    47     @Override
    48     public void onClick(View v) {
    49         switch (v.getId()) {
    50         case R.id.bomb:
    51             soundPool.play(soundMap.get(1), 1, 1, 0, 0, 1);
    52         case R.id.shot:
    53             soundPool.play(soundMap.get(2), 1, 1, 0, 0, 1);
    54         case R.id.arrow:
    55             soundPool.play(soundMap.get(3), 1, 1, 0, 0, 1);
    56         }
    57 
    58     }
    59 
    60 }

    使用soundpool播放声音的步骤如下:

    1、使用soundpool.builder的构造器创建sound.builder对象

    2、调用soundpool的构造器创建soundpool对象,构造器方法和sdk版本有关,具体参照上面代码内容

    3、调用soundpool对象的load()方法加载声音。最好用haspmap来管理加载的声音

    4、调用soundpool的play()方法来播放声音

  • 相关阅读:
    【原创】【Android New Features】—— 关于ADT 17的BuildConfig.DEBUG
    《jQuery、jQuery UI及jQuery Mobile技巧与示例》勘误收集
    《jQuery UI开发指南》勘误收集
    获取输入框中选中文本相对于页面的偏移
    html标签对应的英文原文
    CSS选择器解析
    Input File 表单上传按钮美化
    常用CSS代码片断
    web前端开发框架搜集
    Fiddler
  • 原文地址:https://www.cnblogs.com/baorantHome/p/6932778.html
Copyright © 2020-2023  润新知