Blog

Android - Demo mode

Depuis la version 6.0 de Android (Marshmallow), une nouvelle section a fait son apparition dans les developer settings, elle est nommée Mode démonstration (ou Demo mode en anglais).

À l’intérieur se trouvent deux options Activer le mode de démonstration et Afficher le mode de démonstration. Alors oui, la subtile différence ne saute pas aux yeux. Et lorsque l’on active la première rien ne se passe, mais dès que l’on clique sur la seconde …​ magie !

La status bar est modifiée (plus ou moins, cela dépend du nombre de notifications que vous aviez en attente). Toutes les notifications ont disparues, l’heure est modifiée, la batterie, le signal gsm ainsi que le signal wifi passent à 100%.

C’est génial, mais ça ne sert à rien comme ça, pourtant c’est bel et bien le but de cette fonctionnalité.

Ces deux options permettent donc d’activer et de passer son téléphone en mode démo. Cela permet de couper toutes les notifications et de réinitialiser à des valeurs standards l’heure et l’état des connexions de la status bar. Tout cela dans le but de clarifier l’écran et cela va nous aider dans l’idée de ne pas détourner l’attention de l’utilisateur sur des détails (plus ou moins gênants).

En effet il est plutôt utile lors de rendez-vous ou démo client de ne pas recevoir la notif du dernier message Facebook de votre maman.

L’autre principale utilité que je vois, c’est pour faire les screenshots qui iront sur le Play Store. En effet rien de pire dans le store qu’un screenshot d’app avec 50 notifications en cours qui gâchent le truc (enfin si, le pire c’est un screenshot ios…​)

Mais normalement si vous êtes un dev normal, donc un peu flémard, faire les screenshosts à la main vous ne trouvez pas ça très drôle. Donc il faudrait pouvoir lancer le démo mode juste avant les screenshots. La chance est avec nous car c’est possible. En effet tout un tas d’options sont disponibles via adb pour activer le demo mode et customiser les éléments de la status bar.

Pour faire ce que l’on a fait tout au début en passant à la main par les settings il nous suffit d’appeler les commandes adb suivantes :

Activation globale du demo mode

adb shell settings put global sysui_demo_allowed 1

Démarrage et Arrêt du demo mode

adb shell am broadcast -a com.android.systemui.demo -e command enter
adb shell am broadcast -a com.android.systemui.demo -e command exit

Ensuite, entre le démarrage et l’arrêt, on peut appeler les commandes une à une pour modifier l’état de la status bar. Les principales pour moi étant :

Masquer les notifications :

adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false

Figer l’heure :

adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1331

Toutes les options disponibles sont listées dans la doc officielle.

Une fois trouvée la configuration parfaite pour son projet, il suffit de faire un petit script en plus à jouer avant les screens et le tour est joué.

function startDemoMode {
    adb shell settings put global sysui_demo_allowed 1
    adb shell am broadcast -a com.android.systemui.demo -e command enter
    adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm 1337
    adb shell am broadcast -a com.android.systemui.demo -e command network -e mobile show -e level 4 -e datatype false
    adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi show -e level 4 -e fully true
    adb shell am broadcast -a com.android.systemui.demo -e command notifications -e visible false
    adb shell am broadcast -a com.android.systemui.demo -e command battery -e plugged false -e level 100
}

function stopDemoMode {
    adb shell am broadcast -a com.android.systemui.demo -e command exit
}

Il ne reste plus qu’à rajouter l’appel à ses fonctions au moment opportun dans le processus de screenshot.

Rappel : pour activer le mode développeur, ça se passe dans les paramètres du téléphone.

comments powered by Disqus

Contact

Code-Troopers

MAME
Cité de la création et du numérique
49 boulevard Preuilly
37000 Tours - Fr

[email protected]

07 82 28 72 16

Suivez nos actualités