Alati on lõbus panna oma Android või Pythoni programmeerimisoskus Ekraanil. Mõni aeg tagasi mõtlesin, et oleks lahe proovida sülearvutit Androidi mobiilseadme kaudu juhtida. Mõelge sellele: kaugjuurdepääs sülearvutile, sealhulgas muusika esitamine ja peatamine, programmeerimistööde või allalaadimiste alustamine ja peatamine jne, seda kõike oma telefonist sõnumeid saates. Korralik, mis?
Enne lugemise jätkamist pidage meeles, et see on lemmikloomade projekt, mis on alles varajases staadiumis, kuid põhiplatvorm on olemas. Mõned peavoolutööriistad kokku kleepides suutsin oma Android-telefoni häälestada Pythoni tõlgi kaudu sülearvuti juhtimiseks.
Muide: projekt on avatud lähtekoodiga. Saate vaadata kliendi koodi siin ja serveri kood siin .
See projekt hõlmab järgmisi tehnoloogiaid, millest mõned võivad teile tuttavad olla, mõned neist on üsna konkreetsed antud ülesande jaoks:
Kõrgel tasemel peame oma Android-telefoni kliendiks ja sülearvutiks - serveriks. Vaatan seda kaugjuurdepääsu arhitektuuri allpool põhjalikult, kuid projekti põhivoog on järgmine:
Nüüd laseme süveneda.
Nii et ühel heal päeval hakkasin vaatama Pythoni tõlke, mida saaksin kasutada oma Android-telefonis (Droid 2, siis). Varsti pärast seda avastasin suurepärase SL4A pakett see tõi Python For Androidi ellu. See on tõeliselt uhke pakett: klõpsate paar nuppu ja äkki on teil peaaegu täielikult toimiv Pythoni keskkond teie mobiiltelefonis või tahvelarvutis, mis võimaldab käitada nii teie head Pythoni koodi kui pääseda juurde Android API-le (ma ütlen peaaegu kuna mõned asjad ilmselt puuduvad ja Androidi API pole sajaprotsendiliselt juurdepääsetav, kuid enamiku kasutusjuhtumite jaoks on see piisav).
Soovi korral saate oma Android-seadmes töötamiseks luua ka oma Pythoni levitamise, millel on see eelis, et saate seejärel käivitada soovitud tõlgi mis tahes versiooni. Protsess hõlmab käivitatava Pythoni ristkompileerimist ARM (Android-seadmetes ja muud tabletid ). See pole lihtne, kuid kindlasti teostatav. Kui olete väljakutse jaoks valmis, kontrollige siin või siin .
Kui olete oma tõlgi seadistamise teinud, saate Pythoni ja Androidi API-ga kombineerides teha põhimõtteliselt kõike, mis teile meeldib, sealhulgas juhtida sülearvutit kaugjuhtimisega. Näiteks saate teha järgmist.
Meie projekti koosseis on järgmine:
Twistedile ehitatud kliendipoolne rakendus, kui soovite serverikoodi (allpool) testida, ilma et peaksite Django rakendust üldse käivitama.
Serveripoolne Django rakendus, mis loeb Android-seadmest käske ja edastab need Twistedile. Praegusel kujul on Amarok ainus sülearvutirakendus, millega server saab suhelda (st muusika juhtimiseks), kuid see on piisav ideekontroll, kuna platvormi on hõlpsasti laiendatav.
Serveripoolne keerutatud „eksemplar”, mis suhtleb sülearvuti meediumipleieriga D-bussi kaudu, saates käske Djangost tulles (praegu toetan 'järgmine', 'eelmine', 'esitus', 'paus', 'stopp' ja 'vaigista'). Miks mitte anda lihtsalt käsud otse Djangost Amarokile? Twistedi sündmustepõhised mitteblokeerivad atribuudid võtavad ära kogu keerulise töö lõimimisega (rohkem allpool). Kui olete huvitatud nende kahe abiellumisest, vaadake siin .
Olen maininud D-Busi mitu korda, nii et tasub seda tõenäoliselt üksikasjalikumalt arutada. Laias laastus on D-Bus sõnumsiinisüsteem rakenduste vahel (nt sülearvutis ja Android-telefonis) suhtlemiseks hõlpsasti spetsiaalselt loodud sõnumite kaudu.
See koosneb peamiselt kahest siinist: süsteemibuss kogu süsteemi hõlmavate asjade jaoks; ja seansibuss kasutajamaa kraami jaoks. Tüüpilised sõnumid süsteemibussile oleksid järgmised: „Hei, olen lisanud uue printeri, teavitage oma D-bussi toega rakendusi, et uus printer on võrgus“, samas kui rakenduste seas toimuv tüüpprotsessidevaheline side buss.
Amarokiga suhtlemiseks kasutame seansibussi. On väga tõenäoline, et enamik kaasaegseid rakendusi (vähemalt Linuxi keskkondades) toetavad seda tüüpi sõnumsidet ja üldiselt on kõik käsud / funktsioonid, mida nad saavad töödelda, hästi dokumenteeritud. Kuna kõiki selle D-Bus toega rakendusi saab selle arhitektuuri abil juhtida, on võimalused peaaegu lõputud.
Lisateavet leiate siin .
Kui olete kogu infrastruktuuri üles seadnud, saate selle vallandada Androidi rakendus ja see siseneb lõpmatusse tsüklisse, et lugeda sissetulevaid sõnumeid, töödelda neid mõningate mõistlikkuse kontrollidega ja kui need kehtivad, siis saadab need eelnevalt määratud URL-ile (st teie Django rakenduse URL-ile), mis omakorda sisendit töötleb ja vastavalt sellele käituda. Seejärel märgib Androidi klient sõnumi loetuks ja tsükkel jätkub seni, kuni sõnumi täpse sisuga “exitclient” (tark, ah?) Töödeldakse, sel juhul klient väljub.
Serveris võtab Django rakendus käsu, mida tuleb töödelda, ja kontrollib, kas see algab kehtiva juhisega. Sel juhul ühendub see Twisted serveriga (kasutades Telnetlib kaudu ühenduse loomiseks telnet ) ja saadab käsu kaasa. Lõpuks parseldab Twisted sisendi, muudab selle Amaroki jaoks sobivaks ja laseb Amarokil oma võlu teha! Lõpuks reageerib teie sülearvuti lugude esitamise, peatamise, vahele jätmise vms abil.
„Eelmääratud URL-i” osas: kui soovite oma arvutit kaugelt juhtida, peab see olema avalik URL (kättesaadav Interneti kaudu). Pange tähele, et kood ei rakenda praegu ühtegi turvakihti (SSL jne) - sellised täiustused on lugeja jaoks praegu harjutused.Siiani on kõik tõesti väga lihtne, ah? Võite küsida endalt: 'Kas seda saab laiendada, et toetada suurepärast funktsiooni [X]?' Vastus on: jah (ilmselt)! Arvestades, et teate, kuidas arvutiga telefoni korralikult suhelda, saate serveripoolset koodi täiendada, et teha mis iganes soovite. Enne kui teate, lasete pikki protsesse arvutis kaugjuhtimisega. Või kui saate elektroonikaga hakkama, võiksite oma arvuti ja oma lemmikseadme vahele luua liidese, mis juhiks seda SMS-i juhiste kaudu (meelde tuleb “Tee mulle kohvi!”).
Jätkan mõnda aega oma Androidi sülearvuti juhtimismänguasjaga mängimist, selle funktsioonide täiustamist, vigade parandamist jne. Kuid kui olete huvitatud, näeksin hea meelega, et aitaksite teid! Lihtsalt kahvli hoidla ja saatke kõik tõmbetaotlused üle.
Kui teil on küsimusi, tulistage mulle e-kiri aadressil [meiliga kaitstud] ja mul on hea meel aidata.