Macht ein Auto mit „CarPlay-Unterstützung™“ überflüssig und führt die CarPlay-Benutzeroberfläche direkt auf SpringBoard auf einem iOS-Gerät aus.
Funktioniert hervorragend für am Armaturenbrett montierte iPads!
Hinweis : Dies ist in erster Linie für ein iPad gedacht und iPhones werden nicht wirklich unterstützt (Sie können es jedoch mit einem iPhone 6 Plus verwenden, wenn Sie es wirklich möchten).
Außerdem werde ich auf jeden Fall einen formellen Bericht darüber verfassen, wie alles funktioniert, sobald alles fertig und nutzbar ist.
Vroom vroom.
Um ehrlich zu sein, könnte ein Großteil dieses Unsinns vollständig vermieden werden, wenn ein sekundäres „falsches“ FBSDisplay erstellt und dann verwendet werden könnte. Auf diese Weise könnte SBApplications richtige CarScenes erstellen/besitzen und es gäbe viel weniger Dinge, die kaputt gehen würden ...
Der Großteil der CarPlay-Prüflogik umfasst die Prüfung auf mehrere UIScreens, das UIScreen-InterfaceIdiom und FBSDisplay -> FBScene-Suchen. Allerdings erfordert die Erstellung eines gefälschten FBSDisplays die Erstellung eines gefälschten CADisplays, was nicht viel Spaß macht :P
Im Grunde funktioniert es so (ich denke ... einige Teile sind wahrscheinlich falsch oder falsch):
FrontBoard ordnet ein FBSDisplay als Hauptanzeige zu und verfügt über eine Reihe von FBScenes, die die Hauptszene jeder SBA-Anwendung darstellen. Sobald ein zweites FBSDisplay verfügbar ist, kann es eine CarScene für jede SBA-Anwendung generieren, die als fähig erachtet wird. Diese CarScenes würden dann auf allen extern angeschlossenen Bildschirmen (sekundäres FBSDisplay) präsentiert.
Ursprünglich habe ich versucht, ein FBSDisplay bei jeder Erstellung hochzuladen und diesen Bildschirm einfach in ein sekundäres FBSDisplay-Objekt mit demselben CADisplay-Objekt zu duplizieren ... und dann dieses FBSDisplay-Objekt in seine eigene Nachschlagetabelle zu schieben, damit es so aussieht, als ob es mehrere wäre Bildschirme waren vorhanden. Jedoch. Dies führt dazu, dass UIScreen ausflippt, da beide Bildschirme als gleich angesehen werden. Das gefiel auch vielen Betriebssystemen nicht :P
Ich lasse einfach alle UIScreens als CarPlay-Bildschirme erscheinen und erzwinge, dass alle Anwendungen im Querformat gerendert werden (da CarPlay auf externen Bildschirmen zum Hochformat gezwungen wird). Darüber hinaus bedeutet dies, dass die carScene jeder SBApplication die mainScene ist, was keinen Erfolg garantiert.
Das Erstellen eines lokalen AirPlay-Servers und das anschließende Hacken von Berührungen, um an einer Ansicht zu arbeiten (deren Inhalte ein lokal projizierter sekundärer Bildschirm sind, wobei das Gerät für AirPlay + Spiegelung verwendet wird) könnte eine nette Lösung hierfür sein, aber ich habe es noch nicht ausprobiert. Das würde uns ein legitimes zweites FBSDisplay zum Spielen geben.
Ich habe dafür Theos verwendet. Sie müssen sie installieren und die entsprechenden Umgebungsvariablen usw. einrichten sowie konfigurieren. Infos dazu hier.
Die ARM64-Unterstützung ist standardmäßig aktiviert. Wenn Sie Hilfe bei der Einrichtung benötigen, schauen Sie hier nach.
Ich verwende meinen eigenen Theos-Fork, der wiederum von @rpetrichs Fork abgeleitet ist.
Wenn Sie das Makefile bearbeiten, können Sie die IP-Adresse Ihres iOS-Geräts usw. angeben, um es mit make package install
zu erstellen und auszuführen. Andernfalls können Sie einfach make package
um eine .deb-Datei zu generieren, und diese auf beliebige Weise installieren.
Völlig kostenlos! Wenn Sie meine Fortsetzung dieses Projekts (und anderer!) unterstützen möchten, können Sie gerne spenden! Es wäre sehr dankbar :D
So ziemlich die BSD-Lizenz, aber verpacken Sie sie bitte nicht neu und nennen Sie sie Ihr Eigen!
Auch wenn Sie einige Änderungen vornehmen, können Sie gerne eine Pull-Anfrage stellen und dabei helfen, die Dinge noch großartiger zu machen!
Folgen Sie mir gerne auf Twitter: @b3ll!
Allerdings bearbeite ich dort nicht so gerne Supportanfragen...
Travis Beckham für das vektorisierte Autobild!