在Android上收听音量变化事件

有没有办法在Android上收听音量变化事件,而不仅仅是接管音量按钮?

我发现唯一有效的是here,但只有在音量控制消失后才有效.

并非所有设备都有音量按钮,我需要在音量发生变化时立即捕捉它们,而不是在音量对话框消失后.

解决方法:

更好的是,您可以按如下方式注册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);

但有一点需要注意 – 如果快速按下大量按钮,有时通知似乎会延迟.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...