2010-03-10 12 views
7

मैं एंड्रॉइड की ऑडियो रिकॉर्डिंग और प्लेबैक के साथ प्रयोग कर रहा हूं। क्या मेरे डिवाइस पर उपलब्ध ऑडियो पैरामीटर को गिनने का कोई तरीका है?मैं एंड्रॉइड पर ऑडियो क्षमताओं को कैसे निर्धारित करूं?

अभी, जब मैं पैरामीटर का संयोजन पास करता हूं जो हार्डवेयर (या एमुलेटर) पसंद नहीं करता है, तो मुझे बस एक त्रुटि मिलती है। तो मुझे "अनुमान" लग रहा है:

int bufferSize; 
int sampleRate; 

// does the audio hardware do 44 kHz? 
sampleRate = 44100; 
bufferSize = AudioRecord.getMinBufferSize(sampleRate, 
    AudioFormat.CHANNEL_CONFIGURATION_MONO, 
    AudioFormat.ENCODING_PCM_16BIT); 

if (bufferSize != AudioTrack.ERROR_BAD_VALUE) { 
    // Nope, how about 22 kHz? 
    sampleRate = 22050; 
} 

bufferSize = AudioRecord.getMinBufferSize(sampleRate, 
    AudioFormat.CHANNEL_CONFIGURATION_MONO, 
    AudioFormat.ENCODING_PCM_16BIT); 

if (bufferSize != AudioTrack.ERROR_BAD_VALUE) { 
    ... 

निश्चित रूप से एक बेहतर तरीका है!


This chart इंगित करता है कि केवल समर्थित ऑडियो इनपुट नमूना दर 8 kHz है? क्या वो सही है?

उत्तर

5

क्या आपने पहले से ही AudioTrack.getNativeOutputSampleRate(int streamType) देखा है?

+0

हाय मार्क - हाँ, मैंने इसे देखा है और यह पहेली का एक टुकड़ा है, लेकिन मैं कुछ और व्यापक (और इनपुट सेटिंग्स भी शामिल करता हूं) की उम्मीद कर रहा हूं। – Seth

+0

बमर। लगता है कि संभव पैरामीटर के माध्यम से लूपिंग वर्तमान में एकमात्र रास्ता संभव हो सकता है। इस पर किसी अन्य डेवलपर के काम के लिए http://bit.ly/c3BieY देखें। मैं मानता हूं कि यह बहुत इष्टतम नहीं है, एक getCapabilities() फ़ंक्शन अच्छा होगा। –

संबंधित मुद्दे