Постоянно проверяйте изменение громкости в службах Android

Я написал этот фрагмент кода, он явно испорчен. Как мне создать службу, которая будет постоянно проверять изменения в объеме? Ключевые слушатели не могут использоваться в сервисах, пожалуйста, не отправляйте ответ слушателям громкости.

Мой код неправильный, потому что я дал фиктивное условие для цикла while. Каким должно быть условие для моего обслуживания, чтобы проверить изменение объема и не сбой? Он не может быть isScreenOn() поскольку громкость может быть изменена во время прослушивания музыки, а экран выключен.

КОД

 AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); int newVolume=0; while(1==1) { newVolume = audio.getStreamVolume(AudioManager.STREAM_RING); if(currentVolume!=newVolume) { Toast.makeText(this, "Volume change detected!", Toast.LENGTH_LONG).show(); } } в AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE); int currentVolume = audio.getStreamVolume(AudioManager.STREAM_RING); int newVolume=0; while(1==1) { newVolume = audio.getStreamVolume(AudioManager.STREAM_RING); if(currentVolume!=newVolume) { Toast.makeText(this, "Volume change detected!", Toast.LENGTH_LONG).show(); } } 

Если вы хотите увидеть, как изменится этот параметр, вы можете зарегистрировать ContentObserver с поставщиком параметров для его мониторинга. Например, это наблюдатель в приложении настроек:

  private ContentObserver mVolumeObserver = new ContentObserver(mHandler) { @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mSeekBar != null && mAudioManager != null) { int volume = mAudioManager.getStreamVolume(mStreamType); mSeekBar.setProgress(volume); } } }; 

И он зарегистрирован для наблюдения за такими настройками:

  import android.provider.Settings; import android.provider.Settings.System; mContext.getContentResolver().registerContentObserver( System.getUriFor(System.VOLUME_SETTINGS[mStreamType]), false, mVolumeObserver); 
Intereting Posts
YouTube api: не подключен. Вызовите connect () и дождитесь, когда onConnected () будет вызван Как проверить пользователей, уже выполнивших вход в android (Facebook SDK 4.0) Использование Try Catch Обработка исключений или явные проверки Ошибка при сбое Как сделать полный просмотр кругового изображения в android Как проверить покупку приложения для Android на стороне сервера (Google Play в приложении billing v3) Динамически изменять счетчик PagerIndicator в ViewPager или PagerAdapter Получить текущее местоположение без интернет-телефонии geolocation api для Android Программно запускает событие Touch в android Перемещение между простыми действиями Андроидное затмение не создает пустую активность UnsupportedOperationException при вызове getSharedPreferences () из модульного теста Плагины Cordova 3.3.1-0.1.2 (Phonegap) не работают Как нарисовать сетку wireframe со скрытыми линиями, удаленными в OpenGL ES? Изменение размера EditText внутри AlertDialog