2012-09-24 19 views
11

यदि कोई उपयोगकर्ता वॉल्यूम कुंजी ऊपर या नीचे दबाता है तो क्या यह मेरे प्रसारण रिसीवर में इसका पता लगाना संभव है? मुझे पूरा कोड चाहिए।वॉल्यूम कुंजी के लिए एंड्रॉइड ब्रॉडकास्ट रिसीवर

यहाँ

IntentFilter filter = new IntentFilter(); 
filter.addAction("android.media.VOLUME_CHANGED_ACTION"); 

और मेरे onReceive विधि

public void onReceive(Context arg0, Intent intent) { 
     KeyEvent ke = (KeyEvent)intent.getExtras().get(Intent.EXTRA_KEY_EVENT); 
     if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) { 
       System.out.println("I got volume up event"); 
     }else if (ke .getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) { 
       System.out.println("I got volume key down event"); 
     } 
    } 

यह मुझे एक अशक्त KeyEvent देता है ... किसी भी विचार है मेरी आशय फिल्टर है?

उत्तर

11

इस इरादे में EXTRA_KEY_EVENT अतिरिक्त नहीं है। इसमें एक अतिरिक्त android.media.EXTRA_VOLUME_STREAM_VALUE है जिसमें नई मात्रा शामिल है।

int volume = (Integer)intent.getExtras().get("android.media.EXTRA_VOLUME_STREAM_VALUE"); 

यदि आप पुराना मान संग्रहीत करते हैं, तो आप अनुमान लगा सकते हैं कि वॉल्यूम ऊपर या नीचे दबाया गया था या नहीं।

+0

आपके उत्तर के लिए धन्यवाद लेकिन यह मुझे वही वॉल्यूम वैल्यू = 1 दे रहा है जब फोन चुप या कंपन या रिंगर वॉल्यूम पर पहला कदम है। मैं फोन का पता कैसे लगा सकता हूं चुप या कंपन है या कोई पहला मूल्य नहीं है? –

+1

आप ऑडियोमैनेजर का उपयोग यह पता लगाने के लिए कर सकते हैं कि आप कंपन, चुप या सामान्य मोड में हैं या नहीं: http://stackoverflow.com/questions/2048427/how-can-i-detect-whether-the-android-phone-in-silent -mode-programatically – Theus

+0

अधिकतम मात्रा में वॉल्यूम परिवर्तन पर मैंने ऐप शुरू किया लेकिन जब संगीत प्लेयर डिवाइस पर चल रहा था तो उस स्थिति में मैं वॉल्यूम परिवर्तन के शीर्ष पर अपना ऐप नहीं खोलना चाहता था। कोई मदद –

संबंधित मुद्दे