6 August 2014

Android Планшет вместо Авто магнитолы

DIY
Сейчас многие владельцы автотранспорта сталкиваются с проблемой убогости штатных и космической дороговизны хороших магнитол с современными функциями. Вот и я купив машину 2010 года не смог ужиться с CD проигрывателем и поспешил поставить вместо него таблетку — Планшет. В статье описаны аспекты не освещённые в остальных источниках информации. В частности не как физически врезать планшет в машину, а как всё настроить так чтобы было приятно и удобно пользоваться.
image

Начнём из далека.

Проблема отсутствия современной магнитолы меня волновала уже давно и в прошлой машине мне пришлось купить 2din китайский чудо ящик частично под управление WinCE. Не буду в красках описывать сколько часов или наверно недель я потратил на то чтобы до настроить всё до белее менее рабочего состояния и в итоге из полезных функций: блютус работал жутко криво изначально, так что пользоваться можно было только стриммингом музыки (и то без управления), в DVD застрял диск, WinCe с GPS iGO стал грузиться один раз из 10. Самой надёжной оказалась камера заднего вида. И это за 300 с копейками долларов 6 лет назад. И я уже давно начал подумывать об андроиде, но цены на единственный «приличный» Android 2.3 Астероид заоблачные 700+$ а достойных вариантов от монстров мангитольного рынка тоже нет. Тупик в общем-то какой-то.
И тут я купил относительно свежую машину 2010 г выпуска от японского лидера в неплохой комплектации и получил убогий CD/MP3 плеер раскоряченный так что без специальных некрасивых заглушек ничего другого 1-2din туда просто не воткнуть. На мою удачу в часть её предпродажной подготовки вошла кривая сборка передней панели (непонятно зачем) так что диск воткнуть было невозможно. К сожалению, купленному коню в зубы я посмотрел слишком поздно И это явилось последней каплей. Я заказал на ибее бу 7" Samsung Galaxy tab. Долго помучавшись с ним из-за того что не работал вай-фай, я в пылу злости заказал Nexus 7 1 gen 16gb. В тот момент я даже себе представить не мог что у него нет microSD слота и без OTG мне придётся довольствоваться только встроенными 16 гигами. Такой подставы от гугла с Асусом я даже не мог ожидать. Но в общем вторая таблетка оказалась гораздо бодрее первой и я ничуть не жалею. В итоге оказалось что эта модель является культовой у менятелей магнитол на таблетки по всему миру. Думаю в первую очередь из-за распространённости качества и цены. Ещё удобные контакты на корпусе для питания и звука POGO PINS image Так вот я начал читать как же всё сделать под машину и к огромному своему удивлению нашёл кучу информации о том как вкрячить таблетку, а как жить с этим дальше почти ноль. И так я начал собирать по крупицам наводки и наступать на грабли. В итоге получилось очень даже удобная система которую вы можете видеть на видео.

