2010-11-08 5 views
4

J'ai ma propre instance BroadcastReceiver pour l'action Intent.ACTION_HEADSET_PLUG. Il y a environ 1 à 2 secondes de retard entre le débranchement physique réel d'un casque et un moment où mon BroadcastReceiver est averti à ce sujet.ACTION_HEADSET_PLUG délai de diffusion

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); 

Des idées pour diminuer le délai?

Répondre

8

La manipulation AudioManager.ACTION_AUDIO_BECOMING_NOISY diffusion a fait l'affaire :) Son intention est diffusée directement après le casque est débranché sans aucun retard.

+0

Hé, je trouve génial que la réponse même (que je ne dis pas est faux) qui vous a dit non, a conduit à votre petit travail autour. Félicitations! – AedonEtLIRA

3

Vous n'avez pas de chance.

Le retard est codé en dur dans le cadre, regardez dans

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

Le délai est de 1000 ms, en raison du risque d'avoir des déchets dans le pipeline audio.