android - sonido - pitido continuo al encender pc
Cómo reproducir un pitido corto al altavoz del teléfono Android mediante programación (2)
Para recibir el único pitido corto en el altavoz, deseo enviar un solo bit al altavoz directamente. Al igual que el LED parpadea. ¿Hay alguna posibilidad de hacer pitidos cortos sin ningún tipo de reproductores multimedia?
solo añadiendo la respuesta de josh. necesitas liberar ToneGenerator
usando Handler
. especialmente si obtuviste el error java.lang.RuntimeException: Init failed at android.media.ToneGenerator.native_setup(Native Method)
como lo hice.
el código completo:
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())
}
}
Te recomiendo que uses la clase ToneGenerator
. No requiere archivos de audio, ni reproductor multimedia, y puede personalizar el volumen, la duración (en milisegundos) y el tipo de tono del tono. Me gusta este:
ToneGenerator toneGen1 = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
toneGen1.startTone(ToneGenerator.TONE_CDMA_PIP,150);
Puede ver en el objeto ToneGenerator (CMD + clic sobre ToneGenerator., En Mac), y elegir otro tipo de pitido además de TONE_CDMA_PIP
, 150
es la duración en milisegundos y 100
el volumen.