5

私には自分自身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);

遅延を減らす方法はありますか?

4

2 に答える 2

8

ブロードキャストの処理AudioManager.ACTION_AUDIO_BECOMING_NOISYはトリックを行いました:)その意図は、ヘッドセットがプラグを抜かれた直後に遅滞なくブロードキャストされます。

于 2010-11-24T13:20:37.120 に答える
3

あなたは運が悪い。

遅延はフレームワークにハードコーディングされています。

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

オーディオパイプラインにゴミが入るリスクがあるため、遅延は1000ミリ秒です。

于 2010-11-08T14:54:02.760 に答える