Was bietet mir die Android-Funktion getMaxAmplitude () für den MediaRecorder?

Der Android MediaRecorder hat eine Funktion

.getMaxAmplitude();
welche, wie dieAPI sagt mir,Msgstr "Gibt die maximale absolute Amplitude zurück, die seit dem letzten Aufruf dieser Methode abgetastet wurde." aber ich kann nicht finden, welche Amplitude das ist? Ist es in Pascal oder Watt?

Ich habe auf mehreren Seiten im Internet festgestellt, dass Sie einen Wert berechnen können, der in enger Beziehung zu Dezibel steht (wie vorgeschlagen)Hier).

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

das würde mich annehmen lassen, dass der zurückgegebene Wert in einer linearen Skala ist (wahrscheinlich so etwas wie milipascal ...)

REFERENCE = 0.1 (Ich bin mir bewusst, dass dies ungefähr 2 * 10 ^ (- 5) Pascal ((20 uPascal)) sein sollte, aber das gibt seltsame Werte zurück ... 0.1 funktioniert seltsamerweise besser.)

Im Moment messe ich die MaxAmplitude () mit dem

getMaxAmplitude()
und setzen Sie dies in die VariableAmplitude.

Dies ist die Methode:

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

Dies geschieht fünfmal in einer halben Sekunde, was eine Art Durchschnitt ergibt

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

Ich bekomme etwas, das irgendwie nach Dezibel aussieht, aber ich bin mir nicht sicher, ob es tatsächlich Dezibel ist ...

Könnte mir jemand dabei helfen? Es scheint sehr seltsam, dass die API überhaupt nicht specefy, was zurückgegeben wird ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage