14.03.2012, 01:36 | #11 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
В общем, дописал функцию энкодера... Несложно. Если его пины подключить к двум битам, он выдает последовательность 0 1 3 2. Двойку с тройкой меняем местами, получается 0 1 2 3. Далее, вычитаем, если разность 1 или -3, то вращение в одну сторону, если -1 или 3, -- в другую. Просто Стансон там какую-то целую таблицу забабахал для этого.
Теперь PowerAMP управляется прям четко: ручка-энкодер и она же enter! Мечта! Собирать все буду теперь... |
19.03.2012, 01:49 | #12 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Выкладываю исходник, прошивку .HEX и бутлоадер. Написал там небольшой readme, по идее тому кто знаком с программированием несложно будет переделать эту программу под кнопки другой магнитолы. Кстати, обработка энкодера работает и ее можно использовать с любой магнитолой даже в текущей прошивке.
Долго бился: девайс вис после перезагрузки тукана. Добавил в два места вылет по таймауту, а также отслеживание CONFIG_STATE (т.е. если хост перестал поддерживать USB девайс). Перезапускаем проц с обязательной очисткой регистра USBCON -- теперь все четко! У тукана какая-то проблема с перезагрузкой, после нее перестает работать часть USB девайсов, wifi свисток например. А мой девайс теперь гордо рестартует и работает! |
22.03.2012, 02:29 | #13 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Алгоритм чтения клавы переделал, там оказалась 2-х проводная шина (DATA и STROBE), а я пытался своим гениальным алгоритмом прочитать код кнопки только через DATA.
Вопрос теперь в следующем, как заменить приложения, которые андроид вызывает по умолчанию? Файлы layout доработал как надо (почему то часть функ. клавиш тупо не работает), теперь имею: по нажатию клавиш магнитолы, которые назначены на функ. клавиши у меня запускается: стоковый плеер (music.apk), просмотрщик видео (videoplayer.apk), почта (email.apk), итд. Для них соответственно в файле layout команды MUSIC, VIDEO, EMAIL. Вопрос такой: как мне вместо этих программ назначить другие? Хочу PowerAMP вместо music.apk, Яндекс.Карты вместо видео плеера итд итп. Обыскал весь инет, везде пишут, что надо зайти в Applications и там изменить Launch by default, но это действует для скачанных программ, а для тех, что по умолчанию как? Где-то должен быть конфиг файл с путями запуска этих приложений, но я не могу найти, подскажите? .... |
23.03.2012, 00:57 | #14 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
В общем, я сегодня чуть ни весь день потратил, уже голову сломал... Я не могу найти где находятся настройки какое приложение вызывается при нажатии на хард-клавишу, прописанную в keylayout. Например, почему по коду MUSIC он запускает music.apk, а не что-то другое? Даже написал в xda-developers, весь день прошел, тишина...
Вот софтину нашел, вроде меняет именно запускаемые приложения по хард-клавишам, но у меня не работает. Прилагаю, попробуйте, может кому пригодится... DreamKeys называется. Пробовал чисто на удачу заменить music.apk на apk от PowerAMP, вылетает с ошибкой. Видимо, его надо переименовать прежде чем устанавливать, но это какой-то кривой путь, я так не хочу! Вообще, именно таким образом IconBIT заменили браузер в последней прошивке, он под тем же именем, но размер другой. Еще выяснил, что некоторые клавиши не работали из-за того, что были дважды назначены в keylayout, а так делать нельзя. Например: key 67 HOME ... ... ... key 67 VOLUME_UP HOME не будет работать. И еще, смысл этого файла оказывается просто в конвертации кодов клавиатуры. Т.е. 67 - Linux-код клавиши, а VOLUME_UP - код Андроид-клавиши. Т.е. это типа #define' ы. Скоро я уже дойду до того чтобы самому написать такую программу, но надо чтобы она работала не только когда она активна, а всегда. В винде это называется hook (когда перехватываешь системную процедуру и данные пропускаешь через свою), в Андроиде не знаю как... Может тупо с девайса клавиатуры читать в /dev ?? |
23.03.2012, 18:22 | #15 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Пришла в голову такая идея для запуска приложений по горячей клавише: запустить скрипт из командной строки, который будет читать данные из станд. устр-ва клавиатуры и запускать нужные приложения. Для запуска андроид-приложений из шела есть команда 'am', вот описано:
http://learnandroid.blogspot.com/200...m-command.html Пример строки: am start -a android.intent.action.MAIN -n com.iftitah.android.contact/com.iftitah.android.contact.Contact com.iftitah.android.contact - название приложения, com.iftitah.android.contact.Contact -- как я понял, activity который надо запустить в данном приложении. |
24.03.2012, 03:03 | #16 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Как я отписал в другом топике, приложения запускаются.
Например, am start -n com.maxmpz.audioplayer/.PlayListActivity запускает PowerAMP. Теперь надо найти стандартный /dev клавиатуры и читая оттуда коды кнопок, запускать нужные приложения при помощи .sh файла -- вот такая идея. Потому как gcc под андроид готового вроде нету: люди пробовали, говорят тормоза страшные и памяти мало для работы компилятора. Говорят, нативные приложения лучше на компе писать. |
24.03.2012, 03:11 | #17 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Хм, получается вроде event2 и event4 - две мои USB клавиатуры, но только cat /dev/input/event4 выдает непонятный мусор... причем по несколько байт на одно нажатие.
|
24.03.2012, 03:21 | #18 |
Старший Пользователь
Регистрация: 17.01.2009
Возраст: 49
Город: Москва
Регион: 77, 97, 99, 177
Машина: Audi A5 3.2FSI Q, Porsche 996 Turbo
Сообщений: 669
|
Нашел, надо использовать утилиту getevent, она при нажатии клавиш клавиатуры выдает разумные коды и даже показывает с какого устр-ва event* они пришли.
Осталось .sh файл сочинить, чем займусь завтра. Придется форумы курить, я в них не силен... |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|