Главная Новости Прайс-лист О магазине Как купить? Оплата/Доставка Корзина Контакты  
  Авторизация  
 
Логин
Пароль

Регистрация   |   Мой пароль?
 
     
  Покупателю шин  
  Новости  
Banwar

Наша сеть партнеров Banwar. Новое казино "Пари Матч" приглашает всех азартных игроков в мир больших выигрышей и захватывающих развлечений.

  Опрос  
 
Летние шины какого производителя Вы предпочитаете использовать?
 Michelin
 Continental
 GoodYear
 Dunlop
 Nokian
 Fulda
 Bridgestone
 Hankook
 Kumho
 Другие

Всего ответов: 1035
 
     
  Добро пожаловать в наш новый всеукраинский интернет-магазин!  

РадіоКот :: Доопрацювання гарнітури для смартфонів на базі OS Android: від ідеї до реалізації.

Наша сеть партнеров Banwar

Доопрацювання гарнітури для смартфонів на базі OS Android: від ідеї до реалізації.

Історія створення даного подівся тісно пов'язана з подією з мого життя - появи у мене іншого сучасного девайса - смартфона на базі OS Android - LG P500. Трохи боявся, що важко буде впоратися з таким "звіром", що не перетворивши його в одну велику іграшку, але на ділі нічого страшного. Оскільки даний телефон є маленьким комп'ютером, то дозволяє устанамлівать безліч софта, якого повно в однойменному маркеті. Одна з найбільш потрібних, як не дивно, програм - mp3 програвач. Для цього є кілька причин:

1) навіщо носити і телефон і плеєр?

2) Слухаю я в основному в напрямку будинок робота, де багато шуму, тому той факт що звучання у мого "звірка" не на вищому рівні (не знаю чому, але дуже шумить підсилювач) мене не сильно турбує.

Так я і почав ходити з телефоном замість плеєра. Але не будемо забувати про суттєві відмінності класичного плеєра і сучасного телефону (при розгляді на роль плеєра). Про що ж мова? .... А відповідь проста - наявність кнопок для перемикання треків і т.д .. На жаль, телефон володіє сенсорним екраном і не має спеціалізованих кнопок, що мене дуже спантеличило, адже не буду ж я весь час тримати телефон або діставати його з кишені кожного разу (ну лінивий я кіт). Ось і захотілося мені ще більше приручити свого "звірка". Думка була проста - добре б мати гарнітуру не з однією кнопкою для прийому дзвінків, а з великим їх числом.

Разом, як ви самі розумієте, почав я продумувати варіанти. Першим варіантом було вивчено наявність таких гарнітур в інтернет-магазинах свого міста. Зазначу, що серед блютутс гарнітур я шукати не намагався, тому що мені дорога можливість самому в майбутньому вибрати навушники, які мені зручні, тому шукав тільки серед провідних. Чесно кажучи, я був трохи збентежений тим, що я не знайшов рівним чином нічого підходящого. Було, здається, щось подібне для телефонів HTC, але при подальшому вивченні питання стало зрозуміло, що їх гарнітури не є універсальними. Все наводило тільки на одну думку - такий гарнітури просто не існує як такої, або вона важкодоступна (спеціалізовані та доступні для покупки гарнітури для LG я теж, природно, вивчив). Полазити по форумах, дізнався, що всередині рідної рагнітури (не хотів розбирати через гарантії) все досить просто - разьем має 4 контакту, 4-й додатковий контакт йде до мікрофона, який стоїть паралельно тій самій кнопці для прийняття виклику. Раз у HTC є спеціалізовані гранітури, а число контактів не може бути збільшена, значить підключається вона так само. Значить, в залізній частині телефону є щось, що дозволяє "приймати" команди від натискання кнопок. Думка проста, але вірна. Так я вирішив будь-що-будь розкопати глибше можливості свого телефону.

Знайшовши вільний час, я взявся за "розслідування". Відправною точкою для мене стало те, що я взяв мультиметр (осциллографом, на жаль, не володію) та спробував подивитися, що ж твориться на цьому загадковому четвертому виведення за підключеної і відключеною гарнітурі. Результат виявився трохи обнадійливим - на ньому виявилося близько 1.7-1.8 вольт, а при замиканні його на "землю" (як при натисканні тієї самої кнопки) я отримав аж 0.6-0.7 міліампера. Наступною точкою став мануал по ремонту даного телефону, скачаний з простір нашого інтернету і містить повну принципову схему даного апарату.

На схемі виявилася невелика мікросхема, яка одночасно подає напругу на мікрофон і допомагає телафону визначити, що була натиснута кнопка. На жаль, на цьому хороші новини закінчуються, так як ніяких спеціальний Фітч для більш простої реалізації моєї ідеї виявлено не було. Сумно, звичайно, але я вирішив подумати ще (ох, як же сильна моя лінь).

При перегляді параметрів обраного мною mp3 плеєра я виявив настройки гарнітури, причому провідний. Полягали вони в тому, що програвач вмів слухати швидкі, поспіль йдуть натискання тієї самої кнопки і здійснювати при цьому пару простих дій - наступний трек або наступна папка, не має значення. Їх було мало, але думка вже дозрівала - а що, якщо самому імітувати кілька натискань поспіль? Ось воно ! Таке рішення як мінімум б спростило мені життя, не змушуючи мене постійно тренуватися в натиску 3 рази (припустимо) поспіль нещасних кнопки. Я трохи захоплююсь програмуванням мікроконтролерів, тому став думати саме в цьому напрямку. (Читач, мабуть вже зрозумів, як же я в черговий раз захотів "пріпахать" всіма улюблені МК).

Як ви пам'ятаєте, я виміряв деякі електричні величини, які мені може надати мій телефон. Поклавши їх перед очима, я почав ритися в мануалах по AVR. Було вибрано сімействі Tiny, яке споживає найменше. Взагалі, будь-який мануал в розділі про мінімальні параметри говорив мені приблизно наступне - 1.8V на 0.2-0.3 міліампера для нормальної роботи МК. Якщо бути чесним, то у мене стільки немає, принаймні по напрузі зовсім впритул виходить. Тут багато ще залежить від джерела тактового сигналу, адже чим менше частота, тим менше енергії потрібно нашому МК, та й доступ до EEPROM нам не потрібен. Коротше, треба пробувати. У найближчі вихідні були куплені і піддослідні - 2 х ATiny13V. Взяв я їх за двома критеріями - напруга і можливість писати програму на С.

Особливо не мудруючи, було намальовано кілька варіантів схем:

1 варіант (використовуються внутрішні підтягує резистори)

2 варіант (використовуються зовнішні підтягують резистори)

На макетке нашвидку була спаяна друга, тому що в теорії використання підтягують резисторів більшого опору дозволило б заощадити дорогоцінну енергію (потім я пробував і так і так, але так і не вибрав найкращий варіант). Як бачите, присутні всі основні і незамінні дійові особи - МК, конденсатор і діод, покликані допомогти нам у вирішенні "енергетичної кризи", кнопочки, резистор на пін! RESET для МК і підтягує резистори. У реальності це виглядає наступним чином:

Велика і жахлива "макетке": Адаптер для паралельного програмування:

Велика і жахлива макетке: Адаптер для паралельного програмування:

Погодьтеся, що "кріплення" МК надто складне, але повірте, що я про це анітрохи не пошкодував - МК залишається без пайки і його сміливо можна витягнути з роз'ємом. Ось тут залишу докладніше. Вся справа в тому, що шляхом проб помилок була обрана частота внутрішнього генератора в 128 КГц - найменша. Сам я користуюся програматором HWPROG, який не полінувався спаяти кілька років тому. Він вміє програмувати МК в паралельному (високовольтному) режимі. Спочатку я весь час витягав МК і ставив його на соотв майданчик, як видно вище. Потім я вирішив полегшити собі життя і впаяти на макетке штирі під ISP разьем (теж видно на фото). Але мене чекало розчарування - в ISP програматор ніяк не хотів прошивати МК. Прошивається в AVRStudio. Прогамма НЕ виділа МК, поки я не опущу частоту шини до найменшої, але коли сигнатура МК нарешті распознавалась, шитися він уже не хотів. STK 200/300, як і міняти швидкість на COM порі, я не пробував. Тому попереджаю, якщо хтось буде повторювати, спочатку заливайте прошивку, а тільки потім міняйте фьюз, інакше можете отримати "непрошіваемий" для себе МК.

Далі виник, взагалі кажучи, банальне запитання - а як же протестувати це "творіння". Воно справу - емулятор, але він навряд-чи семулірует мені всю обстановку, тим більше я ним користуюся дуже рідко. Осцилографа теж немає. Згадав я про те, що можна испльзовать звукову карту для комп'ютера в якості простенького осцилографа. Але думка пішла далі - а що, якщо якісь умільці вже написали щось подібне під Android? Так воно і виявилося - була знайдена безкоштовна прогрммка OsciPrime. І почалися танці з бубном, щоб домогтися стійкої роботи МК і виконання ним відведеної завдання. А завдання просте - при натисканні кнопки потрібно замикати вхід на землю, імітуючи натискання кнопи кілька разів. Поки я щосили шаманів, мене посітіть трохи інша ідія - в програвачі настроюються таким способом дій надто мало, замикати вхід, відрізаючи собі харчування, доводиться надовго, може бути є схожі, але інші способи?

Як говориться в одній книзі, + =. При користуванні раніше знайденим осциллографом я подумав: раз є така програма, значить і я можу написати подібну, чи не аналізує "натискання" однієї кнопки, а слухаючи "мікрофон", тому що моя схемку підчіплюють якраз замість нього та й осцилограф був розрахований на те-ж саме. Тоді я зможу генерувати звичайний меандр певної частоти, "слухати" його так само, як це робить осцилограф, визначати частоту і якимось чином повідомляти програвач, що пора б "пісню заводити" і т.д. Було вирішено далі рухатися в цьому більш, як мені здалося, перспективному напрямку. А тут заодно і 2 радісні події - день народження Кота і конкурс. Це істотно додало мені сил і бажання зліпити готовий виріб.

Отже, почався найжахливіший етап - програмування і більш тісне знайомство з Android "ом. З одного боку все крім Джави (основного мови для розробки) незнайоме, з іншого - нелюбов до програмування візуальних інтерфейсів, на яких тут все побудовано. На жаль, все це (хоча не все ще дороблено і обкатана) з'їло величезну кількість часу і нервів, без валер'янки б не витримав. Кінцеве додаток повинно було містити як мінімум наступне: механізм прослушки мікрофона і визначення частоти саме меандру, а не будь-якого другог сигналу, настройку відповідності цих частот і дій, що робляться, сервіс, який би все це робив, коли головне вікно програми згорнуто (є тут такий нюанс - просте додаток працює тільки коли його вікно зараз є головним, як тільки його звертаєш, операційна система його призупиняє і зберігає стан, тобто воно робити вже нічого не може. Щоб це подолати, існує окремий підклас додатків - сервіси, які можуть здійснювати фонові (background) дії), і власне кажучи, сам механізм посилки роігривателю команд. Як не дивно, останнє є найважливішим. Думати я став над цим десь в середині, але коли дійшло до реалізації, стало зрозуміло, що все дуже плачевно.

Спочатку у мене була ідея, заснована на досвіді програмування під Windows, де досить просто можна посилати всякі події, типу "була натиснута кнопка X", визначеному прідоженію / вікна. У телефоні якраз є подібний набір подій навіть для неіснуючих кнопок "старт / стоп" "вперед" і т.д. Але тут я зустрів перед собою дійсно бетонну стіну. Взагалі кажучи, такий подгод є "нелегальним", тому що не відповідає вимогам безпеки. Але ж повинні ж бути всякі примочки для тестування додатків. Вони є, але потиху урізаються з базових бібліотек з ростом версії операційної системи. Подолавши і цю спробу заборонити мені робити, що я хочу, я "навчив" свою софтинку посилати після натискання кнопки з моєї макетке певний подія. Все йшло просто чудово, поки прямо перед написанням статті, за день до кінця подачі заявок, я не виявив наступне: події посилалися лише тоді, коли головне вікно моєї програми було активно, але як тільки я його звертав, то все закінчувалося. Події за раніше слав мій сервіс, але весь час приходили помилки системи безпеки, яка не давала мені здійснити задумане. На жаль, пошук в інтернеті про методи вирішення цієї проблеми поки що нічого не дав, хоча я і сам вже зрозумів, що так повинно і бути, адже якщо немає, то будь-яка драгая програма, яку ви встановите, також без вашого відома може щось то натискати.

