Le Dell Streak a été découvert pour avoir une radio FM qui a des commandes très grossières. La `` numérisation '' n'est pas disponible par défaut, donc ma question est: est-ce que quelqu'un sait comment, en utilisant Java sur Android, on pourrait `` écouter '' la radio FM pendant que nous parcourons la gamme de fréquences en détectant le bruit blanc (ou un bon signal) afin agir comme une fonction de recherche normale d'une radio?
Réponses
Trop de publicités?L'utilisation d'une transformée de Fourier Rapide.
C'est ce que vous pouvez utiliser une transformée de Fourier Rapide pour. Il analyse le signal et détermine la force du signal à des fréquences différentes. Si il y a un pic dans la FFT la courbe du tout, il doit indiquer que le signal n'est pas simplement un bruit blanc.
Ici, c'est une bibliothèque qui prend en charge FFT. Aussi, ici est un blog avec le code source dans le cas où vous voulez vous renseigner sur ce que la FFT ne.
J'ai fait quelques travaux pratiques sur ce domaine précis, je vous recommande (si vous avez un peu de temps pour cela) pour essayez juste d'un peu d'expérimentation avant de recourir à la fft pratiquent. Le pcm flux peut être interprété de manière très complexely et subtilement (par l'effet de haute qualité de filtrage et de rééchantillonnage), mais peut également être pratiquement traitées à des fins diverses comme le chemin d'une ligne ondulée.
Le bruit blanc est imprévisible secouant de la ligne, ce qui n'est jamais-le-moins tout à fait en continu de l'intensité (rms, absolu..) Acoustique contenu est récurrent se tortille et occasionnelles et des surprises (des sauts, des sauts) :]
Non le bruit que le contenu d'un signal peut être estimée en effectuant des calculs rapides sur un fonctionnement de la fenêtre de la pcm flux de données.
Par exemple, le bruit sera fortement tendance à avoir une plus grande valeur pour le absolue de l'intégrale de sa dérivée, que les non-bruit. Je pense que c'est l'universitaire façon de dire ceci:
loop(n+1 to n.length)
{ sumd0+= abs(pcm[n]);
sumd1+= abs(pcm[n]-pcm[n-1]);
}
wNoiseRatio = ?0.8; //quite easily discovered, bit tricky to calculate.
if((sumd1/sumd0)<wNoiseRatio)
{ /*not like noise*/ }
Aussi, la course absolue moyenne de plus de ~16 ~30 échantillons de bruit blanc aura tendance à varier de moins, plus de bruit blanc de signal acoustique:
loop(n+24 to n.length-16)
{ runAbsAve1 += abs(pcm[n]) - abs(pcm[n-24]); }
loop(n+24+16 to n.length)
{ runAbsAve2 += abs(pcm[n]) - abs(pcm[n-24]); }
unusualDif= 5; //a factor. tighter values for longer measures.
if(abs(runAbsAve1-runAbsAve2)>(runAbsAve1+runAbsAve2)/(2*unusualDif))
{ /*not like noise*/ }
Cela concerne la façon dont le bruit blanc a tendance à être non-sporadique assez grand la durée moyenne de son entropie. Acoustique contenu est sporadique (localisée de puissance) et récurrents (répétitif de puissance). Le simple test réagit à l'acoustique de contenu avec les fréquences basses et pourrait être noyé par le contenu à haute fréquence. Il y a de simple à appliquer les filtres passe-bas qui pourrait aider (et sans doute d'autres adaptations).
Aussi, la racine de la moyenne des carrés peut être divisé par la moyenne de la somme absolue de fournir un autre rapport qui devrait être particulier à un bruit blanc, mais je ne peux pas comprendre ce qu'il est maintenant. Le ratio diffère pour les signaux produits dérivés.
Je pense comme simple formule signatures de bruit. Je suis sûr qu'il y a de plus.. Désolé de pas être plus précis, elle est floue et imprécise des conseils, mais c'est l'exécution de tests simples sur la sortie d'une fft. Pour une meilleure explication et d'autres idées peut-être, découvrez la statistique et stochastique(?) les mesures de l'entropie et de l'aléatoire sur wikipédia, etc.
Autant que je sache, il n'y a pas d'API ou même des pilotes pour la Radio FM dans le SDK Android et à moins que Dell libère l'un de vous devra rouler votre propre. C'est même pire que ça. Tous(?) les nouveaux chipsets a la Radio FM, mais pas tous les téléphones dispose d'une Radio FM l'application.
Le vieux Windows Mobile avait le même problème.