Начнём всё же с подключения.
Я принципиально не хотел ничего резать и даже вскрывать панель, поэтому я повесил таблетку на скрытой медной проволоке за силиконовый чехол прямо ПОВЕРХ магнитолы. И подключил кабели. Питание рекомендую сразу человеческое те на основе KIS3R33S модуля, чтобы быть мощным. С самсунгом одной из проблем была хитрость включения режима быстрой зарядки. Те когда ток зарядки не обычные 300мА как из USB портов компьютера, а хотябы 500 или лучше 1 ампер. Практика показала что если включить на полную яркость (солнечный день), GPS и прочее то таблетка потребляет больше чем заряжается от 300мА. Это как вы понимаете тупик. Вот я намаялся с резисторами на дата проводах USB и прочим шаманством долго, и вроде успешно, пока с переходом на Nexus эти проблемы не отпали сами собой. Нужен сразу хороший (не микро в прикуриватель) DC-DC адаптер 14->5в желательно на 2-3 ампера чтобы питать не только таблетку, но и телефон и другие потенциальные гаджеты. У меня не было блютуса в машине поэтому отдельный проводок пришлось сделать с выхода наушников на AUX вход штатной магнитолы. Вот в общем-то и всё с подключением.
На этом как оказалось многие и останавливаются. Но ведь пользоваться обычным андроидом в машине тем более за рулём очень не удобно! Тут я определил круг задач. Для меня он свёлся к проигрыванию музыки и GPS навигации. Камера заднего вида у меня уже была, но как выяснилось в нексус и это можно подключить читайте www.pccar.ru/showthread.php?t=18305. Всего 2 приложения, но должно быть удобство пользования ими и переключения между ними.
Я долго искал удобный медиа проигрыватель. Между использованием планшета в руках и за рулём очень большая разница. Попробуйте за рулём несколько проигрывателей и скинов и выберите удобный вам. В обычной жизни я предпочитаю Astro, но тут самым удобным как не странно казался Google Music. Причём тут тоже есть нюансы. Последняя 5я версия очень белая, неудобная в навигации особенно в плей листах. Я пользуюсь только плей листами в m3u файлах созданными старым добрым WinAmp и бережно закинутые на таблетку. Там тоже есть нюанс и почему-то если плейлист не заполнен всеми тагами те не прокручен до конца в WinAmp (пока в окошке плей листа времена всех песен не определились) и сохранён на диск только после этого, то Music его не видит. Ешё у Music проблема с файлами с русскими именами (менна имена файлов а не Таги, с тагами проблем нет), так что всё пришлось переименовывать в латиницы с помощью Multi File Translator или TagScanner и других тулов. Хотя таги русские он отображает отлично и крупно. 3я версия уж совсем убогая и фоны не чёрные и плейлисты только списком, а 4.1.512 версия чёрная оказалась в самый раз для машины www.filedropper.com/tablet4car_1. Так что надо откатится с последней на неё 4pda.ru/forum/index.php?showtopic=237901. Если перед установкой старой версии новый Music не удаётся удалить штатными средствами надо воспользоваться Titanium Backup (uninstall).
Google Music:




Программу навигации каждый выбирает на свой вкус. Мне Нравится Garmin Navigon, тем более что я использую Garmin HUD.

Допустим вы выбрали свою программу и поставили её. Дальше встают следующие проблемы:
— как же переключаться между экранами музыки и навигации в одно касание?
— как использовать полную площадь экрана и при этом не потерять кнопки управления?
— Как управлять музыкой (Пауза, Сл песня и тд..) не выходя из навигационного приложения?

Это решить могут только две программы Button Savior и full!screen. play.google.com/store/apps/details?id=de.tsorn.FullScreen&hl=en. Я долго боролся и даже подпиливал (менял картинки иконок чтобы были икогка Навигации и Музыки) Button Savior и в общем добился от него определённой любви и удобства (его иконки/кнопки в виде домика, квадратов, карты и нот модно видеть в правом краю экрана) www.filedropper.com/tablet4car_1, но с full!screen всё гораздо удобнее и проще. В итоге я до сих пор использую их обе. full!screen даёт кроме полноэкранного режима возможность иметь в углах 2 чудо кнопки, настройки ах 3 действий (нажатие, Долгое нажатие, swipe) каждое можно менять. В отличии от Button Savior где таких кнопок всего две и у них только можно менять действия нажатия. Причём в full!screen (его иконки/кнопки можно видеть в правом и левом углах экрана) назначить можно не только Home, Menu, Back, но и управление проигрыванием (Пауза, Сл песня и тд..) но и запуск/вызов предыдущего приложения получается такой своеобразный Alt+Tab, чего Button Savior нет. Так как у нас только два основных приложения то это как раз то что надо. Можно было бы сделать подобное с применением Scenes в Tasker, но получилось бы не так красиво.


Дальше я боролся за батарейку. Оказалось если не полностью усыпить андроид то даже без вай-фая и GPS за ночь или сутки он может сожрать несколько десятков процентов заряда. Что не приемлемо. Для уверенности полного засыпания я поставил Deep Sleep Battery Saver который прибивал в спящем состоянии все активности кроме редкого исключения.



