ब्लूटूथ हैंड्स फ्री क्लाइंट वॉल्यूम कंट्रोल


80

मेरे पास hfp का उपयोग करते हुए एक हैंड्स फ्री क्लाइंट डिवाइस के रूप में एक एंड्रॉइड डिवाइस है।

निम्नलिखित कोड का उपयोग करना:

मैं एक कॉल प्राप्त करने में सक्षम हूं और स्पीकर और माइक अपेक्षित रूप से काम कर रहे हैं।

मेरी समस्या यह है कि मैं वॉल्यूम को नियंत्रित नहीं कर सकता।

मैंने सही स्ट्रीम खोजने के लिए कोड की निम्नलिखित पंक्तियों का उपयोग करने की कोशिश की, लेकिन उनमें से कोई भी काम नहीं करता है।

मैंने फ़ोन से क्लाइंट को क्लास में भेजे जा रहे वॉल्यूम कमांड को ट्रैक किया HeadsetClientStateMachine, लाइन # 1822 को नीचे दिए गए लिंक में: HeadsetClientStateMachine से लॉलीपॉप

case EVENT_TYPE_VOLUME_CHANGED:
    if (event.valueInt == HeadsetClientHalConstants.VOLUME_TYPE_SPK) {
        mAudioManager.setStreamVolume(AudioManager.STREAM_BLUETOOTH_SCO, event.valueInt2, AudioManager.FLAG_SHOW_UI);
        mVgsFromStack = true;
       Log.d(TAG, "EventVolumeChange STREAM_BLUETOOTH_SCO value: " + event.valueInt2);
    }

जब मैं फोन पर वॉल्यूम बदलता हूं, तो मैं ध्वनि के अपडेटेड मूल्य को दिखाते हुए लॉग को देखता हूं, जिसका अर्थ है कि setStreamVolume()विधि को बुलाया जा रहा है, लेकिन वॉल्यूम नहीं बदलता है।

क्या किसी को पता है कि इस मुद्दे का क्या कारण हो सकता है?

संपादित करें:

मैं अभी भी एक उत्तर की तलाश कर रहा हूं और अब ऑडियो एचएएल कार्यान्वयन की ओर देख रहा हूं। मुझे संदेह है कि HAL और ऑडियो ड्राइवर के बीच लिंक किसी तरह गलत है ... मुझे निम्न स्तर के कार्यान्वयन के बारे में ज्यादा जानकारी नहीं है और मुझे यकीन नहीं है कि मुझे क्या देखना चाहिए।


1
मैं उल्लेख करना भूल गया: HFPClient कक्षाएं किटकैट में मौजूद नहीं हैं: android.googlesource.com/platform/frameworks/base/+/… वे लॉलीपॉप से ​​वापस पोर्ट किए गए थे, इस प्रकार मेरे द्वारा उपयोग किया जाने वाला कोड लॉलीपॉप कार्यान्वयन के समान है।
Distwo

1
यह हो सकता है, मैं अभी उस दिशा में जांच कर रहा हूं। समानांतर में मैं सोच रहा था कि क्या एचएफपी क्लाइंट प्रोफाइल के साथ एंड्रॉइड का एक ज्ञात व्यवहार था जो इसे वॉल्यूम को नियंत्रित करने से रोकता है।
Distwo

1
विषम भाग ध्वनि काम करता है, ब्लूटूथ वॉल्यूम परिवर्तन घटना को पारित किया जा रहा है, और सेटस्ट्रीमवोल्यूम () विधि को उसी तरह कहा जा रहा है जिस तरह से यह होना चाहिए। यह सिर्फ वॉल्यूम समायोजित करने के लिए प्रतीत नहीं हो सकता ...
Distwo

मैंने अलग-अलग हार्डवेयर पर परीक्षण किया है, लेकिन सभी एक ही आर्किटेक्चर के साथ हैं क्योंकि यह एकमात्र ऐसा है जो मेरा कस्टम रोम सपोर्ट करता है ...
Distwo

मुझे आश्चर्य है कि अगर इस समस्या से संबंधित कुछ भी हो: android.googlesource.com/platform/hardware/libhardware/+/…
Distwo

जवाबों:


3

क्या आप नीचे कोशिश कर सकते हैं अगर मैंने सही तरीके से समझा तो मैंने खुद को आजमाया नहीं, लेकिन इसी तरह की समस्या महसूस की:

Android ब्लूटूथ इयरपीस वॉल्यूम

" एंड्रॉइड ब्लूटूथ वॉल्यूम के लिए int 6 का उपयोग कर रहा है और दस्तावेज नहीं है। AudioManager.STREAM_VOICE_CALL के बजाय 6 का उपयोग करें और कोशिश करें, यह काम करना चाहिए "

मेरा मानना ​​है कि आपको AudioManager.STREAM_BLUETOOTH_SCO को 6 से बदलना होगा।

सौभाग्य, मुझे उम्मीद है कि यह काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.