socialgekon.com
  • Põhiline
  • Ux Disain
  • Planeerimine Ja Prognoosimine
  • Innovatsioon
  • Veaotsing
Mobiilne

Android-telefoniga saate sülearvutit juhtida Pythoni, Twistedi ja Django abil

Sissejuhatus

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 .



Sülearvuti kaugjuurdepääsu tööriista vöö: Python, Twisted, Django ja Amarok

See projekt hõlmab järgmisi tehnoloogiaid, millest mõned võivad teile tuttavad olla, mõned neist on üsna konkreetsed antud ülesande jaoks:

  • Python 2.7+
  • Keeratud : suurepärane sündmusepõhine raamistik, mis on spetsiaalselt loodud võrguhäkkerite jaoks.
  • Django : Ma kasutasin v1.4, nii et kui soovite käivitada madalamat versiooni, peate mõne faili asukohta kohandama.
  • Amarok : D-BUS (lisateavet selle kohta allpool) juhitav meediumipleier. Seda võiks teiste selliste meediumipleierite jaoks ( Clementine , VLC või midagi muud, mis toetab MPRIS ), kui teate nende sõnumistruktuure. Valisin Amaroki, kuna see on vaikimisi kaasas minu KDE levitamisega. Lisaks on see kiire ja hõlpsasti konfigureeritav.
  • Android-telefon koos Python Androidile installitud (rohkem sellest allpool). Protsess on üsna lihtne - isegi selleks Py3k !
  • Kaug-Amarok ja Amaroki kaugveeb .

Kõrgel tasemel

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:

  1. Kasutaja sisestab Pythoni interpretaatorisse mõne käsu.
  2. Käsk saadetakse Django eksemplarile.
  3. Seejärel annab Django käsu edasi Twistedile.
  4. Seejärel keerutab Twisted käsu ja saadab uue käsu D-Busi kaudu Amarokile.
  5. Amarok suhtleb tegeliku sülearvutiga, kontrollides muusika esitamist / peatamist.

Selle tööriistavöö abil saate teada, kuidas Pythoni, Twistedi ja Djangoga sülearvutit juhtida.

Nüüd laseme süveneda.

Python Androidis

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.

  • SMS-ide saatmine ja lugemine.
  • Suhelge Internetis olevate kolmandate osapoolte API-dega urllibi ja muude raamatukogude kaudu.
  • Kuva natiivse väljanägemise viited, pöörlevad dialoogid jms.
  • Muutke oma helinat.
  • Esitage muusikat või videoid.
  • Suhtle Bluetoothiga - eriti see sillutab teed paljudele võimalustele. Näiteks mängisin kunagi ringi, kasutades oma telefoni sülearvuti kapi-lukust avamise rakendusena (näiteks avage sülearvuti Bluetoothi ​​kaudu, kui telefon oli lähedal).

Kuidas töötab telefoni kasutamine sülearvuti juhtimiseks

Arhitektuur

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 .

Twisted on suurepärane, sündmustest juhitav ja mitmekülgne. See töötab tagasihelistamissüsteemi, edasilükatud objektide ja mõne muu tehnika abil. Soovitan kindlasti proovida: Twistedi kasutamisega välditav töö on tõsiselt muljetavaldav. Näiteks serveerib see katlakoode paljude protokollide jaoks, sealhulgas IRC, HTTP, SSH jne, ilma et peaksite tegelema mitteblokeerivate mehhanismidega (lõimed, valik jne).
  • Django rakendusse jõudmiseks kliendipoolne Android-kood, mis on teie seadmesse üles laaditud kohandatud URL-iga. Tasub mainida, et see konkreetne koodijupp töötab Python 2.7+ versioonis, sealhulgas Py3k.

Mis on D-buss?

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 .

Lava taga:

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.

Mida muud ma sellega teha saan?

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!”).

Mis järgmiseks

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.

Scala vs Java: Miks peaksin Scalat õppima?

Tehnoloogia

Scala vs Java: Miks peaksin Scalat õppima?
Kasvav kasv: tehke selle avatud lähtekoodiga oma kohordianalüüs

Kasvav kasv: tehke selle avatud lähtekoodiga oma kohordianalüüs

Andmeteadus Ja Andmebaasid

Lemmik Postitused
Kuidas veenda e-kaubanduse ostjaid UX-disaini abil
Kuidas veenda e-kaubanduse ostjaid UX-disaini abil
Sissejuhatus PHP 7-sse: mis on uut ja mis kadunud
Sissejuhatus PHP 7-sse: mis on uut ja mis kadunud
Mitme põlvkonna tööjõu võimu vabastamine, 1. osa: kas vanusel on tähtsust?
Mitme põlvkonna tööjõu võimu vabastamine, 1. osa: kas vanusel on tähtsust?
Tööstuse ärkamine: madratsitööstuse häired
Tööstuse ärkamine: madratsitööstuse häired
Sügav sukeldumine tugevdamise õppesse
Sügav sukeldumine tugevdamise õppesse
 
Lemmikloomade pildistamine iPhone'is: kuidas teha kõige armsamaid lemmikloomafotosid
Lemmikloomade pildistamine iPhone'is: kuidas teha kõige armsamaid lemmikloomafotosid
Juhend npm: paketihaldur Node.js
Juhend npm: paketihaldur Node.js
Juhend: kuidas tõhusat UX-i uuringut läbi viia
Juhend: kuidas tõhusat UX-i uuringut läbi viia
Monoreposi juhend esiotsa koodi jaoks
Monoreposi juhend esiotsa koodi jaoks
Flutter juhendaja: kuidas luua oma esimene Flutter App
Flutter juhendaja: kuidas luua oma esimene Flutter App
Kategooriad
Disaineri EluKasumlikkus Ja TõhususJaotatud VõistkonnadPlaneerimine Ja PrognoosimineInvestorid Ja RahastamineFinantsprotsessidladustamineTöö TulevikUx DisainBrändikujundus

© 2023 | Kõik Õigused Kaitstud

socialgekon.com