Теперь встала проблема адекватного изменения яркости экрана при разном освещении. В стоковой прошивке это кастомизировать нельзя поэтому я поставил Lux+ и настроив его под разное освещение добился хорошей видимости экрана в любой ситуации.



Теперь самое вкусное это Tasker!

Без этого Мега приложения вообще ничего сделать бы не удалось. Это своеобразный автоматизатор для Android с возможность ловить внешние события и выполнять визуально программируемые действия. Он супер гибкий, супер удобный и вездесущий. К нему уже написано куча плагинов и толи ещё будет. Я рекомендую поставить сразу его и Secure Settings Pro и в нём Secure Settings Helper.





Первую простую задачу которую мы решим с помощью Tasker это будет правильное засыпание при выключении машины (зарядки) и включение при появлении питания. При засыпании надо кроме очевидного отключить GPS, Блютус, погасить экран и прочее надо ещё остановить проигрывание музыки и запомнить что проигрывалось и проигрывалось ли вообще, чтобы при последующем включении продолжить с того же места. Также при пропадании питания на несколько секунд, как например на время включения стартёра на многих машинах питание в прикуривателе исчезает. Если специально не заморачиваться, то таблетка сначала включится на секунду при повороте ключа, потом выключится при работе стартёра, а потом опять включится и полностью потеряется. В предоставленном скрипте решена эта проблема и проблема обратного допустим вы вставили ключ на несколько секунд только чтобы закрыть окна в машине и таблетка не должна начинать петь и плясать.
Для удобства я поставил хорошие TTS iVona русский и английский. При включении моя система приветствует меня приятным голосом, желает приятного пути, говорит который час и сообщает что продолжает проигрывать такую то и такую то песню. Это не только приятно, но и удобно. Также при переключении на новую песню система произносит названия Исполнителя и Композиции. При этом выбирает правильный язык (английский/русский) в соответствии с кодировкой символов в MP3 Tag. Причём если предыдущая Композиция была того же исполнителя то она произносит только название Композиции. И все эти чудеса с помощью Tasker и Media Utilities plugin. Ок кстате работает не только с Google Music, но и многими другими популярными проигрывателями.

В некоторых случаях я пользовался TaskKill плагином, чтобы прибивать приложения.

Дальше я озадачился изменением громкости в соответствии со скоростью. Эта функция есть во многих машинах, но не всегда доступна, поэтому я написал task «Speed Volume Control Plus» который делает это в андроиде. Есть пять уровней громкости и 5 диапазонов скорости которые надо задать в соответствии с вашей ситуацией в Init Vars. Мне он в итоге не пригодился, но может пригодиться вам.
Всё это и многое другое находится в скрипте github.com/chouckz/AndroidTasker4Car. Вы можете подпилить его под себя или использовать как есть.





Очень важно снять галочку Enforce Task Order в свойствах Power и желательно других профайлов. Иначе таски начнут ждать друг друга и слаженной и адекватной работы не получится.
Если у вас после перезагрузки появляется надоедливое сообщение/предупреждение о слишком высокой громкости «raise volume above safe level....» его можно прибить следующим образом: forum.xda-developers.com/xposed/modules/mod-unsafe-volume-disable-safe-media-t2338474

Давайте подробнее посмотрим на все Profiles (триггеры) И Tasks:

Profiles:
Power AC — запускает соответствующие таски (DC ON, DC OFF) при подключении и выключении питания. Мы подразумеваем что Таблетка работает только когда питание есть, а без него засыпает.
Media Utilities State New Track — Вызывает таск «Fill Track» когда начинает проигрываться новая композиция
Media Utilities State Is Playing — Вызывает таск «Now Playing» когда композиция проигрываться и «Now Not Playing» когда проигрывание остановленно
Device Boot — Вызывает таск «Boot Startup» когда планшет загружается. Почти пока не используется. Может пригодится зимой когда батареи не будет хватать чтобы пережить отсутствие питания. Многие сторожилы с www.pccar.ru/showthread.php?t=18305 советуют сразу отключить и удалить аккамулятор. Опыт российской эксплуатации Nexus очень положительныый по многим отзывам. Жизнь покажет. У меня Летом проблем пока нет. Зимой посмотрим. Если надо будет удалим аккамулятор, благо все процедуры детально описаны.
Device Shutdown — Вызывает таск «Shutdown» когда таблетка выключается. Почти пока не используется. Может пригодится зимой когда батареи не будет хватать чтобы пережить отсутствие питания.
Music — Вызывает таск «Set Active App To Music» когда Music на экране и является активным приложением.
NAVIGON- Вызывает таск «Set Active App To Navigation» когда NAVIGON на экране и является активным приложением.

