¿Qué me da realmente la función getMaxAmplitude () de Android para el MediaRecorder?

El Android MediaRecorder tiene una función

.getMaxAmplitude();
el cual, como elAPI me dice,"Devuelve la amplitud absoluta máxima que fue muestreada desde la última llamada a este método". ¿Pero no puedo encontrar qué amplitud es esta? ¿Está en pascal o vatios?

He encontrado en varias páginas de la web que puede calcular un valor estrechamente relacionado con decibeles utilizando (como se sugiereaquí).

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

lo que me permite suponer que el valor devuelto está en una escala lineal (probablemente algo así como milipascal ...)

REFERENCIA = 0.1 (Soy consciente de que esto debería ser algo así como 2 * 10 ^ (- 5) Pascal ((20 uPascal)), pero que devuelve valores extraños ... 0.1 funciona de manera extraña mejor).

En este momento mido el MaxAmplitude () usando el

getMaxAmplitude()
y poner esto en la variableamplitud.

Este es el 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;
    }
}

Esto se hace 5 veces en medio segundo, lo que obtiene un promedio de

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);

Obtengo algo que parece decibelio, pero no estoy seguro de que sea realmente decibelio ...

Entonces, ¿podría alguien ayudarme en esto? Parece muy extraño que la API no especifique en absoluto lo que se devuelve ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta