如何以编程方式向Android手机的扬声器发出短促的哔哔声

and*_*hin 25 android

为了在扬声器上接收到唯一的短蜂鸣声,我想直接将单个位发送到扬声器.与LED闪烁相似.没有任何媒体播放器,是否有可能发出短促的哔哔声?

Jos*_*osh 90

我建议你使用这ToneGenerator门课.它不需要音频文件,也不需要媒体播放器,您可以自定义蜂鸣音的音量,持续时间(以毫秒为单位)和音调类型.我喜欢这一个:

ToneGenerator toneGen1 = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);             
toneGen1.startTone(ToneGenerator.TONE_CDMA_PIP,150);  
Run Code Online (Sandbox Code Playgroud)

你可以看到ToneGenerator对象(CMD +点击ToneGenerator.,在Mac中),然后选择另一种蜂鸣声类型TONE_CDMA_PIP,150是持续时间(以毫秒为单位)和100音量.

  • @Mauker你可以使用'ToneGenerator.TONE_PROP_BEEP2'来实现双哔声. (3认同)

Kak*_*shi 15

只是添加乔希的答案.你需要释放ToneGenerator使用Handler.特别是如果你得到java.lang.RuntimeException: Init failed at android.media.ToneGenerator.native_setup(Native Method)像我一样的错误.

完整的代码:

import android.media.AudioManager
import android.media.ToneGenerator
import android.os.Handler
import android.os.Looper

class BeepHelper
{
val toneG = ToneGenerator(AudioManager.STREAM_ALARM, 100)

fun beep(duration: Int)
{
    toneG.startTone(ToneGenerator.TONE_DTMF_S, duration)
    val handler = Handler(Looper.getMainLooper())
    handler.postDelayed({
        toneG.release()
    }, (duration + 50).toLong())
}
}
Run Code Online (Sandbox Code Playgroud)

  • 祝福你加入进口声明!如果我想弄清楚如何做某事,我可能也不知道在哪里可以找到它.谢谢!:) (5认同)

Gha*_*yas 12

对于科特林:

ToneGenerator(AudioManager.STREAM_MUSIC, 100).startTone(ToneGenerator.TONE_PROP_BEEP, 200)
Run Code Online (Sandbox Code Playgroud)