2011-01-30 15 views
5

Hola, me preguntaba si usar la clase generador de tonos de Android sería posible crear un tono en un dispositivo y escuchar el mismo tono en otro dispositivo. Si esto es posible, tengo algunas otras preguntas.Micrófono Android para seleccionar un tono específico

Teniendo en cuenta el ruido de fondo ¿es posible escuchar solo este tono específico?

¿Este proceso requeriría muchos recursos?

¿Podría usar un tono que sea inaudible para el oído humano o cerca de él?

Por último, ¿podría usar un tono que solo pudiera escucharse a unos pocos pasos del dispositivo emisor?

Muchas gracias por yer tiempo chicos y chicas :)

Edición> gracias por la adición de la sabastian etiqueta de procesamiento de audio. Discription mucho mejor.

Respuesta

4

Sería una gran cantidad de CPU, sí. La forma de hacerlo es bastante simple: necesita una grabadora permanente que coloque los datos recibidos en una FFT (transformación rápida de Fourier). FFT básicamente hace una cosa: divide el audio en una escala de frecuencia/potencia. Con este resultado de "ruido de fondo limpiado", puede verificar cosas como "¿había un tono con 1000Hz reproduciéndose durante al menos 2 segundos?" - y actuar en consecuencia. Hay una implementación de FFT de velocidad razonable aquí: http://www.badlogicgames.com/wordpress/?p=449 FFT también se puede utilizar (en realidad, IS) para la detección de marcación de doble tono (DTMF): 2 frecuencias al mismo tiempo es mucho mejor que usar una (como la tasa de error caída significativamente y puede ir a una duración más corta para el envío/detección de tono).

"Inaudible" no será posible, ya que (a) el altavoz no puede producir tales sonidos (b) tiene una frecuencia de muestreo limitada, por lo que también está limitado tanto en la producción como en la grabación de dichas frecuencias altas.

"par de pies" se impondrá naturalmente (altavoz no muy fuerte, micrófono no muy bueno).

+0

Si se trabaja para Android 2.3, parece que hay FFT que ya están en el sistema, echa un vistazo a http://stackoverflow.com/questions/4720512/android-2-3-visualizer-trouble- understanding-getfft – Oliver

+0

muchachos muchas gracias por sus respuestas. Ahora al menos ahora puedo hacerlo. Todavía estoy muy confundido en el orden de las operaciones. Si hay alguien que sabe cómo se hace, podrían escribir un par de líneas de psudocódigo que muestren el orden de los pasos. Gracias por su ayuda – Keith

+0

Esto no será "un par de líneas de pseudo código", lo siento. Lo que desea es algo muy especial (para ser sincero, realmente complicado) con necesidades especiales, por lo que algún "pseudo código" no será de ninguna ayuda para usted. Si tiene problemas para ordenar "cuándo hacer qué (ordenar)", finalmente no estará listo para escribir este tipo de código. – Oliver

2

Eche un vistazo a esta otra pregunta: "Android: Need to record mic input". Creo que puede modificar eso para su tarea, luego con los bytes de sonido puede tener filtrado o FFT.

creo que sirve

Cuestiones relacionadas