java - 安卓实现熄屏功能。
迷茫
迷茫 2017-04-18 10:53:12
0
2
651

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(2)
Ty80

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)

左手右手慢动作

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!