Винаги е забавно да поставите вашия Android или Умения за програмиране на Python на дисплея. Преди известно време си помислих, че би било страхотно да се опитам да контролирам лаптопа си чрез мобилното си устройство с Android. Помислете за това: отдалечен достъп до лаптоп, включително възможност за възпроизвеждане и пауза на музика, стартиране и спиране на задания за програмиране или изтегляне и т.н., всичко чрез изпращане на съобщения от вашия телефон. Подредено, а?
Преди да продължите да четете, моля, имайте предвид, че това е проект за домашни любимци, който все още е в начален етап, но основната платформа е налице. Чрез залепване на някои основни инструменти успях да настроя телефона си с Android да контролира моя лаптоп чрез интерпретатор на Python.
Между другото: проектът е с отворен код. Можете да проверите клиентския код тук и кода на сървъра тук .
Този проект включва следните технологии, някои от които може да сте запознати, някои от които са доста специфични за съответната задача:
На високо ниво ние считаме, че телефонът ни с Android е клиент, а лаптопът - сървърът. Ще разгледам подробно тази архитектура за отдалечен достъп по-долу, но основният поток на проекта е следният:
Сега нека да копаем.
c corp срещу корпоративно данъчно облагане
Така че един добър ден започнах да разглеждам интерпретатори на Python, които мога да стартирам на телефона си с Android (Droid 2, тогава). Скоро след това открих отличното Пакет SL4A това оживи Python For Android. Това е наистина чудесен пакет: щракнете върху няколко бутона и изведнъж имате почти напълно функционална среда на Python на вашето мобилно или таблетно устройство, която може едновременно да изпълнява вашия добър стар код на Python и да осъществява достъп до Android API (казвам почти защото някои неща вероятно липсват и API на Android не е 100% достъпен, но за повечето случаи на употреба е достатъчно).
Ако предпочитате, можете също да създадете своя собствена дистрибуция на Python, която да се изпълнява на вашето устройство с Android, което има предимството, че след това можете да стартирате всяка версия на интерпретатора, която желаете. Процесът включва кръстосано компилиране на Python, на който да се изпълнява РЪКА (архитектурата, използвана на устройства с Android и други таблетки ). Не е лесно, но със сигурност е изпълнимо. Ако сте готови за предизвикателството, проверете тук или тук .
След като настроите вашия интерпретатор, можете да правите основно каквото искате, като комбинирате Python с Android API, включително дистанционно управление на вашия лаптоп. Например можете:
Съставът на нашия проект е както следва:
Клиентско приложение, изградено на Twisted, ако искате да тествате кода на сървъра (по-долу), без изобщо да се налага да стартирате приложението Django.
Приложение Django от страна на сървъра, което чете команди от устройството с Android и ги предава на Twisted. В настоящия си вид Amarok е единственото приложение за лаптоп, с което сървърът може да взаимодейства (т.е. да контролира музиката), но това е достатъчно доказателство за концепция, тъй като платформата е лесно разширяема.
Усукан „екземпляр“ от страна на сървъра, който комуникира с медийния плейър на лаптопа чрез D-Bus, изпращайки команди, когато идват от Django (в момента поддържам „next“, „previous“, „play“, „pause“, „стоп“ и „заглушаване“). Защо просто не предадете командите директно от Django на Amarok? Управляваните от събитията, неблокиращи атрибути на Twisted отнемат цялата упорита работа с резби (повече по-долу). Ако се интересувате да се ожените за двете, вижте тук .
Споменах D-Bus няколко пъти, така че си струва да го обсъдим по-подробно. Най-общо казано, D-Bus е система за обмен на съобщения за комуникация между приложения (например на преносим компютър и телефон с Android) лесно чрез специално създадени съобщения.
елементите, към които се призовава за дизайн във Вселената, включват кое от следните
Състои се главно от две шини: системната шина, за общосистемни неща; и шината на сесията, за неща от потребителските страни. Типичните съобщения към системната шина биха били „Хей, добавих нов принтер, уведоми моите приложения с активиран D-Bus, че нов принтер е онлайн“, докато типичната междупроцесова комуникация (IPC) между приложенията ще отиде в сесията автобус.
Използваме сесийна шина за комуникация с Amarok. Много е вероятно повечето съвременни приложения (поне под Linux среди) да поддържат този тип съобщения и като цяло всички команди / функции, които могат да обработват, са добре документирани. Тъй като всяко приложение с поддръжка на D-Bus може да се контролира под тази архитектура, възможностите са почти безкрайни.
Повече информация може да бъде намерена тук .
След като настроите цялата инфраструктура, можете да изключите Приложение за Android и той ще влезе в безкраен цикъл, за да прочете входящите съобщения, да ги обработи с някои проверки за здравословно състояние и, ако е валиден, да ги изпрати на предварително дефиниран URL (т.е. URL на вашето приложение Django), който от своя страна ще обработи входа и действайте съответно. След това клиентът на Android маркира съобщението като прочетено и цикълът продължава, докато се обработи съобщение с точното съдържание „exitclient“ (умно, а?), В който случай клиентът ще излезе.
На сървъра приложението Django взема команда, която трябва да бъде обработена, и проверява дали тя започва с валидна инструкция. Ако е така, той се свързва с Twisted сървъра (използвайки Telnetlib за свързване чрез telnet ) и изпраща командата заедно. И накрая, Twisted анализира входа, трансформира го в нещо подходящо за Amarok и позволява на Amarok да направи магията си! И накрая, вашият лаптоп реагира чрез възпроизвеждане на песни, пауза, пропускане и т.н.
По отношение на „предварително дефинирания URL“: ако искате да контролирате компютъра си отдалеч, това ще трябва да бъде публичен URL адрес (достъпен през Интернет). Имайте предвид, че понастоящем кодът не прилага никакъв слой сигурност (SSL и т.н.) - подобни подобрения са упражнения за читателя в момента.Засега всичко изглежда наистина просто, а? Може би се питате: „Може ли това да бъде разширено, за да поддържа изящна функция [X]?“ Отговорът е: Да (вероятно)! Като се има предвид, че знаете как да взаимодействате с компютъра си, като използвате телефона си правилно, можете да добавите кода от страна на сървъра, за да правите каквото искате. Преди да се усетите, ще изстреляте отдалечено продължителни процеси на компютъра си. Или, ако можете да се справите с електрониката, можете да изградите интерфейс между вашия компютър и вашия любим уред, контролиращ че чрез SMS инструкции („Направи ми кафе!“ ми идва на ум).
Ще продължа да си играя с играчката си за управление на лаптоп с Android известно време, като подобрявам нейните функции, поправям грешки и т.н. Но ако се интересувате, ще се радвам да ви помогна! Просто разклонете хранилището и изпратете всички заявки за изтегляне.
Ако имате някакви въпроси, моля, изпратете ми имейл на [имейл защитен] и ще се радвам да помогна.