首页 > 其他分享 >Android 点击触发音效

Android 点击触发音效

时间:2022-11-11 21:13:03浏览次数:34  
标签:AudioBtnUtils 音频 soundpool 点击 音效 private Android ib woodenfish

还是以那个木鱼举例吧

点击木鱼(ImageButton),发出敲击声

首先准备一段音频,muyu.mp3,在res文件夹下新建一个资源文件夹raw,将muyu.mp3扔进去

 

 

然后新建一个类用来播放音频

AudioBtnUtils.java

package com.example.cyberwoodenfish;

import android.content.Context;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;

public class AudioBtnUtils {
    private SoundPool.Builder builder;
    private SoundPool soundpool;
    private int soundId;
    public AudioBtnUtils(Context context,int rawsource,int loopnum) {
        builder = new SoundPool.Builder();
        //AudioAttributes是一个封装音频各种属性的方法
        AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder();
        //设置音频流的合适的属性
        attrBuilder.setLegacyStreamType(AudioManager.STREAM_SYSTEM);
        soundpool = builder.build();
        soundId = soundpool.load(context,rawsource, 1);
        //是否加载完成的监听
        soundpool.setOnLoadCompleteListener((soundPool, sampleId, status) -> {
            //加载完毕后再播放
            soundpool.play(soundId, 1f, 1f, 0, loopnum, 1);
        });
    }
}

注意上边加粗的部分,需要传入三个参数,Context上下文,我希望使用这同一个类能播放不同的音频,所以留了一个rawsource变量,

想播放什么音频就传入什么变量,loopnum表示的是重复次数,loop指定是否循环:-1表示无限循环,0表示不循环,其他值表示要重复播放的次数。

对java文件开刀

public class MainActivity extends Activity {
    private ImageButton ib_woodenfish;

    private Animation animation = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ib_woodenfish=findViewById(R.id.ib_woodenfish);
animation = AnimationUtils.loadAnimation(this, R.anim.muyutranslate); ib_woodenfish.setOnClickListener(new View.OnClickListener() { @SuppressLint("ResourceType") @Override public void onClick(View v) { ib_woodenfish.startAnimation(animation); AudioBtnUtils btnUtils2=new AudioBtnUtils(MainActivity.this,R.raw.muyu,0);//跟播放音频有关的就这一句

          //。。。其他乱七八糟的已省略 } }); } }

现在敲击木鱼不光能看到木鱼的缩放动画了,还能听到敲木鱼的声音了。

标签:AudioBtnUtils,音频,soundpool,点击,音效,private,Android,ib,woodenfish
From: https://www.cnblogs.com/soaring27221/p/16882010.html

相关文章

  • Android传感器 - 光强度传感器
    Android手机内部添加了光照强度传感器,可以实时监测手机周边环境的亮度,根据周边环境的亮度可以自动调节屏幕的亮度。下面通过一个实例看一下如何监测周边环境的亮度值。主布......
  • Android - 使用SpannableString设置复合文本
    TextView通常用来显示普通文本,但是有时候需要对其中某些文本进行样式、事件方面的设置。Android系统通过SpannableString类来对指定文本进行相关处理,具体有以下功能:1、Backg......
  • android属性之clearTaskOnLaunch
    clearTaskOnLaunch有没有这样的需求,每次从桌面进入都启动根Activity?可以使用这个属性实现哦,下面通过一个实例来看一下效果:1.MainActivity.java(根Activity):packagecom.examp......
  • Android实战简易教程-第二十枪(GridView长按显示删除)
    用过UC浏览器的都使用过如下功能:长按图标会弹出删除的图标,我们下面研究一下如何实现类似效果。1.配置main.xml文件:<RelativeLayoutxmlns:android="http://schemas.android.......
  • Android开发技巧四--圆角化控件,让它看起来更美
    当需要为应用程序UI控件选择背景的时候,开发者会添加自定义的颜色和形状来代替系统的默认样式,圆角边框看起来是很不错的效果,开发者只需要添加几行代码,就可以在应用程序中使用......
  • Android clean后出现很多错误解决办法
    当我们从别的项目中拷入一个布局文件进我们的项目时,可能出现在activity中无法找到控件的情况,这时如果你clean了一下项目,就会出现很多报错,这是由于在项目有错误的情况下clean......
  • Android实战简易教程-第二十一枪(GridView动态添加Item)
    本例子实现在GridView的最后显示一个增加图片,点击图片动态增加内容item。1.main.xml:<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xml......
  • Android实战简易教程-第二十五枪(基于Baas的数据表查询下拉刷新和上拉加载实现!)
    上一节我们实现了数据表的加载,但是,当数据表数据很多时,我们就要考虑数据的分页,这里我们选用了PullToRefreshListView控件,先看一下该控件的说明:效果图:        ......
  • 关于MacBook怎么更新Android SDK
    昨天公司的人给了我一个VPN,但是还是无法更新SDK,后来发现将下图:通过VPN发送所有流量勾选以后就可以连接更新了,哎,处处皆学问,特此分享一下此经验。喜欢的朋友关注我哦!多谢支持......
  • Android 找不到资源文件错误的解决办法
    有些时候我们明明在layout文件夹下面配置了布局文件,但是在activity中却报错,提示找不到该文件。解决办法:这是因为你导入的R包不对,将activity文件import中后缀为.R的一行删除,......