@@ -3785,6 +3785,13 @@ object MG4Hardware {
37853785 // • SWI68 / 165 / 69 / 131 / 132 : ce service-ci, celui de la pile de projection allgo,
37863786 // que le launcher appelle lui-même.
37873787 // Aucun firmware n'a les deux, aucun n'en est dépourvu.
3788+ /* *
3789+ * Préfixe des paquets de la pile de projection allgo.
3790+ *
3791+ * Sert à RECONNAÎTRE sa session média pour ne surtout pas s'en servir — voir [sessionMedia].
3792+ */
3793+ private const val PREFIXE_PROJECTION = " com.allgo."
3794+
37883795 private const val RUI_PKG = " com.allgo.rui"
37893796 private const val RUI_CLS = " com.allgo.rui.RemoteUIService"
37903797 private const val DESC_RUI = " com.allgo.rui.IRemoteUIService"
@@ -4291,6 +4298,22 @@ object MG4Hardware {
42914298 return false
42924299 }
42934300
4301+ // ⚠️ LA SESSION DE PROJECTION EST À ÉCARTER, quoi qu'elle déclare.
4302+ //
4303+ // Mesuré sur deux véhicules : elle annonce PAUSE, PLAY et PLAY_PAUSE (actions=0x240286)
4304+ // et n'en honore AUCUN — sur SWI132, lecture et pause restaient sans effet alors que
4305+ // `déclarée=true`. Elle n'annonce pas non plus les changements de piste, qui ne
4306+ // marchaient pas davantage sur SWI131.
4307+ //
4308+ // Autrement dit, ses déclarations ne valent rien. Le service allgo, lui, fonctionne pour
4309+ // les trois commandes : on lui rend la main immédiatement plutôt que de perdre l'appui
4310+ // dans une session qui acquiesce sans agir.
4311+ if (cible.packageName?.startsWith(PREFIXE_PROJECTION ) == true ) {
4312+ AppLogger .i(MEDIA_TAG , " session ${cible.packageName} = projection — écartée, " +
4313+ " ses déclarations ne sont pas honorées (voie allgo)" )
4314+ return false
4315+ }
4316+
42944317 // Une session annonce ce qu'elle sait faire dans `actions`. Ignorer cette déclaration
42954318 // revient à parler dans le vide : `skipToNext()` sur une session qui ne déclare pas
42964319 // ACTION_SKIP_TO_NEXT ne lève rien et ne fait rien — exactement ce qu'a vécu le testeur
0 commit comments