Android点击按钮播放音效_第1张图片

你想给你的按钮添加点击的音效吗,盘它~

package com.shanjing.demo01;import androidx.appcompat.app.AppCompatActivity;import android.content.Context;import android.media.AudioManager;import android.media.SoundPool;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;import java.util.HashMap;public class MainActivity extends AppCompatActivity {    private Button btn_start, btn_stop;    SoundPool sp;//声明SoundPool的引用    HashMap hm;//声明HashMap来存放声音文件    int currStaeamId;//当前正播放的streamId    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btn_start = findViewById(R.id.btn_start);        btn_stop = findViewById(R.id.btn_stop);        initSoundPool();//初始化声音池的方法        btn_start.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                playSound(1, 0);//播放1号声音资源,且播放一次                //提示播放即时音效                Toast.makeText(MainActivity.this, "播放即时音效", Toast.LENGTH_SHORT).show();            }        });        btn_stop.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                sp.stop(currStaeamId);//停止正在播放的某个声音                //提示停止播放                Toast.makeText(MainActivity.this, "停止播放即时音效", Toast.LENGTH_SHORT).show();            }        });    }    private void playSound(int sound, int loop) {//获取AudioManager引用        AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);        //获取当前音量        float streamVolumeCurrent = am.getStreamVolume(AudioManager.STREAM_MUSIC);        //获取系统最大音量        float streamVolumeMax = am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);        //计算得到播放音量        float volume = streamVolumeCurrent / streamVolumeMax;        //调用SoundPool的play方法来播放声音文件        currStaeamId = sp.play(hm.get(sound), volume, volume, 1, loop, 1.0f);    }    private void initSoundPool() {//初始化声音池        sp = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);//创建SoundPool对象        hm = new HashMap();//创建HashMap对象        //加载声音文件,并且设置为1号声音放入hm中        hm.put(1, sp.load(this, R.raw.a, 1));    }}

音效放在res/raw下

 

更多相关文章

  1. Android下调整多媒体音量方法
  2. android音量控制以及硬件同步
  3. Android 监听音量加减
  4. Android的framework层音量控制原理分析--hot(key)处理
  5. Android 音量 获取 设置
  6. android调节系统音量

随机推荐

  1. 立即停止Android(安卓)Studio 编译
  2. 为什么我的Android(安卓)Studio没有Andro
  3. Android学习及如何利用android来赚钱
  4. Google(谷歌)宣布举办总奖金为1000万美元的
  5. android 仿ios数字密码解锁界面
  6. android 蓝牙ble app开发(二) -- 关键概念,
  7. Android中关于矩阵(Matrix)前乘后乘的一些
  8. Android构建模块
  9. 如何发布你的Android应用程序
  10. android 新浪微博客户端的表情功能的实现