在我的应用程序中,我有一个VerticalSeekBar
(一些自定义实现SeekBar
)当用户使用硬件按钮更改媒体音量时,谁的进度应该改变。以下是使用 的半工作解决方案ContentObserver
:
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
进度发生变化。
问题:是否有更可靠的方法来监听特定音量流的音量变化?请分享你的解决方案,以防你有一些