Comment forcer la détection des mots clés « OK Google » à fonctionner lorsque l'écran est éteint sur n'importe quel appareil [Root]

Il s'agit d'un didacticiel expliquant comment forcer n'importe quel appareil rooté à activer la détection des mots clés OK Google, même si son matériel ne prend pas en charge cette fonctionnalité !

Lorsque le Moto X (2013) a été annoncé pour la première fois, l'une des fonctionnalités les plus intéressantes (outre l'affichage ambiant) était sa capacité à se réveiller avec des commandes vocales.

Introduite plus tard sur les appareils Google Nexus et désormais disponible sur de nombreux produits phares, la capacité de reconnaissance de mots clés est un fonctionnalité assez géniale lorsque vous avez besoin d'effectuer une recherche rapide sur Google sans tâtonner avec l'appareil dans votre mains. Cela peut être extrêmement utile lorsque vous avez connecté votre téléphone à votre voiture et que vous devez démarrer la navigation vers une certaine destination. Il est de loin plus sûr d'utiliser votre voix pour démarrer la navigation sur Google Maps que toute autre alternative.

Malheureusement, pouvoir déclencher les commandes « OK Google » à tout moment nécessite une puce de reconnaissance vocale spéciale à faible consommation dans votre appareil. Bien que ce matériel soit présent dans de nombreux appareils, il ne l’est pas dans tous. Même les produits phares puissants et coûteux comme le Huawei Mate 9 ne proposent pas cette offre. Pour les appareils comme le mien, Google offre la possibilité de déclencher des commandes vocales « OK Google » lorsque l'écran est allumé ou lorsque l'appareil est branché sur un chargeur.

Il y a quelques années, il y avait une application du nom de Ouvrez Mic+ pour Google maintenant qui avait la possibilité d'activer un service d'arrière-plan pour écouter les commandes vocales à tout moment. Malheureusement, Google a demandé au développeur de cesser d'utiliser le service et le développeur n'a plus eu le temps de prendre en charge cette application, elle a donc été abandonnée. La seule option existante est d'utiliser Voix automatique, un plugin Tasker populaire, mais cela nécessite que vous ayez suffisamment de connaissances sur Tasker pour configurer des profils afin de répondre à des commandes spécifiques.

Pour ceux d'entre vous qui préféreraient s'appuyer sur le service de reconnaissance vocale de Google, j'ai trouvé une solution de contournement qui permet la détection des mots clés « OK Google » sur n'importe quel appareil rooté, même si son matériel ne le prend pas en charge. Il y a deux mises en garde à cette astuce, dont nous parlerons en détail ci-dessous.


Détection de mots clés "OK Google" sur n'importe quel appareil

La question que je me suis posée en réfléchissant à une solution de contournement à ce problème était la suivante :

Comment puis-je tromper mon appareil pour qu'il active le service de reconnaissance de mots clés sur ma commande ?

Étant donné que mon téléphone actuel ne prend pas en charge nativement la détection des mots clés lorsque l'écran est éteint, les seules conditions pour que cela fonctionne soient lorsque l'écran de mon téléphone est allumé ou lorsqu'il est en charge. Naturellement, puisque mon objectif est d'activer la détection des mots clés à tout moment (même lorsque l'écran est éteint), le fait que l'écran soit allumé irait à l'encontre de cet objectif. Devoir laisser mon appareil branché serait également inutile dans mes efforts, mais et si je pouvais astuce mon appareil remplit-il l'une ou l'autre de ces deux conditions ?

Heureusement, avec un peu de magie root et une utilisation intelligente des commandes de débogage, cela est tout à fait possible! En utilisant une commande shell de débogage destinée à des fins de test, je peux faire croire à mon appareil qu'il est en train de charger même s'il est débranché de toute source d'alimentation. La commande que nous allons exploiter pour nos besoins est dumpsys battery, dont vous pouvez lire les paramètres dans ce billet de blog de Roman Mazur.

Remarque: cette astuce est complètement sûr pour performer. Comme indiqué, cette commande ne fait que tromper votre appareil en lui faisant croire qu'il est en train de charger. Il ne s'agit PAS réellement d'une charge, même si les applications de surveillance de la batterie disent le contraire (c'est parce que ces applications recevront des informations incorrectes).

Il convient de noter en particulier le dumpsys battery set commande, qui accepte des paramètres pour définir si l'appareil est actuellement chargé ou non via un chargement secteur, USB ou sans fil. Par exemple, si nous ouvrons un shell racine sous Android et entrons la commande suivante, le l'appareil pensera qu'il est chargé via le secteur.

su
dumpsys battery set ac 1

En définissant cette commande (ou la commande de chargement USB/sans fil), vous pourrez désormais déclenchez les commandes OK Google lorsque votre écran est éteint. En effet, à toutes fins utiles, votre appareil est en train de « se charger », ce qui répond aux exigences d'activation du service de reconnaissance de mots clés de Google.

Puisqu'il s'agit d'une commande destinée au débogage (principalement destinée aux développeurs pour tester les fonctionnalités dans différentes conditions de batterie), elle présente certains inconvénients lorsqu'elle est utilisée de cette manière. Deux inconvénients en particulier que nous aborderons ensuite. Le premier inconvénient est plutôt simple à contourner, mais on ne peut pas en dire autant du deuxième inconvénient.

Inconvénient n°1 – Indicateur de batterie gelée

Après avoir entré une commande "dumpsys Battery Set", le service BatteryManager d'Android arrêter immédiatement de collecter toute autre donnée sur l'état de votre batterie. Cela signifie que le niveau de votre batterie, sa température, son courant, sa tension et son état de santé ne seront plus signalés par le système Android. Ils seront plutôt "gelés" dans le temps au moment où vous entrez la commande.

Cependant, ces données sont toujours en cours de collecte par le système même s'il est accessible par n'importe quelle application. Si vous souhaitez obtenir une mise à jour du niveau actuel de votre batterie, vous devrez faire quelques astuces. Heureusement, les données sont assez faciles à extraire. Si vous disposez de Tasker ou d'une autre application d'automatisation, tout ce que vous avez à faire est de créer une notification qui se met à jour en un clic avec le texte actuel stocké dans /sys/class/power_supply/battery/capacity.

Dans la capture d'écran ci-dessus, mon indicateur de batterie (visible lorsque je baisse la barre d'état) est bloqué à 70 %, mais comme vous pouvez le voir dans le terminal, mon niveau réel de batterie est de 69 %. Il serait facile d'interroger régulièrement ce fichier pour afficher un niveau de batterie précis dans ma barre de notification, mais il existe un moyen encore plus simple de contourner ce problème.

Faire face à cet inconvénient particulier est en fait incroyablement trivial. Si vous y réfléchissez, ce problème ne se présente que lorsque la commande est activée et lorsque l'écran est allumé. Mais le fait est que vous n'avez pas besoin d'activer cette commande lorsque l'écran est allumé, car la fonctionnalité par défaut vous permet d'accéder aux commandes « OK Google » lorsque l'écran est allumé. Ainsi, tout ce que vous avez à faire est simplement désactiver cette commande lorsque l'écran est allumé. Utiliser Tasker ou une autre application d'automatisation serait probablement le moyen le plus simple. Exécutez simplement cette commande pour désactiver l'astuce :

dumpsys battery reset

Et ci-dessous, vous trouverez la description des deux profils Tasker que vous devrez configurer pour exécuter cette commande lorsque l'écran est éteint mais la désactiver lorsque l'écran est allumé. Essentiellement, vous allez créer deux contextes « Événement », dont l'un est l'événement « Affichage désactivé » tandis que l'autre est l'événement « Affichage déverrouillé ». La tâche pour l'événement « Affichage désactivé » comportera une seule action, Code -> Exécuter Shell avec la commande dumpsys battery set ac 1. La tâche pour l'événement « Affichage déverrouillé » comportera également une seule action, Code -> Exécuter Shell avec la commande dumpsys battery reset. Ainsi, Tasker exécutera la commande pour faire croire à votre appareil qu'il est en charge alors que l'écran est éteint (profil: Activer Hotword Detection) et exécutez la commande pour désactiver cette astuce lorsque le téléphone est déverrouillé (profil: Désactiver la détection des mots chauds).

[onglets][onglet titre ="Activer la détection des mots clés"]

Profile: Enable Hotword Detection (180)
Event: Display Off
Enter: Anon (182)
A1: Run Shell [ Command: dumpsys battery set ac 1Timeout (Seconds):0Use Root:OnStoreOutputIn: StoreErrorsIn: StoreResultIn: ]

[/tab][tab title ="Désactiver la détection des mots clés"]

Profile: Disable Hotword Detection (191)
Event: Display Unlocked
Enter: Anon (192)
A1: Run Shell [ Command: dumpsys battery resetTimeout (Seconds):0Use Root:OnStoreOutputIn: StoreErrorsIn: StoreResultIn: ]

[/languette]

[/onglets]

Inconvénient n°2 – Augmentation de la consommation de la batterie

Il y a une bonne raison pour laquelle la détection des mots clés nécessite à tout moment un coprocesseur personnalisé, car sinon cela entraînerait une décharge supplémentaire de la batterie du processeur qui devrait rester éveillé. Lorsque vous faites croire à votre appareil qu'il est en train de charger, cela signifie que l'appareil maintient le processeur en marche et exécute davantage d'arrière-plan. services, car on suppose que l'augmentation de la consommation d'énergie n'aura pas d'importance car l'appareil a accès à une source d'alimentation.

Mais ce n'est pas le cas ici, donc l'activation de cette commande entraînera une décharge accrue de la batterie. D'après mon expérience en laissant mon appareil dans cet état pendant la nuit, mon Mate 9 s'est vidé 12% de batterie en 8 heures.

Ce n’est pas vraiment une rupture à mon avis, mais cela peut dissuader certains d’entre vous. Malheureusement, il n’existe pas de solution simple pour remédier à ce deuxième inconvénient. La désactivation de la commande lorsque l'écran est allumé, conformément au dernier paragraphe mentionné dans la section ci-dessus, aidera à atténuer certains problèmes, mais c'est à peu près tout ce que vous pouvez faire.


Conclusion

J'espère que vous trouverez cette astuce utile. Ce n'est certainement pas pour tout le monde, mais si vous avez toujours voulu forcer le fonctionnement de la détection des mots clés OK Google et que votre appareil ne dispose pas du matériel requis, cette solution de contournement est faite pour vous.

J'ai décrit les deux inconvénients potentiels de cette astuce, dont le premier peut être résolu en utilisant une application d'automatisation pour activer/désactiver la commande lorsque cela a du sens. Ce dernier inconvénient est malheureusement dû au fait que votre matériel n'est pas conçu pour fonctionner en permanence. détection de mots clés, mais si vous l'utilisez uniquement lorsque vous en avez vraiment besoin, cela ne devrait pas être trop compliqué. problème.

Essayez cette astuce et faites-nous savoir dans les commentaires ci-dessous si cela fonctionne pour vous !