2014-09-08 5 views
1

Nous avons une application qui fonctionne sur un HP Slate 21 Pro avec Android 4.3, la tablette et la fonction d'application dans le contexte d'un kiosque où les utilisateurs peuvent s'y rendre pour effectuer un tâche.L'écran se fige et ne reconnaît pas les événements tactiles

L'application est assez petit et dispose de deux écrans:

Le premier écran permet l'entrée d'un numéro d'employé, cette entrée est prise à l'aide d'un lecteur USB RFID ci-joint qui lit une carte. Les lecteurs RFID agissent en utilisant l'émulation du clavier pour remplir un champ caché et "soumettre" le numéro en utilisant une tâche asynchrone à une API principale. Une fois que l'utilisateur a scanné sa carte, il est effectivement "connecté" et une seconde activité se charge, recherche les données pertinentes pour l'utilisateur à l'aide d'une tâche asynchrone et affiche l'utilisateur de données. À quel moment l'utilisateur peut sélectionner des éléments sur l'écran. Le problème que nous avons est qu'après avoir chargé cette activité avec les données d'un utilisateur, l'application ne répond pas aux événements tactiles, tous les boutons ne sont pas cliquables et ne répondent pas. En outre, le bouton Accueil, Retour et Articles récents de la tablette ne fonctionne pas non plus. Tous les boutons ne changent pas d'état lorsqu'ils sont pressés.

Il semblerait que l'écran soit verrouillé et ne prenne pas d'entrée utilisateur. Le défi est que cela n'arrive pas tout le temps, et nous n'avons pas réussi à reproduire le problème ailleurs que sur le terrain (production). La première pensée était quelque chose bloquait le thread principal, mais sur l'écran qui est chargé après que l'utilisateur "se connecte" il y a un délai d'écran initié en utilisant un gestionnaire pour poster un appel de délai d'attente où si l'utilisateur ne interagir avec l'écran, ils sont ramenés à l'écran principal, agissant effectivement comme "déconnecter" l'utilisateur pour l'inactivité. Ce gestionnaire déclenche et renvoie l'utilisateur à l'activité principale.

Une fois de retour à l'écran principal de la tablette ne fonctionne toujours pas répondu à toucher des événements, mais l'utilisateur peut scanner leur carte répéter le processus de « connecter » et sont prises au même écran à quel point le même comportement existe où l'écran ne répond pas aux événements tactiles.

est ici l'activité de base que le délai d'attente de l'écran est mis en œuvre:

public abstract class BaseActivity extends Activity { 

    @Override 
    public void onResume() { 
     super.onResume(); 
     resetDisconnectTimer(); 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     stopDisconnectTimer(); 
    } 

    @Override 
    public void onUserInteraction(){ 
     resetDisconnectTimer(); 
    } 

    public void quit(View view) { 

     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     if (imm != null) { 
      imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
     } 

     Intent intent = new Intent(this, MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
    } 

    public void resetDisconnectTimer(){ 
     disconnectHandler.removeCallbacks(disconnectCallback); 
     disconnectHandler.postDelayed(disconnectCallback, 10000); 
    } 

    public void stopDisconnectTimer(){ 
     disconnectHandler.removeCallbacks(disconnectCallback); 
    } 

    private Handler disconnectHandler = new Handler(){ 
     public void handleMessage(Message msg) { 
     } 
    }; 

    private Runnable disconnectCallback = new Runnable() { 
     @Override 
     public void run() { 
      quit(getWindow().getDecorView()); 
     } 
    };  

} 

Je l'ai fait quelques tests où je bloque délibérément le thread principal et le délai d'attente sera pas feu jusqu'à ce que le fil est débloquée qui conduit moi de croire que le fil n'est pas bloqué.

Finalement, après une période de temps (environ 10 à 30 secondes), l'application commence à répondre aux événements tactiles à nouveau.

EDIT 2014-09-30

Je commence à soupçonner quelque chose en plus du logiciel à l'origine d'un problème que ce dispositif a un bouton de réglage du matériel qui ouvrira ses portes l'application des paramètres.

Lorsque l'application se bloque, ce bouton matériel ouvre l'écran des paramètres. Toutefois, l'application de paramètres rencontre le même comportement que l'application d'origine car elle ne répond pas aux événements tactiles.

EDIT 2014-10-02

Je confirme que d'autres périphériques d'entrée lorsque l'écran tactile ne fonctionne pas. J'étais capable d'attacher une souris quand cette situation se produit. J'ai utilisé la souris pour naviguer vers l'écran d'accueil, puis vers l'écran des paramètres. Pendant ce temps, l'écran tactile n'a pas répondu, mais l'appareil répondait aux clics de la souris. Cela m'amène à croire qu'il y a un problème de matériel avec l'écran tactile.

Répondre

0

Nous avons confirmé que lorsque ce problème se produit, une souris et un clavier connectés fonctionnent toujours. Toutes les autres applications présentent le même comportement. En outre, lorsque ce problème se produit, nous sommes en mesure d'utiliser la moust pour naviguer vers l'écran des paramètres et activer l'indicateur tactile afin que les retouches de l'écran sont affichées sur l'écran. Lorsque cela est fait et l'écran est touché, l'événement réel apparaît sur l'écran à environ 6 à 8 pouces de distance.

Cet appareil est un écran tactile à deux points piloté par trois caméras. Nous avons contacté HP et ils ont déclaré que d'autres utilisateurs ont signalé des problèmes similaires et qu'ils examinent la question en indiquant qu'il s'agit d'un problème de pilote possible.

Il ne s'agit pas d'un problème logiciel mais d'un problème matériel à ce stade.

Questions connexes