Tasks:
DC ON — Устанавливает переменную %DCPOWER в 1, вызывает/будит автоматический регулировщик яркости Lux Plug-in и
запускает таск «On».
DC OFF — Устанавливает переменную %DCPOWER в 0, и запускает таск «Off».
On — возобновляет проигрывание если оно было прервано кратковременным исчезновением питания. Включает GPS, WiFi, Bluetooth. Устанавливает громкость. Приветствует голосам и говорит Время. Запускает Программу навигации и Музыки (на всякий случай если они были прибиты во сне). Если при предыдущем выключении проигрывалась музыка то произносится название Композиции и исполнителя и возобновляется проигрывание. Снова вызывает/будит автоматический регулировщик яркости Lux Plug-in.
Off — Останавливает проигрывание музыки. Выключает GPS, WiFi, Bluetooth. Прибивает программу навигации. Засыпает.
Resume Music — Произносится название Композиции и исполнителя правильным языком TTS и возобновляется проигрывание плавно увеличивая громкость до нужного уровня.
Fill Track — Получает от Media Utilities название исполнителя и композиции и запоминает их предварительно определив язык текста чтобы использовать правильный TTS при чтении. Также отдельно запоминает название предыдущего исполнителя чтобы не повторяться при произнесении. Произносит Название исполнителя(если не совпадает с предыдущей композицией) и композиции.
Say Time — Заполняет правильно системное время
Now Playing — Устанавливает переменную %MPLAYING в 1. Значит Музыка играет.
Now Not Playing — Устанавливает переменную %MPLAYING в 0. Значит Музыка не играет.
Boot Startup — пока пустует
Speed Volume Control Plus — Крутится в вечном цикле и занимается изменением громкости в соответствии со скоростью. Эта функция есть во многих машинах, но не всегда доступна, поэтому я написал task который делает это в андроиде. Есть пять уровней громкости и 5 диапазонов скорости которые надо задать в соответствии с вашей ситуацией в Init Vars.
Init Vars — начальная инициализация некоторых констант и переменных
Shutdown — Выполняет такс Off выключая всё




На этом у меня остановиться не получилось так как мне покоя не давали 5 кнопок на руле (-, +, <, >, Mode) которые управляют штатной магнитолой и было бы супер удобно если бы андроид их понимал. Тун началась вторая фаза проекта.
Всё зависит от машины и типа сигналов с кнопок.
Либо это аналоговые (разные уровни напряжения) либо CAN bus. Для того и другого есть готовые решения.
theksmith.com/technology/hack-vehicle-bus-cheap-easy-part-1/
и
JoyCon

Оба пока проводные, но блютус не за горами.
У меня оказались аналоговые кнопки.
Я сделал себе аналог JoyCon Arduino mini Pro + Bluefruit EZ-Key Получилось без проводов к табетке. Bluefruit эмулирует HID клавиатуру и посылает стандартные команды акдроиду. Управление музыкой просто вот остальное пришлось делать через эмуляцию надатия Search + Буква и потом Quicklinks Shortcuts в Task и к Tasker. Но всё работает как видно на видео. Есть и клик и долгий клик. Во второй части опишу подробно.
Tags:AndroidTabletCarTaskerMusicnavigationМагнитолаТаскерTTSАвтоМашинапроигрыватель
Hubs: DIY
+70
296.8k 617
Comments 105
Top of the last 24 hours