एंड्रॉइड मीडियाआरकॉर्डर में MediaRecorder के लिए एंड्रॉइड के getMaxAmplitude() फ़ंक्शन वास्तव में मुझे क्या देता है?
.getMaxAmplitude();फ़ंक्शन है, जो API मुझे बताता है, "इस विधि के अंतिम कॉल के बाद से नमूना किया गया अधिकतम पूर्ण आयाम देता है।" लेकिन मुझे यह नहीं पता कि यह किस आयाम है? क्या यह पास्कल या वाट में है?
मुझे वेब पर कई पेजों पर पाया गया है कि आप डेसिबल का उपयोग करके बारीकी से मूल्य की गणना कर सकते हैं (जैसा कि here सुझाया गया है)।
double db = (20 * Math.log10(amplitude/REFERENCE));
जो मुझे लगता है कि दिए गए मान कुछ रैखिक पैमाने में है दिया जाएगा (शायद milipascal की तरह कुछ ...)
संदर्भ = 0.1 (मुझे पता है कि यह होना चाहिए हूँ कुछ की तरह 2 * 10^(- 5) पास्कल ((20 uPascal)), लेकिन यह अजीब मूल्यों ... 0.1 अजीब बेहतर काम करता है)
अभी मैं मापने MaxAmplitude()
getMaxAmplitude()का उपयोग कर और चर आयाम में डाल देता है।।
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;
}
}
यह आधे सेकंड में 5 बार किया जाता है, जो औसत
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);
की तरह हो जाता है मैं कुछ है कि थोड़े डेसिबल की तरह लग रहा मिलता है लेकिन मैं:
इस विधि है मुझे यकीन नहीं है कि यह वास्तव में decibel है ...
तो, क्या कोई इस पर मेरी मदद कर सकता है? यह बहुत अजीब लगता है कि एपीआई वापस लौटाए गए सभी चीज़ों पर specefy नहीं है ...
यह काम करता है, यह समझाने के लिए धन्यवाद कि MaxAmplitude क्या प्राप्त करता है। लेकिन मुझे यकीन नहीं है कि ये सही डीबी मूल्य हैं या नहीं। जब मैं कुछ मामलों में परीक्षण करता हूं और मूल्यों की तुलना करने की कोशिश करता हूं: http://www.newton.dep.anl.gov/askasci/phy99/phy99405.htm, 30 डीबी गायब है। क्या आपको कोई विचार है क्यों? – Wissem
कई कारण हो सकते हैं: 1. यह एल्गोरिदम गणना के लिए आधार के रूप में getMaxAmplitude का उपयोग करता है जिसका अर्थ है कि अवधि में सभी कम जोरदार घटनाओं को अनदेखा किया जाता है। इससे परिणामस्वरूप वास्तविक डीबी स्तर (और आमतौर पर प्राकृतिक वातावरण में) 2. फोन के माइक्रोफ़ोन अलग-अलग होते हैं। कुछ तो दूसरों को अधिक सेंसिबल हैं। यह एल्गोरिदम किसी भी फोन पर समान गणना करने पर इसे ध्यान में नहीं लेता है। इन दुविधाओं के कारण कुछ फोन काफी अधिक या कम मूल्य दे सकते हैं। –
इसके अतिरिक्त, सीमित कारक के कारण (मान केवल 32767 तक पहुंच जाता है), बहुत जोरदार शोर सटीक रूप से नहीं पता चला है। आमतौर पर कटऑफ लगभग 100 डीबी पर होगा। –