ऑडियो प्लेयर उन विशेषताओं का समर्थन करते हैं जो परिभाषित करते हैं कि ऑडियो सिस्टम निर्दिष्ट स्रोत के लिए रूटिंग, वॉल्यूम और फोकस निर्णयों को कैसे संभालता है। एप्लिकेशन ऑडियो प्लेबैक में विशेषताओं को संलग्न कर सकते हैं (जैसे स्ट्रीमिंग सेवा द्वारा चलाया गया संगीत या नए ईमेल के लिए अधिसूचना) फिर ऑडियो स्रोत विशेषताओं को फ्रेमवर्क में पास कर सकते हैं, जहां ऑडियो सिस्टम मिश्रण निर्णय लेने और अनुप्रयोगों को सूचित करने के लिए विशेषताओं का उपयोग करता है सिस्टम की स्थिति के बारे में.
एंड्रॉइड 4.4 और इससे पहले के संस्करण में, फ्रेमवर्क ने केवल ऑडियो स्ट्रीम प्रकार का उपयोग करके मिश्रण संबंधी निर्णय लिए। हालाँकि, स्ट्रीम प्रकार पर ऐसे निर्णयों को आधारित करना कई अनुप्रयोगों और उपकरणों में गुणवत्तापूर्ण आउटपुट उत्पन्न करने के लिए बहुत सीमित था। उदाहरण के लिए, मोबाइल डिवाइस पर, कुछ एप्लिकेशन (यानी Google मैप्स) STREAM_MUSIC स्ट्रीम प्रकार पर ड्राइविंग निर्देश चलाते हैं; हालाँकि, प्रोजेक्शन मोड (यानी एंड्रॉइड ऑटो) में मोबाइल उपकरणों पर, एप्लिकेशन ड्राइविंग निर्देशों को अन्य मीडिया स्ट्रीम के साथ नहीं मिला सकते हैं।
ऑडियो एट्रिब्यूट एपीआई का उपयोग करते हुए, एप्लिकेशन ऑडियो सिस्टम को एक विशिष्ट ऑडियो स्रोत के बारे में विस्तृत जानकारी प्रदान करते हैं, जिसमें उपयोग (स्रोत क्यों चल रहा है), सामग्री प्रकार (स्रोत क्या चल रहा है), झंडे (स्रोत कैसे चलाया जाना चाहिए), शामिल है। और संदर्भ (एंड्रॉइड 9 में नया)। वाक्य - विन्यास:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- उपयोग . निर्दिष्ट करता है कि स्रोत क्यों चल रहा है और रूटिंग, फ़ोकस और वॉल्यूम निर्णयों को नियंत्रित करता है।
- सामग्री प्रकार । निर्दिष्ट करता है कि स्रोत क्या चला रहा है (संगीत, फिल्म, भाषण, ध्वनिकरण, अज्ञात)।
- प्रसंग । उपयोग मान ऑडियो एचएएल में सारगर्भित हैं।
- झंडे . निर्दिष्ट करता है कि स्रोत को कैसे चलाया जाना चाहिए। इसमें श्रव्यता प्रवर्तन (कुछ देशों में कैमरा शटर ध्वनि की आवश्यकता) और हार्डवेयर ऑडियो/वीडियो सिंक्रनाइज़ेशन के लिए समर्थन शामिल है।
डायनामिक्स प्रोसेसिंग के लिए, एप्लिकेशन को मूवी, संगीत और भाषण सामग्री के बीच अंतर करना होगा। डेटा के बारे में जानकारी भी मायने रख सकती है, जैसे ज़ोर और शिखर नमूना मूल्य।
गुणों का प्रयोग करें
उपयोग उस संदर्भ को निर्दिष्ट करता है जिसमें स्ट्रीम का उपयोग किया जाता है, यह जानकारी प्रदान करता है कि ध्वनि क्यों चल रही है और ध्वनि का उपयोग किस लिए किया जाता है। उपयोग की जानकारी स्ट्रीम प्रकार की तुलना में अधिक अभिव्यंजक है और प्लेटफ़ॉर्म या रूटिंग नीतियों को वॉल्यूम या रूटिंग निर्णयों को परिष्कृत करने की अनुमति देती है।
किसी भी उदाहरण के लिए निम्नलिखित उपयोग मूल्यों में से एक की आपूर्ति करें:
- उपयोग_अज्ञात
- उपयोग_मीडिया
- उपयोग_आवाज़_संचार
- उपयोग_आवाज़_संचार_साइनलिंग
- उपयोग_अलार्म
- उपयोग_सूचना
- उपयोग_सूचना_टेलीफोनी_रिंगटोन
- उपयोग_सूचना_संचार_अनुरोध
- उपयोग_सूचना_संचार_तत्काल
- उपयोग_सूचना_संचार_विलंबित
- उपयोग_सूचना_घटना
- उपयोग_सहायता_पहुँच
- उपयोग_सहायता_नेविगेशन_मार्गदर्शन
- उपयोग_सहायता_सोनिफिकेशन
- उपयोग_खेल
- उपयोग_आभासी_स्रोत
- उपयोग_सहायक
ऑडियो विशेषता उपयोग मान परस्पर अनन्य हैं। उदाहरण के लिए, USAGE_MEDIA
और USAGE_ALARM
परिभाषाएँ देखें; अपवादों के लिए, AudioAttributes.Builder
परिभाषा देखें।
सामग्री प्रकार
सामग्री प्रकार परिभाषित करता है कि ध्वनि क्या है और सामग्री की सामान्य श्रेणी जैसे मूवी, भाषण, या बीप/रिंगटोन को व्यक्त करता है। ऑडियो फ्रेमवर्क ऑडियो पोस्ट-प्रोसेसिंग ब्लॉकों को चुनिंदा रूप से कॉन्फ़िगर करने के लिए सामग्री प्रकार की जानकारी का उपयोग करता है। सामग्री प्रकार की आपूर्ति करना वैकल्पिक है, जब भी सामग्री प्रकार ज्ञात हो, आपको प्रकार की जानकारी शामिल करनी चाहिए, जैसे मूवी स्ट्रीमिंग सेवा के लिए CONTENT_TYPE_MOVIE
का उपयोग करना या संगीत प्लेबैक एप्लिकेशन के लिए CONTENT_TYPE_MUSIC
का उपयोग करना।
किसी भी उदाहरण के लिए निम्नलिखित सामग्री प्रकार मानों में से एक की आपूर्ति करें:
-
CONTENT_TYPE_UNKNOWN
(डिफ़ॉल्ट) -
CONTENT_TYPE_MOVIE
-
CONTENT_TYPE_MUSIC
-
CONTENT_TYPE_SONIFICATION
-
CONTENT_TYPE_SPEECH
ऑडियो विशेषता सामग्री प्रकार मान परस्पर अनन्य हैं। सामग्री प्रकारों के विवरण के लिए, ऑडियो विशेषता एपीआई देखें।
संदर्भों
एंड्रॉइड में प्रत्येक ध्वनि की पहचान जिम्मेदार एप्लिकेशन और ध्वनि उत्पन्न करने के कारण से की जाती है; और एंड्रॉइड डिवाइस इस जानकारी का उपयोग यह निर्धारित करने के लिए करता है कि ध्वनि को कैसे प्रस्तुत किया जाए। एंड्रॉइड 8.x और उससे पहले के संस्करण में, एप्लिकेशन लीगेसी स्ट्रीम प्रकारों (उदाहरण के लिए AudioSystem.STREAM_MUSIC
) या AudioAttributes
का उपयोग करके ध्वनि उत्पादन कारण की रिपोर्ट कर सकते हैं। एंड्रॉइड 9 में, AudioAttributes.usage
मानों को HAL स्तर पर Contexts के रूप में अमूर्त किया जाता है।
एचएएल ऑडियो संदर्भ | ऑडियोविशेषताएँ उपयोग |
---|---|
संगीत | मिडिया |
आवाज़ से आदेश | उपयोग_सहायक |
मार्गदर्शन | सहायता_नेविगेशन_मार्गदर्शन |
पुकारना | आवाज संचार |
रिंगटोन | अधिसूचना रिंगटोन |
अधिसूचना | अधिसूचना |
खतरे की घंटी | खतरे की घंटी |
सिस्टम_ध्वनि | सहायता_सोनिफिकेशन |
अज्ञात | अज्ञात |
आप किसी भी उदाहरण के लिए निम्नलिखित CONTEXT_NUMBER
मानों में से एक प्रदान कर सकते हैं:
- MUSIC_CONTEXT // संगीत प्लेबैक
- NAVIGATION_CONTEXT // नेविगेशन दिशानिर्देश
- VOICE_COMMAND_CONTEXT // वॉयस कमांड सत्र
- CALL_RING_CONTEXT // वॉयस कॉल बज रही है
- CALL_CONTEXT // वॉयस कॉल
- ALARM_CONTEXT // एंड्रॉइड से अलार्म ध्वनि
- अधिसूचना_संदर्भ // सूचनाएं
- SYSTEM_SOUND_CONTEXT // उपयोगकर्ता इंटरैक्शन ध्वनियाँ (बटन क्लिक, आदि)
झंडे
झंडे निर्दिष्ट करते हैं कि ऑडियो फ्रेमवर्क ऑडियो प्लेबैक पर कैसे प्रभाव लागू करता है। उदाहरण के लिए निम्नलिखित में से एक या अधिक झंडों की आपूर्ति करें:
-
FLAG_AUDIBILITY_ENFORCED
. सिस्टम से ध्वनि की श्रव्यता सुनिश्चित करने का अनुरोध करता है। पुरानेSTREAM_SYSTEM_ENFORCED
की जरूरतों को पूरा करने के लिए उपयोग करें (जैसे कि कैमरा शटर ध्वनि को मजबूर करना)। -
HW_AV_SYNC
। सिस्टम से एक आउटपुट स्ट्रीम का चयन करने का अनुरोध करता है जो हार्डवेयर ए/वी सिंक्रोनाइज़ेशन का समर्थन करता है।
ऑडियो विशेषता फ़्लैग गैर-अनन्य हैं और इन्हें संयोजित किया जा सकता है। इन झंडों के विवरण के लिए, ऑडियो विशेषता API देखें।
उदाहरण
इस उदाहरण में, AudioAttributes.Builder
एक नए AudioTrack
उदाहरण द्वारा उपयोग किए जाने वाले AudioAttributes
परिभाषित करता है:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
अनुकूलता
एप्लिकेशन डेवलपर्स को एंड्रॉइड 5.0 और उच्चतर के लिए एप्लिकेशन बनाते या अपडेट करते समय ऑडियो विशेषताओं का उपयोग करना चाहिए। हालाँकि, अनुप्रयोगों को विशेषताओं का लाभ उठाने की आवश्यकता नहीं है; वे केवल लीगेसी स्ट्रीम प्रकारों को संभाल सकते हैं या विशेषताओं से अनजान रह सकते हैं (यानी एक सामान्य मीडिया प्लेयर जो अपने द्वारा चलाए जा रहे कंटेंट के बारे में कुछ भी नहीं जानता है)।
ऐसे मामलों में, फ्रेमवर्क पुराने ऑडियो स्ट्रीम प्रकारों को स्वचालित रूप से ऑडियो विशेषताओं में अनुवाद करके पुराने उपकरणों और एंड्रॉइड रिलीज के साथ बैकवर्ड संगतता बनाए रखता है। हालाँकि, फ्रेमवर्क इस मैपिंग को सभी डिवाइस, निर्माताओं या एंड्रॉइड रिलीज़ पर लागू या गारंटी नहीं देता है।
संगतता मानचित्रण:
एंड्रॉइड 5.0 और उच्चतर | एंड्रॉइड 4.4 और इससे पहले का संस्करण |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION | STREAM_VOICE_CALL |
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION | STREAM_SYSTEM |
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE | STREAM_RING |
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE | STREAM_MUSIC |
CONTENT_TYPE_SONIFICATION USAGE_ALARM | STREAM_ALARM |
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT | STREAM_NOTIFICATION |
CONTENT_TYPE_SPEECH | (@छिपाएँ) STREAM_BLUETOOTH_SCO |
FLAG_AUDIBILITY_ENFORCED | (@छिपाएं) STREAM_SYSTEM_ENFORCED |
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING | (@छिपाएँ) STREAM_DTMF |
बहिष्कृत स्ट्रीम प्रकार
एंड्रॉइड 9 ऑटोमोटिव उपयोग के लिए निम्नलिखित स्ट्रीम प्रकारों को बंद कर देता है:
- स्ट्रीम_डिफ़ॉल्ट
- स्ट्रीम_वॉयस_कॉल
- स्ट्रीम_सिस्टम
- स्ट्रीम_रिंग
- स्ट्रीम_संगीत
- स्ट्रीम_अलार्म
- स्ट्रीम_सूचना
- स्ट्रीम_ब्लूटूथ_एससीओ
- स्ट्रीम_सिस्टम_ENFORCED
- स्ट्रीम_डीटीएमएफ
- स्ट्रीम_टीटीएस
- स्ट्रीम_पहुंच-योग्यता
अधिक विवरण के लिए, ऑटोमोटिव ऑडियो देखें।