Supprime le besoin d'une voiture « CarPlay compatible™ » et exécute l'interface utilisateur CarPlay directement au-dessus de SpringBoard sur un appareil iOS.
Fonctionne très bien pour les iPad montés sur le tableau de bord !
Remarque : Ceci est principalement destiné à un iPad, et les iPhones ne sont pas vraiment pris en charge (cependant, vous "pouvez" l'utiliser avec un iPhone 6 Plus si vous le souhaitez vraiment).
De plus, je ne manquerai pas de rédiger un rapport formel sur la façon dont tout cela fonctionne une fois que tout cela sera terminé et utilisable.
Vroum vroum.
Pour être honnête, beaucoup de ces absurdités pourraient être complètement évitées si un "faux" FBSDisplay secondaire pouvait être créé puis utilisé. De cette façon, SBApplications pourrait créer/posséder des carScenes appropriées et il y aurait beaucoup moins de choses cassées...
La plupart de la logique de vérification de CarPlay implique la vérification de plusieurs UIScreens, de l'interfaceIdiom d'UIScreen et des recherches FBSDisplay -> FBScene. Cependant, créer un faux FBSDisplay nécessite de créer un faux CADisplay, ce qui n'est pas très amusant :P
En gros, voici comment cela fonctionne (je pense... que certaines parties sont probablement fausses ou erronées) :
FrontBoard associe un FBSDisplay comme affichage principal et possède un ensemble de FBScenes qui sont la scène principale de chaque SBApplication. Une fois qu'un deuxième FBSDisplay est disponible, il peut alors générer une carScene pour chaque SBApplication jugée capable. Ces carScenes seraient ensuite présentées sur tous les écrans connectés en externe (FBSDisplay secondaire).
À l'origine, j'avais essayé de détourner un FBSDisplay à chaque fois qu'il était créé et de simplement dupliquer cet écran dans un objet FBSDisplay secondaire avec le même objet CADisplay... puis de placer cet objet FBSDisplay dans sa propre table de recherche pour le faire apparaître comme s'il s'agissait de plusieurs objets. des écrans étaient disponibles. Cependant. cela fait paniquer UIScreen car il considère que ces deux écrans sont identiques. De plus, de nombreux systèmes d'exploitation n'ont pas aimé ça :P
Ce que je fais, c'est simplement faire apparaître tous les écrans UIS en tant qu'écrans CarPlay et forcer toutes les applications à s'afficher en mode paysage (car CarPlay sur les écrans externes est forcé d'être en mode portrait). De plus, cela signifie que la carScene de chaque SBApplication est la mainScene, ce qui ne garantit pas le succès.
Créer un serveur AirPlay local, puis pirater des touches pour travailler sur une vue (dont le contenu est un écran secondaire projeté localement, en utilisant l'appareil pour AirPlay + mise en miroir) pourrait être une solution intéressante à cela, mais je ne l'ai pas encore essayé. Cela nous accorderait un deuxième FBSDisplay légitime avec lequel jouer.
J'ai utilisé Theos pour cela. Vous devrez les installer et configurer les variables d'environnement appropriées, etc., ainsi que la configuration. Infos à ce sujet ici.
La prise en charge ARM64 est activée par défaut et si vous avez besoin d'aide pour la configurer, vérifiez ici.
J'utilise mon propre fork de theos, qui est à son tour dérivé du fork de @rpetrich.
Si vous modifiez le Makefile, vous pouvez spécifier l'adresse IP de votre appareil iOS, etc., à créer et à exécuter à l'aide make package install
. Sinon, vous pouvez simplement make package
pour générer un fichier .deb et l'installer par n'importe quel moyen.
Totalement gratuit ! Si vous souhaitez soutenir la poursuite de ce projet (et d'autres !), n'hésitez pas à faire un don ! Ce serait très apprécié :D
C'est à peu près la licence BSD, mais ne la reconditionnez pas et appelez-la vôtre s'il vous plaît !
De plus, si vous apportez des modifications, n'hésitez pas à faire une pull request et à contribuer à rendre les choses plus géniales !
N'hésitez pas à me suivre sur Twitter : @b3ll !
Bien que je n'aime pas vraiment traiter les demandes d'assistance là-bas...
Travis Beckham pour l'image de voiture vectorisée !