在我的應用程序中我有一個VerticalSeekBar
(一些自定義實現SeekBar
)當用戶使用硬件按鈕更改媒體音量時進度應該改變。下面是使用半工作解決方案ContentObserver
:android - 檢測流量變化
public class SettingsContentObserver extends ContentObserver {
private VerticalSeekBar sb;
private AudioManager am;
public SettingsContentObserver(Handler handler, VerticalSeekBar sb, AudioManager am) {
super(handler);
this.sb = sb;
this.am = am;
}
@Override
public boolean deliverSelfNotifications() {
return super.deliverSelfNotifications();
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
sb.setProgress(am.getStreamVolume(AudioManager.STREAM_MUSIC));
}
}
活動:
@Override
protected void onResume() {
super.onResume();
mSettingsContentObserver = new SettingsContentObserver(new Handler(), vBar, audioMan);
this.getApplicationContext().getContentResolver().registerContentObserver(
android.provider.Settings.System.CONTENT_URI, true,
mSettingsContentObserver);
}
問題:檢測量的變化,但有幾秒鐘的延遲,直到他們得到檢測和SeekBar
的進步變化。
問題:是否有更可靠的方法來偵聽特定卷流上的音量變化?請分享你的解決方案,如果你有一些