Maison  >  Questions et réponses  >  le corps du texte

java - 安卓实现熄屏功能。

在APP中定义一个时间(假设为5分钟),记录两次操作APP之间的时间间隔,如果大于之前定义的时间,则APP端实现发出命令,手机屏幕熄灭。该功能要如何实现?

迷茫迷茫2716 Il y a quelques jours657

répondre à tous(2)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:55:12

    Le premier point est la fonction d'écran de verrouillage. Vous pouvez vous référer à : https://github.com/chniccs/Lo...
    Ce petit projet est l'implémentation de la fonction d'écran de verrouillage, avec un petit montant. de code.

    Un autre point est de voir comment vous définissez chaque opération. Ici, afficher une activité au premier plan sera considéré comme une opération. Vous pouvez également réécrire l'écouteur tactile pour définir certaines opérations tactiles comme une opération.
    1. Écrivez une BaseActivity, envoyez un message retardé (diffusion ou autre gestionnaire) dans onResume (ceci est utilisé ici pour représenter une opération) et enregistrez l'heure actuelle (stockée dans une application personnalisée ou un singleton global ou un stockage de persistance )
    2. Selon la méthode précédente d'envoi de messages retardés, telle que la diffusion, après avoir reçu le message diffusé, comparez la valeur temporelle actuelle avec la valeur temporelle enregistrée à l'étape 1, si elle est inférieure à la valeur temporelle définie, puis la différence entre les deux valeurs de temps (stockées et actuelles) est reprise comme délai puis une diffusion est envoyée. Lorsque la diffusion sera reçue la prochaine fois, elle sera à nouveau jugée. Si elle est supérieure ou égale à la valeur temporelle, l'écran de verrouillage sera appelé.

    Explication : à l'étape 2, pourquoi devez-vous prendre la différence au lieu de renvoyer une diffusion à délai fixe ? En effet, après avoir envoyé la diffusion pour la première fois, vous pouvez effectuer certaines opérations, et ces opérations le feront ? être suivi plus tard. C'est-à-dire que lorsque vous recevez une diffusion différée, l'heure de la dernière opération n'est pas l'heure enregistrée lors de l'envoi de la diffusion, mais l'heure de la dernière opération réelle. Par conséquent, la valeur temporelle enregistrée doit être mise à jour après chaque opération.

    Calcul de la différence : temps maximum fixe défini sans opération - (heure actuelle - heure de la dernière opération)

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 10:55:12

    Adopter la méthode postDelayed(Runnable, long) de Handler
    1 Définir une classe Handler

    .
    Handler handler=new Handler();  
    Runnable runnable=new Runnable() {  
        @Override  
        public void run() {  
            // TODO Auto-generated method stub  
            //要做的事情  
            handler.postDelayed(this, 2000);  
        }  
    };  

    2. Démarrer la minuterie

    handler.postDelayed(runnable, 2000);

    3. Arrêtez le chronomètre

    handler.removeCallbacks(runnable); 
    

    C'est probablement la voie à suivre, vous décidez à votre rythme

    répondre
    0
  • Annulerrépondre