बेहतर, आप एक ContentObserver
इस प्रकार के रूप में रजिस्टर कर सकते हैं:
getApplicationContext().getContentResolver().registerContentObserver(android.provider.Settings.System.CONTENT_URI, true, new ContentObserver(){...});
आपका ContentObserver इस प्रकार दिखाई देंगे:
public class SettingsContentObserver extends ContentObserver {
private AudioManager audioManager;
public SettingsContentObserver(Context context, Handler handler) {
super(handler);
audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
}
@Override
public boolean deliverSelfNotifications() {
return false;
}
@Override
public void onChange(boolean selfChange) {
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
Log.d(TAG, "Volume now " + currentVolume);
}
}
काम पूरा हो जाने:
getApplicationContext().getContentResolver().unregisterContentObserver(mContentObserver);
एक सावधानी ओह एच - कभी-कभी अधिसूचनाएं देरी लगती हैं यदि बहुत सारे बटन दबाए जाते हैं।
ContentObserver का उपयोग करें और ऑडीमेनगर से वॉल्यूम प्राप्त करें। मैंने हाल ही में इसका इस्तेमाल किया और यह बहुत अच्छा काम करता है। [इस समाधान को स्टैक ओवरफ्लो में देखें] (http://stackoverflow.com/questions/6896746/android-is-there-a-broadcast-action-for-volume-changes) – user2503849
यह ' एक पुरानी पोस्ट है, लेकिन यह कमजोर है कि अब तक एंड्रॉइड में ब्रॉडकैट लागू नहीं किया गया है .... 5 साल बाद, अभी भी कोई प्रसारण नहीं ... – Opiatefuchs
@Opiatefuchs शायद इसके लिए एक अनुरोध बनाएं, https://issuetracker.google.com/issues। मैं इसे तारांकित करूंगा :) –