Supposons que j'ai le code source AOSP, comment puis-je mettre en pause l'APP au premier plan lorsque je descends le panneau de notification? J'ai cherché sur Google et trouvé qu'une APP peut écouter l'événement onWindowFocusChange
et prendre des mesures de manière proactive, mais comment puis-je suspendre N'IMPORTE QUELLE APP en abaissant le panneau de notification, sans modifier respectivement chaque APP (ce qui n'est pas pratique)?
Existe-t-il un moyen d'appeler la onPause
fonction d'une application de premier plan à partir du processus SystemUI?
android
android-developer-api
Zhangxaochen
la source
la source
Réponses:
Vous pouvez utiliser la méthode ci-dessous pour détecter l'attraction du panneau de notification,
Dans votre fichier manifeste
Dans votre activité, remplacez le
onWindowFocusChanged()
et écrivez le code ci-dessous.Cela utilise l'autorisation
Ensuite, dans votre demande d'application pour le focus audio, reportez-vous au lien ci-dessous
https://developer.android.com/guide/topics/media-apps/audio-focus#java
Cela suspendra l'accès audio pour toutes les autres applications.
la source
La solution comporte deux parties
Pour détecter la traction du panneau de notification, vous pouvez utiliser la méthode suggérée par Akash ou le même code ici par Lalith.
Pour la deuxième partie, tous les lecteurs multimédias bien conçus implémentent des écouteurs de changement de focus audio. Ainsi, pour mettre en pause toutes les applications du lecteur multimédia, vous pouvez demander un focus audio temporaire ou complet selon que vous souhaitez laisser les applications jouer à nouveau dès que le panneau de notification est réduit.
Utiliser suivant
N'oubliez pas d'implémenter AudioFocusChangeListener
Pour autant que j'ai fait des recherches sur le système, le processus de l'interface utilisateur n'est pas accessible. Cependant, vous pouvez lancer une activité avec un thème transparent .
Dans votre manifeste
voyez cela et j'ai aussi personnellement testé la création d'une activité transparente.
Cela signifie que l'activité en haut maintenant est votre activité transparente et la méthode onPause de l'autre activité sera naturellement appelée. Une fois le panneau de notification réduit, vous pouvez détruire cette activité. Et pour être sûr, vous pouvez également définir l'écouteur onTouch en créant une vue vide qui sent l'écran qui devrait détruire l'activité onTouch.
la source
En supposant que l' appareil Android utilise le MediaPlayer par défaut , selon ce diagramme d'état , vous pouvez utiliser le natif
pause
et l'stop
état.Si vous ne souhaitez pas arrêter le son, vous pouvez probablement changer le volume sonore à l'aide d'une fonction VolumeAutomation ?
la source