中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Android中使用SoundPool

發布時間:2021-05-17 17:23:51 來源:億速云 閱讀:154 作者:Leah 欄目:移動開發

本篇文章為大家展示了如何在Android中使用SoundPool,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

1.創建SoundPool對象

源碼如下

 /**
   *SoundPool源碼中的構造方法方法體
   * @param maxStreams 最多可以容納多少個音頻
   * @param streamType 指定的聲音類型,通過AudioManager類提供的常量進行指定
   * @param srcQuality 指定音頻的質量,默認為0
   * @return a SoundPool object, or null if creation failed
   */
  public SoundPool(int maxStreams, int streamType, int srcQuality)

2.加載所需要播放的音頻:

/**
   * @param context the application context
   * @param resId the resource ID
   * @param priority the priority of the sound. Currently has no effect. Use
   *         a value of 1 for future compatibility.
   * @return a sound ID. This value can be used to play or unload the sound.
   */
 public int load(Context context, int resId, int priority);

3.播放音頻

 /**
   * Play a sound from a sound ID.
   * @param soundID 通過load方法返回的音頻
   * @param leftVolume 左聲道的音量
   * @param rightVolume 右聲道的音量 
   * @param priority 優先級,值越大,優先級越高
   * @param loop 循環的次數:0為不循環,-1為循環
   * @param rate 指定速率,正常位1,為地位0.5,最高位2
   * @return non-zero streamID if successful, zero if failed
   */
  public final int play(int soundID, float leftVolume, float rightVolume,
      int priority, int loop, float rate);

4.案例如下:

(1)布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="horizontal" >
  <Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="風鈴聲" />
  <Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="布谷鳥叫聲" />
  <Button
    android:id="@+id/button3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="門鈴聲" />
  <Button
    android:id="@+id/button4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="電話聲" />
</LinearLayout>

(2)MainActivity.java文件

package com.mingrisoft;
import java.util.HashMap;
import android.app.Activity;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
  private SoundPool soundpool;  //聲明一個SoundPool對象
  //使用HashMap管理各種音頻
  private HashMap<Integer, Integer> soundmap = new HashMap<Integer, Integer>();  //創建一個HashMap對象
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button chimes = (Button) findViewById(R.id.button1);  //獲取“風鈴聲”按鈕
    Button enter = (Button) findViewById(R.id.button2);   //獲取“布谷鳥叫聲”按鈕
    Button notify = (Button) findViewById(R.id.button3);  //獲取“門鈴聲”按鈕
    Button ringout = (Button) findViewById(R.id.button4);  //獲取“電話聲”按鈕
    soundpool = new SoundPool(5,
        AudioManager.STREAM_SYSTEM, 0); //創建一個SoundPool對象,該對象可以容納5個音頻流
    //將要播放的音頻流保存到HashMap對象中
    soundmap.put(1, soundpool.load(this, R.raw.chimes, 1));
    soundmap.put(2, soundpool.load(this, R.raw.enter, 1));
    soundmap.put(3, soundpool.load(this, R.raw.notify, 1));
    soundmap.put(4, soundpool.load(this, R.raw.ringout, 1));
    soundmap.put(5, soundpool.load(this, R.raw.ding, 1));
    //為各按鈕添加單擊事件監聽器
    chimes.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        soundpool.play(soundmap.get(1), 1, 1, 0, 0, 1); //播放指定的音頻
      }
    });
    enter.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        soundpool.play(soundmap.get(2), 1, 1, 0, 0, 1);//播放指定的音頻
      }
    });
    notify.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        soundpool.play(soundmap.get(3), 1, 1, 0, 0, 1);//播放指定的音頻
      }
    });
    ringout.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        soundpool.play(soundmap.get(4), 1, 1, 0, 0, 1);//播放指定的音頻
        soundpool.play(soundpool.load(MainActivity.this, R.raw.notify, 1), 1, 1, 0, 0, 1);
      }
    });
  }
  //重寫鍵被按下的事件
  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    soundpool.play(soundmap.get(5), 1, 1, 0, 0, 1);   //播放按鍵音
    return true;
  }
}

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

上述內容就是如何在Android中使用SoundPool,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渝中区| 古浪县| 云浮市| 丘北县| 北碚区| 金坛市| 綦江县| 屏边| 利津县| 尖扎县| 孟连| 务川| 永昌县| 和林格尔县| 岑溪市| 洛川县| 北辰区| 峨眉山市| 海南省| 田阳县| 广东省| 彰化市| 昂仁县| 夏邑县| 建昌县| 龙胜| 兴义市| 井研县| 新干县| 科技| 揭阳市| 瑞安市| 紫阳县| 宁都县| 疏附县| 登封市| 平塘县| 海原县| 北安市| 西峡县| 文安县|