Dans le cadre d'une application plus large, je travaille actuellement sur un décibel mètres qui prend le niveau sonore moyen d'une durée de 10 secondes.Création d'un décibelmètre (première application Android), problèmes de conversion d'amplitude en décibels
Pour ce faire, j'ai fait un CountDownTimer de 10 000 milisecondes qui tourne toutes les 100 millisecondes.
Dans chaque événement onTick, je mets à jour le champ de texte indiquant le temps restant, et je mets également à jour la valeur du décibel en temps réel.
Mon problème est cependant de convertir l'amplitude maximale en décibels. J'ai trouvé le "power_db = 20 * log10 (amp/amp_ref);" La formule ici sur StackOverflow et je comprends comment cela fonctionne, mais il me semble toujours se retrouver avec une valeur décibel négative. Je comprends que cela est dû à une mauvaise valeur amp_ref, mais je suis absolument perplexe sur lequel je devrais utiliser. J'ai trouvé beaucoup de différentes valeurs sur le web et aucun ne semble faire l'affaire.
Quelqu'un at-il une idée de l'amplitude de référence que je devrais utiliser pour obtenir la lecture de décibels correcte sur mon compteur? Le téléphone que je suis en train de tester est un Google Nexus 5. Pour l'instant ce serait assez bon si c'était seulement une valeur vraiment précise sur ce téléphone si c'est de l'aide.
Le code que j'ai dans mon cas onTick est la suivante (j'ai enlevé la formule pour l'instant, car il semblait tort de toute façon):
public void onTick(long ms) {
meetBtn.setText(String.valueOf((ms/1000)+1));
amplitude = mRecorder.getMaxAmplitude();
decibelView.setText(String.valueOf(amplitude));
}
Si quelqu'un a des conseils ou a besoin de plus d'informations, s'il vous plaît faites le moi savoir!
Merci d'avance! :)