Отменяет необходимость в автомобиле с поддержкой CarPlay™ и запускает пользовательский интерфейс CarPlay непосредственно поверх SpringBoard на устройстве iOS.
Отлично работает с iPad, установленным на приборной панели!
Примечание . В первую очередь это предназначено для iPad, а iPhone на самом деле не поддерживается (однако вы «можете» использовать его с iPhone 6 Plus, если действительно хотите).
Кроме того, я обязательно напишу официальный отчет о том, как все это работает, как только все это будет закончено и можно будет использовать.
Врум врум.
Честно говоря, многих подобных глупостей можно было бы полностью избежать, если бы можно было создать и затем использовать вторичный «поддельный» FBSDisplay. Таким образом, SBApplications сможет создавать/владеть подходящими автомобильными сценами, и сломанных вещей будет намного меньше...
Большая часть логики проверки CarPlay включает проверку как нескольких UIScreen, так и интерфейса UIScreen InterfaceIdiom, а также поиска FBSDisplay -> FBScene. Однако для создания поддельного FBSDisplay требуется создание поддельного CADisplay, что не так уж и весело :P
По сути, вот как это работает (я думаю... некоторые части, вероятно, неверны или отключены):
FrontBoard связывает один FBSDisplay в качестве основного дисплея и имеет несколько FBScenes, которые являются основной сценой каждого SBApplication. Как только появится второй FBSDisplay, он сможет сгенерировать carScene для каждого SBApplication, которое считается работоспособным. Эти автомобильные сцены затем будут отображаться на любых внешних подключенных экранах (вторичный FBSDisplay).
Первоначально я пытался захватить FBSDisplay всякий раз, когда он был создан, и просто дублировать этот экран во вторичный объект FBSDisplay с тем же объектом CADisplay... а затем поместить этот объект FBSDisplay в его собственную таблицу поиска, чтобы он выглядел как несколько экраны были в наличии. Однако. это приводит к тому, что UIScreen сходит с ума, поскольку считает оба этих экрана одинаковыми. Также многим ОС это не понравилось :P
Я просто делаю так, чтобы все UIScreens отображались как экраны CarPlay, а также заставлял все приложения отображаться в альбомной ориентации (поскольку CarPlay на внешних экранах принудительно отображается в портретной ориентации). Кроме того, это означает, что carScene каждого приложения SBApplication является основной сценой, что не гарантирует успех.
Создание локального сервера AirPlay, а затем хакерские действия для работы с представлением (содержимое которого представляет собой дополнительный экран, проецируемый локально с использованием устройства для AirPlay + зеркалирование) может быть изящным решением этой проблемы, но я еще не пробовал. Это дало бы нам законный второй FBSDisplay, с которым можно было бы поиграть.
Для этого я использовал Теоса. Вам нужно будет установить их и настроить соответствующие переменные среды и т. д., а также выполнить настройку. Информация об этом здесь.
Поддержка ARM64 включена по умолчанию, и если вам нужна помощь в ее настройке, проверьте здесь.
Я использую свою собственную вилку theos, которая, в свою очередь, является ответвлением @rpetrich.
Если вы редактируете Makefile, вы можете указать IP-адрес вашего устройства iOS и тому подобное для сборки и запуска с помощью make package install
. В противном случае вы можете просто make package
для создания файла .deb и установить его любым способом.
Абсолютно бесплатно! Если вы хотите поддержать мое продолжение этого проекта (и других!), сделайте пожертвование! Было бы очень признательно :D
По сути, это лицензия BSD, только не переупаковывайте ее и называйте по-своему, пожалуйста!
Кроме того, если вы внесете какие-то изменения, не стесняйтесь сделать запрос на включение и помогите сделать все еще лучше!
Не стесняйтесь подписываться на меня в твиттере: @b3ll!
Хотя мне не очень нравится обрабатывать там запросы в службу поддержки...
Трэвис Бекхэм за векторизованное изображение автомобиля!