保持声音样本播放直到按钮被释放android

Posted

技术标签:

【中文标题】保持声音样本播放直到按钮被释放android【英文标题】:Keep a sound sample playing till button is released android 【发布时间】:2016-05-14 02:38:43 【问题描述】:

我正在尝试实现一个可以播放弦乐的音乐键盘应用程序。弦音需要一直播放到用户松开按键。

我正在使用 1 秒的小样本,想法是使用 SoundPool on 循环样本

MotionEvent.ACTION_DOWN,

并停止它

ACTION_UP

被调用。但是循环似乎不起作用。我可以放一个“足够长”的声音样本,假设没有用户会长时间按住按钮,但这不是我希望应用程序工作的方式。

我该怎么办?

【问题讨论】:

【参考方案1】:

试试这个代码: 在 onCreate() 里面

mp=MediaPlayer.create(MainActivity.this,R.raw.beep);

b.setOnTouchListener(new View.OnTouchListener() 
        @Override
        public boolean onTouch(View v, MotionEvent event) 
            if (event.getAction() == MotionEvent.ACTION_DOWN) 
                mp.setLooping(true);
                mp.start();
            

            if (event.getAction() == MotionEvent.ACTION_UP) 
                mp.stop();
                mp=MediaPlayer.create(MainActivity.this,R.raw.beep);
            
            return false;
        
    );

【讨论】:

这可行,但循环不流畅。我使用了 1 秒长的正弦波样本。在声音结束一个循环并再次开始时(即在每次重复开始时),会引入一些奇怪的咔哒声 你能把那个音频发给我吗...让我检查一下 您可以通过在 Audacity 上单击生成 -> 音调 -> 正弦波,440Hz,幅度:1,持续时间:1 秒来创建它。我不知道怎么把声音文件发给你

以上是关于保持声音样本播放直到按钮被释放android的主要内容,如果未能解决你的问题,请参考以下文章

单击后的按钮保持按下状态直到方法结束

iPhone - 如何在按钮触摸时播放声音?

按下一个按钮它会发出声音。快速点击按钮和声音播放弹出和点击

如何正确释放 SoundPool 对象?

淡入/淡出声音

工具栏上的 xcoded 静音按钮可将应用程序的声音静音