2012-07-02 31 views
5

मैं अपने मुख्य गतिविधिअधिसूचना ध्वनि मात्रा प्रोग्रामेटिक रूप से कैसे सेट करें?

private void beep() 
{ 
    AudioManager manager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 0, 
      AudioManager.FLAG_SHOW_UI + AudioManager.FLAG_PLAY_SOUND); 
    Uri notification = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), 
      notification); 
    r.play(); 
} 

मैं समझता हूँ के रूप में, सूचना ध्वनि मात्रा STREAM_NOTIFICATION द्वारा विनियमित किया जाना चाहिए में इस विधि है। लेकिन सेटस्ट्रीमवॉल्यूम विधि में वॉल्यूम नंबर के बावजूद अधिसूचना हमेशा एक ही वॉल्यूम के साथ खेलती है। ऐसा क्यों है?

उत्तर

5

पर सेट करने के बराबर है। मैं एक और तरीका चला गया। यह मेरे प्रश्न का बिल्कुल सही जवाब नहीं है बल्कि उपयुक्त है। जब मैं STREAM_MUSIC में अधिसूचना खेलता हूं तो सब कुछ ठीक है। तो अधिसूचना मात्रा के साथ वास्तव में खेलता है मैं समारोह

private void beep(int volume) 
{ 
    AudioManager manager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
    manager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0); 

    Uri notification = RingtoneManager 
      .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 

    MediaPlayer player = MediaPlayer.create(getApplicationContext(), notification); 
    player.start(); 
} 
+0

डिवाइस सेटिंग से सूचना बंद होने पर ध्वनि अभी भी चल रही है। क्या उपर्युक्त कोड का उपयोग कर इस मुद्दे का सामना करना पड़ रहा है? नोट - मैं जीसीएम नवीनतम पुस्तकालय का उपयोग कर रहा हूँ। –

2

सबसे पहले, मुझे आशा है कि आपको एहसास होगा कि आप एक-दूसरे के ठीक बाद दो अधिसूचनाएं चलाने का प्रयास कर रहे हैं, इसलिए इसके बारे में कोई संघर्ष हो सकता है। AudioManager.FLAG_PLAY_SOUND और r.play() दोनों ध्वनि बजाने का प्रयास करेंगे। आमतौर पर यूआई द्वारा या नई मात्रा के साथ बीप खेलकर उपयोगकर्ता को एक प्रकार की जानकारी देने के लिए पर्याप्त होता है। मेरा सुझाव है कि आप झंडे में से एक को हटा दें। आप किसी भी जरूरत नहीं है, बस इसे 0.

मुख्य प्रश्न के लिए आ रहा देते हैं, मुझे यकीन है कि आप की तरह

manager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, 1, AudioManager.FLAG_SHOW_UI); 

, करने के लिए 0. 1 डालने की कोशिश ध्वनि के स्तर को निर्धारित कर सकते हैं, तो नहीं कर रहा हूँ आप तो अधिसूचना को म्यूट करना चाहते हैं, setStreamMute का उपयोग करने का प्रयास करें, जो वॉल्यूम को 0

+0

मदद नहीं करता है। मैंने दोनों झंडे हटा दिए, लेकिन जब मैं ** 1 ** या ** 7 ** –

+0

डालता हूं तो अधिसूचना अभी भी उसी मात्रा के साथ खेला जाता है क्या आपने अपनी प्रकट फ़ाइल में MODIFY_AUDIO_SETTINGS अनुमति जोड़ दी थी? – Erol

+0

नहीं। मैनेजर में इस खंड को जोड़ने के बाद कुछ भी नहीं बदला - <अनुमति एंड्रॉइड: नाम = "MODIFY_AUDIO_SETTINGS"> –

-1

पालन एक समारोह लिखें, या कॉपी और पेस्ट करने के लिए निम्नलिखित पैरामीटर के रूप में पारित,

public void ringtone() { 
    try { 
     Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); 
     r.play(); 
    } catch (Exception e) {} 
} 

और ringtone() फोन जब आप एक बीप बनाना चाहते अधिसूचना।

+0

यह मेरे लिए पूरी तरह से काम करता है ... उम्मीद है कि यह आपको लोगों की मदद करेगा .. – Ragu