Чтобы получить единственный короткий звуковой сигнал на громкоговорителе, я хочу напрямую отправить один бит в громкоговоритель. Аналогично светодиоду мигает. Есть ли возможность делать короткий звуковой сигнал без каких-либо медиаплеер?
Как программировать краткий звуковой сигнал для громкоговорителя Android Phone
Ответ 1
Я рекомендую вам использовать класс ToneGenerator
. Он не требует аудиофайлов, нет медиаплеера, и вы можете настроить громкость звукового сигнала, продолжительность (в миллисекундах) и тип тона. Мне нравится этот:
ToneGenerator toneGen1 = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
toneGen1.startTone(ToneGenerator.TONE_CDMA_PIP,150);
Вы можете увидеть объект ToneGenerator (CMD + щелчок по ToneGenerator., На Mac) и выбрать другой звуковой сигнал, кроме TONE_CDMA_PIP
, 150
- это продолжительность в миллисекундах и 100
томов.
Ответ 2
просто добавив ответ josh. вам нужно освободить 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())
}
}