내 앱 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
의 진행 변경 .
질문 : 특정 볼륨 스트림에서 볼륨 변경을 수신하는보다 안정적인 방법이 있습니까? 어떤 사람이있을 경우를 대비하여 해결책을 제공해주세요