Який б не здавалася безвихідною ситуація, для мене все повинно закінчиться не так сумно. Вся справа саме в тому, який програвач використовувати. Не буду рекламувати, але використовую я PowerAMP - і так досить відомих. А найсмачніше тут те, що розробник не поскупився впровадити в нього свою власну, "легальну" систему прослушки додаткових подій від операційної системи і на своєму сайті розмістив готові приклади, як ними скористатися. Тобто, мені треба було лише замінити метод доставки повідомлень програвача. Так, універсальність відразу втрачається, але особисто моя мета стає досягнутої. Зараз я на цьому зупинився, але я думаю, що це ще не останнє слово. Справа в тому, що зараз на додачу до Джаві, стало можливим писати частина коду на C ++, так як працює він значно швидше і ближче до Лінукс, на якому андройд і заснований. Це відкриває додаткові можливості, але вимагає набагато більш ретельного розгляду, яке я все одно проведу трохи пізніше, а поки мені і самому доводиться задовольнятися отриманим.

На жаль, у мене не було часу на створення дослідного зразка і завершення написання програми, щоб її можна було викласти (дуже багато закомменченних рядків, багато зайвого коду, залишеного після методу проб і помилок - соромно просто таке викладати). Тому додаю лише прошивку для МК, яка іспольковалась для макетке і використовує тільки дві ліві кнопки, втім їх число легко збільшити - поміняти вгорі значення соотв. констант і поміняти регістр МК, який відповідає за виявлення змін станів на ніжках. Тим більше я не тестіл це на інших андройд смартфонах, тому результат гарантувати не можу. Я був би дуже радий отримати від інших людей інформацію, чи спрацює така ідея на їх апаратах.

Після закінчення конкурсу і обкатки девайса в реальних умовах, я оновлю дану статтю і викладу исходники програми теж, щоб бажаючі змогли відтворити і користуватися.

Не можу сказати, що мета повністю досягнута, але показано, що ідея практично реалізувати і сподіваюся є живою, особливо для тих, хто може зробити щось своїми руками, щоб поліпшити свій побут. Тим, хто прочитав до кінця, величезне спасибі. Це моя перша стаття, тому критикуйте наздоровье, буду радий почути думки дорогих побратимів.

Питання як завжди на https://radiokot.ru/forum/


файли:
Проект і файл прошивки для МК


Всі питання в Форум .

Про що ж мова?
Їх було мало, але думка вже дозрівала - а що, якщо самому імітувати кілька натискань поспіль?
Але думка пішла далі - а що, якщо якісь умільці вже написали щось подібне під Android?
 
  Обзор категорий  
 
Шины
 
     
 
  Специальное предложение  
   
     
     
Доставка осуществляется в города:
Александрия, Белая Церковь, Белгород-Днестровский, Бердичев, Бердянск, Борисполь, Боярка, Бровары, Бердичев, Васильков, Винница, Вознесенск, Горловка, Днепродзержинск, Днепропетровск, Донецк, Житомир, Запорожье, Евпатория, Ивано-Франковск, Измаил, Изюм, Каменец-Подольский, Керч, Кировоград, Ковель, Комсомольск, Конотоп, Краматорск, Кривой Рог, Кременчуг, Ильичевск, Луганск, Лубны, Луцк, Львов, Павлоград, Мариуполь, Миргород, Мелитополь, Мукачево, Николаев, Нежин, Никополь, Новая Каховка, Новоград - Волынский, Нововолынск, Одесса, Обухов, Павлоград, Пирятин, Прилуки, Полтава, Первомайск, Ровно, Славянск, Симферополь, Смела, Стрий, Сумы, Севастополь, Северодонецк, Тернополь, Ужгород, Умань, Харьков, Хмельницкий, Херсон, Феодосия, Чернигов, Черновцы, Южноукраинск, Ялта.

© 2009 - 2010 Интернет-магазин автотоваров и запчастей авто34

Каталог украинских интернет-магазинов