O que a função getMaxAmplitude () do Android para o MediaRecorder realmente me oferece?

O Android MediaRecorder tem uma função

.getMaxAmplitude();
que, como oAPI diga-me,"Retorna a amplitude absoluta máxima que foi amostrada desde a última chamada para este método." mas não consigo encontrar que amplitude é essa? É em pascal ou watts?

Eu encontrei em várias páginas na web que você pode calcular um valor semelhante a decibéis usando (como sugeridoAqui).

double db = (20 * Math.log10(amplitude / REFERENCE)); 

o que me deixaria assumir que o valor retornado está em alguma escala linear (provavelmente algo como milipascal ...)

REFERENCE = 0.1 (estou ciente de que isso deve ser algo como 2 * 10 ^ (- 5) Pascal ((20 u Pascal)), mas que retorna valores estranhos ... 0.1 estranhamente funciona melhor.)

Agora eu medir o MaxAmplitude () usando o

getMaxAmplitude()
e colocar isso na variávelamplitude.

Este é o método:

public double getNoiseLevel() 
{
    //Log.d("SPLService", "getNoiseLevel() ");
    int x = mRecorder.getMaxAmplitude();
    double x2 = x;
    Log.d("SPLService", "x="+x);
    double db = (20 * Math.log10(x2 / REFERENCE));
    //Log.d("SPLService", "db="+db);
    if(db>0)
    {
        return db;
    }
    else
    {
        return 0;
    }
}

Isso é feito 5 vezes em meio segundo, o que fica meio que uma média

for(int i=0; i<5; i++)
{
    try 
    {
            Thread.sleep(100);
    } 
    catch (InterruptedException e) 
    {
            e.printStackTrace();
            return 0;
    }
    level = level+getNoiseLevel();
    if(level>0)
    {
        counter++;
    }
}
level=level/counter;
Log.d(LOG_TAG, "level="+level);

Eu recebo algo que parece um decibel mas não tenho certeza se é realmente um decibel ...

Então, alguém poderia me ajudar nisso? Parece muito estranho que a API não especifique em nada o que é retornado ...

questionAnswers(2)

yourAnswerToTheQuestion