ऑडियो प्लेयर उन विशेषताओं का समर्थन करते हैं जो परिभाषित करती हैं कि ऑडियो सिस्टम निर्दिष्ट स्रोत के लिए रूटिंग, वॉल्यूम और फ़ोकस निर्णयों को कैसे संभालता है। एप्लिकेशन एक ऑडियो प्लेबैक (जैसे स्ट्रीमिंग सेवा द्वारा चलाए गए संगीत या किसी नए ईमेल के लिए अधिसूचना) के लिए विशेषताओं को संलग्न कर सकते हैं, फिर ऑडियो स्रोत विशेषताओं को ढांचे में पास कर सकते हैं, जहां ऑडियो सिस्टम मिश्रण निर्णय लेने और अनुप्रयोगों को सूचित करने के लिए विशेषताओं का उपयोग करता है। प्रणाली की स्थिति के बारे में।
एंड्रॉइड 4.4 और इससे पहले के संस्करण में, फ्रेमवर्क ने केवल ऑडियो स्ट्रीम प्रकार का उपयोग करके मिश्रित निर्णय लिए। हालाँकि, ऐसे निर्णयों को स्ट्रीम प्रकार पर आधारित करना कई अनुप्रयोगों और उपकरणों में गुणवत्ता वाले आउटपुट का उत्पादन करने के लिए बहुत सीमित था। उदाहरण के लिए, किसी मोबाइल डिवाइस पर, कुछ एप्लिकेशन (अर्थात Google मानचित्र) ने STREAM_MUSIC स्ट्रीम प्रकार पर ड्राइविंग दिशा-निर्देश चलाए; हालांकि, प्रोजेक्शन मोड (यानी एंड्रॉइड ऑटो) में मोबाइल उपकरणों पर, एप्लिकेशन अन्य मीडिया स्ट्रीम के साथ ड्राइविंग दिशाओं को नहीं मिला सकते हैं।
ऑडियो एट्रीब्यूट एपीआई का उपयोग करते हुए, एप्लिकेशन एक विशिष्ट ऑडियो स्रोत के बारे में विस्तृत जानकारी के साथ ऑडियो सिस्टम प्रदान करते हैं, जिसमें उपयोग (स्रोत क्यों चल रहा है), सामग्री प्रकार (स्रोत क्या चल रहा है), झंडे (स्रोत को कैसे चलाया जाना चाहिए) शामिल हैं। और संदर्भ (एंड्रॉइड 9 में नया)। वाक्य - विन्यास:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- प्रयोग । निर्दिष्ट करता है कि स्रोत क्यों चल रहा है और रूटिंग, फ़ोकस और वॉल्यूम निर्णयों को नियंत्रित करता है।
- सामग्री प्रकार । निर्दिष्ट करता है कि स्रोत क्या खेल रहा है (संगीत, चलचित्र, भाषण, ध्वनिकरण, अज्ञात)।
- प्रसंग । ऑडियो एचएएल में उपयोग किए गए उपयोग मूल्य।
- झंडे । निर्दिष्ट करता है कि स्रोत को कैसे चलाया जाना चाहिए। श्रव्यता प्रवर्तन (कुछ देशों में आवश्यक कैमरा शटर ध्वनियां) और हार्डवेयर ऑडियो/वीडियो सिंक्रनाइज़ेशन के लिए समर्थन शामिल है।
डायनामिक्स प्रोसेसिंग के लिए, एप्लिकेशन को मूवी, संगीत और भाषण सामग्री के बीच अंतर करना चाहिए। डेटा के बारे में जानकारी भी मायने रख सकती है, जैसे कि जोर और शिखर नमूना मूल्य।
विशेषताओं का उपयोग करना
उपयोग उस संदर्भ को निर्दिष्ट करता है जिसमें धारा का उपयोग किया जाता है, यह जानकारी प्रदान करता है कि ध्वनि क्यों चल रही है और ध्वनि का उपयोग किस लिए किया जाता है। उपयोग की जानकारी एक स्ट्रीम प्रकार की तुलना में अधिक अभिव्यंजक है और प्लेटफ़ॉर्म या रूटिंग नीतियों को वॉल्यूम या रूटिंग निर्णयों को परिष्कृत करने की अनुमति देती है।
किसी भी उदाहरण के लिए निम्नलिखित उपयोग मूल्यों में से एक की आपूर्ति करें:
- USAGE_UNKNOWN
- USAGE_मीडिया
- USAGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- USAGE_ALARM
- USAGE_NOTIFICATION
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_DELAYED
- USAGE_NOTIFICATION_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
- USAGE_ASSISTANCE_SONIFICATION
- USAGE_GAME
- USAGE_VIRTUAL_SOURCE
- USAGE_ASSISTANT
ऑडियो विशेषता उपयोग मान परस्पर अनन्य हैं। उदाहरण के लिए, 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
ऑडियो विशेषता सामग्री प्रकार मान परस्पर अनन्य हैं। सामग्री प्रकारों के विवरण के लिए, ऑडियो विशेषता API देखें।
संदर्भों
एंड्रॉइड में प्रत्येक ध्वनि को जिम्मेदार एप्लिकेशन और ध्वनि उत्पन्न करने के कारण से पहचाना जाता है; और Android डिवाइस ध्वनि को प्रस्तुत करने का तरीका निर्धारित करने के लिए इस जानकारी का उपयोग करता है। Android 8.x और उसके बाद के संस्करण में, एप्लिकेशन लीगेसी स्ट्रीम प्रकारों (जैसे AudioSystem.STREAM_MUSIC
) या AudioAttributes
का उपयोग करके ध्वनि उत्पन्न होने के कारण की रिपोर्ट कर सकते हैं। Android 9 में, AudioAttributes.usage
मानों को HAL स्तर पर Contexts के रूप में सारगर्भित किया जाता है।
एचएएल ऑडियो संदर्भ | ऑडियो विशेषताओं का उपयोग |
---|---|
संगीत | मीडिया |
आवाज़ से आदेश | USAGE_ASSISTANT |
पथ प्रदर्शन | ASSISTANCE_NAVIGATION_GUIDANCE |
बुलाना | आवाज संचार |
रिंगटोन | सूचित करनेवाला रिंगटोन |
अधिसूचना | अधिसूचना |
अलार्म | अलार्म |
सिस्टम_साउंड | ASSISTANCE_SONIFICATION |
अनजान | अनजान |
आप किसी भी उदाहरण के लिए निम्नलिखित CONTEXT_NUMBER
मानों में से एक की आपूर्ति कर सकते हैं:
- MUSIC_CONTEXT // संगीत प्लेबैक
- NAVIGATION_CONTEXT // नेविगेशन दिशाएँ
- VOICE_COMMAND_CONTEXT // वॉयस कमांड सेशन
- CALL_RING_CONTEXT // वॉयस कॉल रिंगिंग
- CALL_CONTEXT // वॉयस कॉल
- ALARM_CONTEXT // Android से अलार्म ध्वनि
- NOTIFICATION_CONTEXT // सूचनाएं
- SYSTEM_SOUND_CONTEXT // उपयोगकर्ता इंटरैक्शन ध्वनियां (बटन क्लिक, आदि)
झंडे
फ़्लैग निर्दिष्ट करते हैं कि ऑडियो फ़्रेमवर्क ऑडियो प्लेबैक पर कैसे प्रभाव डालता है। उदाहरण के लिए निम्न में से एक या अधिक फ़्लैग की आपूर्ति करें:
-
FLAG_AUDIBILITY_ENFORCED
। ध्वनि की श्रव्यता सुनिश्चित करने के लिए सिस्टम से अनुरोध करता है। लीगेसीSTREAM_SYSTEM_ENFORCED
(जैसे कि जबरदस्ती कैमरा शटर ध्वनियां) की जरूरतों को पूरा करने के लिए उपयोग करें। -
HW_AV_SYNC
। हार्डवेयर A/V सिंक्रनाइज़ेशन का समर्थन करने वाले आउटपुट स्ट्रीम का चयन करने के लिए सिस्टम से अनुरोध करता है।
ऑडियो विशेषता फ़्लैग गैर-अनन्य हैं और इन्हें जोड़ा जा सकता है। इन झंडों के विवरण के लिए, ऑडियो विशेषता 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 और उच्चतर के लिए एप्लिकेशन बनाते या अपडेट करते समय ऑडियो विशेषताओं का उपयोग करना चाहिए। हालांकि, विशेषताओं का लाभ लेने के लिए अनुप्रयोगों की आवश्यकता नहीं है; वे केवल लीगेसी स्ट्रीम प्रकारों को संभाल सकते हैं या विशेषताओं से अनजान रह सकते हैं (अर्थात एक सामान्य मीडिया प्लेयर जो अपने द्वारा चलाई जा रही सामग्री के बारे में कुछ भी नहीं जानता)।
ऐसे मामलों में, फ़्रेमवर्क पुराने डिवाइसों और Android रिलीज़ के साथ पश्चगामी संगतता बनाए रखता है, जो लीगेसी ऑडियो स्ट्रीम प्रकारों को ऑडियो विशेषताओं में स्वचालित रूप से अनुवादित करता है। हालांकि, फ्रेमवर्क इस मैपिंग को सभी डिवाइसों, निर्माताओं, या एंड्रॉइड रिलीज पर लागू या गारंटी नहीं देता है।
संगतता मानचित्रण:
एंड्रॉइड 5.0 और उच्चतर | Android 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 | (@hide) STREAM_BLUETOOTH_SCO |
FLAG_AUDIBILITY_ENFORCED | (@hide) STREAM_SYSTEM_ENFORCED |
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING | (@hide) STREAM_DTMF |
बहिष्कृत स्ट्रीम प्रकार
Android 9 ऑटोमोटिव उपयोग के लिए निम्न स्ट्रीम प्रकारों को हटा देता है:
- STREAM_DEFAULT
- STREAM_VOICE_CALL
- STREAM_SYSTEM
- STREAM_RING
- STREAM_MUSIC
- STREAM_ALARM
- STREAM_NOTIFICATION
- STREAM_BLUETOOTH_SCO
- STREAM_SYSTEM_ENFORCED
- STREAM_DTMF
- STREAM_TTS
- STREAM_ACCESSIBILITY
अधिक जानकारी के लिए ऑटोमोटिव ऑडियो देखें।