私たちは、スマートフォンでの音量サンプリングを必要とするクロスプラットフォーム プロジェクトに取り組んでおり、可能な限り高い精度で結果を分析します。iPhone 開発者は、OS 自体によって計算された dB スケールで音量/音量を返す iOS 実装機能を使用しました。私の知る限り、Android OS には同等の機能はありません。
今のところ、私はOSによって与えられたMediaRecorderクラスでAndroidに取り組んでおり、getMaxAmplitudeを使用して音響パワー/音量を測定しています。振幅をdBスケールに転送する方法に関して、ネット上で多くの回答を見てきました。最も合理的に聞こえる答えは、次の式を使用することでした。
20*Math.log10(振幅/MAX_AMPLITUDE)
しかし、次に、getMaxAmplitude によって返される MAX_AMPLITUDE を知る必要があります。デバイスによって異なるということです。文書化された最大値であるいくつかの回答では)、S3では16383(HTCの半分)を超えていませんでした。
Q1 :
これ(上記のアプローチ)は正しいアプローチですか?音響パワー/音量を測定する正しい方法は、 RSM を計算してから dB に変換することであると読んだだけですが、これはiPhoneでどのように行われますか?
Q2 :
RSM または getMaxAmplitude からの振幅だけを使用しても問題ありません。レコード ハードウェアから取得できる最大の振幅を知る必要があるように思えます。それを知る方法はありますか? またはどういうわけかそれを回避する方法はありますか?