ACTION_HEADSET_PLUG задержка трансляции - PullRequest
4 голосов
/ 08 ноября 2010

У меня есть собственный экземпляр BroadcastReceiver для действия Intent.ACTION_HEADSET_PLUG. Между фактическим физическим отключением гарнитуры и моментом, когда мой BroadcastReceiver получает уведомление об этом, задержка составляет 1-2 секунды.

IntentFilter filter = new IntentFilter(Intent.ACTION_HEADSET_PLUG);
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY - 1);
registerReceiver(new BroadcastReceiver() {

  @Override
  public void onReceive(Context context, Intent intent) {
    // my code here
  }
}, filter);

Есть идеи, как уменьшить задержку?

Ответы [ 2 ]

8 голосов
/ 24 ноября 2010

Обработка AudioManager.ACTION_AUDIO_BECOMING_NOISY широковещательная передача сделала свое дело :) Его намерение транслируется сразу после отключения гарнитуры без каких-либо задержек.

3 голосов
/ 08 ноября 2010

Вам не повезло.

Задержка жестко прописана в рамке, смотрите в

frameworks/base/services/java/com/android/server/HeadsetObserver.java

Задержка составляет 1000 мс из-за риска наличия мусора в аудиопроводе.

...