2017-07-13 6 views
0

J'essaie de trouver un moyen de simuler l'action d'une longue pression sur le bouton HOME. Je le bouton BACK travailler avec le code suivant:Android déclencheur par programmation longue presse HOME

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK)); this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));

Mais lorsque je tente d'imiter un (long) presse HOME même:

this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME)); 
// Thread.sleep(1000); Perhaps for long press? 
this.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_HOME)); 

Rien ne se passe. Y a-t-il un autre moyen d'imiter le bouton ACCUEIL?

Merci d'avance pour toute aide. Andrew

+0

Juste pour à ma connaissance je demande ceci, Puis-je savoir quel est le but principal de la tenue de long Appuyez sur le bouton Home ..? –

+0

effectivement je ne sais pas comment faire cela, donc je ne peux pas répondre à votre question. Mais sachez que tous les téléphones Android n'ont pas le même comportement lorsque vous appuyez longuement sur le bouton d'accueil. Certains ouvrent le sélecteur d'applications et d'autres ouvrent un assistant. Aussi, je me demande si vous pouvez survoler le comportement par défaut du bouton. Aller à regarder cette question – Extranion

+0

Eh bien, sur les nouveaux dispositifs Amazon Fire long appuyant sur le bouton Accueil déclenche Alexa à écouter, Ce qui est ce que je veux atteindre par programmation. –

Répondre

0

Vous pouvez essayer ceci:

this.dispatchKeyEvent(new KeyEvent((long) ViewConfiguration.getLongPressTimeout(), (long) 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_HOME), 0); // ViewConfiguration.getLongPressTimeout() returns the duration in milliseconds before a press turns into a long press 

Il utilise ce constructeur:

/** 
* Create a new key event. 
* 
* @param downTime The time (in {@link android.os.SystemClock#uptimeMillis}) 
* at which this key code originally went down. 
* @param eventTime The time (in {@link android.os.SystemClock#uptimeMillis}) 
* at which this event happened. 
* @param action Action code: either {@link #ACTION_DOWN}, 
* {@link #ACTION_UP}, or {@link #ACTION_MULTIPLE}. 
* @param code The key code. 
* @param repeat A repeat count for down events (> 0 if this is after the 
* initial down) or event count for multiple events. 
*/ 
public KeyEvent(long downTime, long eventTime, int action, 
       int code, int repeat) { 
    mDownTime = downTime; 
    mEventTime = eventTime; 
    mAction = action; 
    mKeyCode = code; 
    mRepeatCount = repeat; 
    mDeviceId = KeyCharacterMap.VIRTUAL_KEYBOARD; 
} 

Voir this. Cela pourrait aider.