2012-08-28 31 views
22

Me gustaría que mi aplicación emita un pitido con una frecuencia y duración específicas. En las ventanas de equivalente de esta aplicación (escrito en C#) he usado un ++ DLL C con la función¿Cómo hacer un pitido en Android?

beep(frequency, duration); 

¿Es lo mismo en Android? O al menos, ¿cómo puedo poner mi C++ dll en el proyecto?

Preferiría no utilizar mp3 pre-built o sonido de sistema porque quisiera dar al usuario la opción de la frecuencia y la duración.

+0

posible duplicado: http://stackoverflow.com/questions/6462105/how-do-i-access-androids-default-beep-sound – Max

+0

Tener una mirada en este posible duplicado también: http://stackoverflow.com/q/5279242/1127492 – Stefan

+0

Gracias por responder (a los dos) pero en realidad no es lo que estoy buscando. – Cippo

Respuesta

1

Si desea utilizar su código C++ en la aplicación para Android, es posible. Necesitas mirar Android NDK que te permite usar ejecutar código C++ con la ayuda de JNI (Java Native Interface).

Android NDK

+0

Ok ... ¿Podrían explicarme qué debo hacer? ¡Gracias! – Cippo

+0

Antes que nada necesitas instalar el ndk. en el enlace que di más arriba debería tener la guía para que te de cómo configurar (lo cual es bastante fácil). y aquí hay otro enlace para muestras de ndk que son la mejor manera de comenzar. [link] (http://developer.android.com/tools/sdk/ndk/index.html#Samples) – Dilberted

+0

Muchas gracias. En realidad, no puedo probarlo ahora porque estoy programando en mi tableta Android sin eclipse. Lo echaré un vistazo de todos modos. Nuevamente muchas gracias! – Cippo

14

La forma más fácil es usar instancia de la clase ToneGenerator:

// send the tone to the "alarm" stream (classic beeps go there) with 50% volume 
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50); 
if (val >= taux_max) { 
    taux_text.setTextColor(warnning_col); 
    toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms 
} 

Consulte la documentación de ToneGenerator y AudioManager de significado exacto de los parámetros y la posible configuración del generador.

74

Intenté la respuesta de amine.b. En resumen, para jugar un fuerte Bip:

ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100); 
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); 
+0

Me gusta este, realmente emitirá un pitido en lugar de un tono de llamada :) –

+2

Lo mejor sería usar un tono continuo como los de ToneGenerator.TONE_DTMF_0 a ToneGenerator.TONE_DTMF_S o el pitido generado puede sonar interrumpido. – ungalcrys

Cuestiones relacionadas