1

私のアプリでは、ユーザーがハードウェア ボタンを使用してメディアの音量を変更すると、進行状況が変化する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進行状況が変化するまで数秒の遅延があります。

質問: 特定のボリューム ストリームでボリュームの変化をリッスンするより信頼できる方法はありますか? いくつかある場合に備えて、解決策を共有してください

4

2 に答える 2