2012-07-25 8 views
9
पर

मैं अपने ऐप पर सैमसंग गैलेक्सी का परीक्षण कर रहा हूँ S3 है, जो दो स्पर्श बटन वापस बटन और मेनू बटनसभी अक्षम ध्वनि प्रभाव (हार्डवेयर कुंजी भी) एंड्रॉयड

मैं सभी को false को soundEffectsEnabled सेट है मेरे मूल विचारों के, और एक कस्टम थीम बनाने के साथ प्रयास किया (जैसा कि here में बताया गया है) और उस थीम को एप्लिकेशन की मेनिफेस्ट फ़ाइल पर सेट करना (मैंने इसे प्रत्येक Activity तत्व में भी जोड़ने की कोशिश की)। कोई सफलता नहीं।

यहाँ रेस में मेरी xml फ़ाइल है/ को महत्व देता है:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="MyCustomTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen"> 
    <item name="android:soundEffectsEnabled">false</item> 
</style> 
</resources> 

और मेरे Application तत्व के खुलने वाला टैग:

<application 
    android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/MyCustomTheme" > 

यह बनाता है और ठीक से चलाता है। NoTitleBar.Fullscreen भी काम करता है, लेकिन बैक और मेनू टच बटन ध्वनि को अभी भी चलाते हैं।

+0

की तरह दिखता है एक विकल्प साइलेंट मोड के लिए पूरे डिवाइस बदल रहा है? क्योंकि यह मेरी समझ के लिए है कि बैक, होम, रिकेंट्स और किसी अन्य हार्डवेयर कुंजी को सिस्टम प्रक्रिया द्वारा नियंत्रित किया जाता है। –

उत्तर

2

आप अपने सिस्टम या आपकी कोई भी गतिविधियां चल रहे हैं, तो आप सभी सिस्टम ध्वनियों को म्यूट करने के लिए AudioManager का उपयोग कर सकते हैं।

setStreamMute (पूर्णांक, बूलियन)

म्यूट या एक ऑडियो स्ट्रीम अनम्यूट।

म्यूट कमांड क्लाइंट प्रक्रिया मौत के खिलाफ सुरक्षित है: यदि स्ट्रीम पर सक्रिय म्यूट अनुरोध के साथ प्रक्रिया मर जाती है, तो यह स्ट्रीम स्वचालित रूप से अनम्यूट हो जाएगी।

एक दिया स्ट्रीम के लिए मूक अनुरोध संचयी होते हैं: AudioManager एक या अधिक ग्राहकों से कई मूक अनुरोध प्राप्त कर सकते हैं और धारा केवल जब अनम्यूट अनुरोध की एक ही नंबर प्राप्त कर रहे हैं अनम्यूट कर दिया जाएगा।

बेहतर उपयोगकर्ता अनुभव के लिए, अनुप्रयोगों को एक म्यूट स्ट्रीम को ऑनपॉज़() में अनम्यूट करना होगा और उचित होने पर म्यूट फिर से रेज़्यूम() में है।

तो, कार्यान्वयन इस

@Override 
protected void onResume() { 
    super.onResume(); 
    AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true); 
} 

@Override 
protected void onPause() { 
    AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, false); 
    super.onPause(); 
}