Demander la permission de projection
Résumé
- Nom interne :
AskProjectionPermission - Catégorie : Media Projection
- Objectif : Demander (ou réutiliser) la permission Android MediaProjection nécessaire pour capturer l'écran de l'appareil, et démarrer le service de streaming d'écran en arrière-plan.
- Type de tâche : Normale
Compatibilité
-
Version minimale AndroMate :
1.1.0 -
Version maximale AndroMate :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android maximum testé :
Android 16 (API 36) -
Constructeurs supportés :
- ✅ Tous les constructeurs
-
Permissions requises :
- Consentement MediaProjection accordé par l'utilisateur (boîte de dialogue système) — ce n'est pas une permission de manifest, mais une invite runtime unique par session d'application
Description détaillée
La tâche Demander la permission de projection obtient la permission système de capture d'écran (MediaProjection) et démarre le service de streaming d'écran qui garde une capture live disponible pour les tâches suivantes — notamment ocr_task, qui lit le texte sur la dernière capture de la projection.
Exécutez cette tâche une seule fois, avant toute tâche ocr_task dans le workflow. Si la permission a déjà été accordée plus tôt dans la même session d'application, la tâche la réutilise immédiatement sans redemander.
Paramètres d'entrée
| Paramètre | Type | Obligatoire | Valeurs possibles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
timeout_ms |
Integer | Non | Millisecondes à attendre la réponse de l'utilisateur à la boîte de dialogue | Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | 5000 |
Paramètres de sortie
La tâche Demander la permission de projection ne produit aucune sortie. Elle prépare uniquement le service de streaming d'écran pour les tâches suivantes (ex. ocr_task).
Exceptions
| Code | Nom de l'exception | Description |
|---|---|---|
MEDIA-PROJ-001 |
Permission de projection refusée | L'utilisateur a fermé ou refusé la boîte de dialogue système MediaProjection. |
Diagramme d'exécution
flowchart TD
Start([▶ AskProjectionPermission]) --> Check{Permission déjà\naccordée cette session ?}
Check -->|Oui| Info[ℹ️ Log : déjà accordée]
Check -->|Non| Prompt[📲 Afficher la boîte de dialogue MediaProjection]
Prompt --> Wait{Réponse utilisateur\ndans timeout_ms ?}
Wait -->|Accordée| StartStream[🔴 Démarrer le service de streaming]
Wait -->|Annulée/Refusée| E1[❌ MEDIA-PROJ-001\nPERMISSION_REFUSED]
Info --> Success([✅ VoidResult])
StartStream --> Success
E1 --> Error([❌ Exception])
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style E1 fill:#ffcdd2
Comment ça fonctionne :
- Vérifier la permission existante : si MediaProjection a déjà été accordée plus tôt dans cette session, passe directement au succès.
- Demander : sinon, affiche la boîte de dialogue système de consentement MediaProjection.
- Attendre : bloque jusqu'à la réponse de l'utilisateur ou l'expiration de
timeout_ms. - Démarrer le streaming : à l'accord, démarre le service de streaming d'écran en arrière-plan que les tâches suivantes (
ocr_task) utiliseront. - Refus : si l'utilisateur annule/refuse, lève
MEDIA-PROJ-001.
Détails des paramètres d'entrée
1. Paramètre d'entrée : timeout_ms
Durée d'attente de la réponse utilisateur à la boîte de dialogue, en millisecondes.
Exemple
Détails
- Optionnel — vaut
5000(5 secondes) par défaut si omis. - Non résolu comme une
$variable— lu comme un entier littéral depuis le JSON.