Mini Pinball (2 / 10 steg)

Steg 2: Software Architecture



Studier
Innan du slutar upp med den nuvarande utformningen, har ett fåtal studier gjorts:

  • Läsa raw tangentbordshändelser från datorn, med hjälp av adb och getevent.
  • Generera multitouch händelser (*) från ett litet program skrivet i C.
  • Gör ovanstående från Java (kräver endast böka, men ingen daemon). Detta visade sig vara lite för långsam och introducerade en märkbar fördröjning, så jag valde en daemon skrivet i C, och konfigureras av en Java app.

(*) se http://www.mjmwired.net/kernel/Documentation/input/multi-touch-protocol.txt

Arkitektur
Den slutliga arkitekturen är baserad på en daemon, det vill säga en liten fristående program (skriven i C och därför mycket snabb) kommunicerar med en Java-tjänst.

Diagrammet i detta steg är en UML-klassdiagram, visar de viktigaste klasserna och entiteter och deras relationer.

pinball_buttons_mapper (aka daemon) - Detta är den fristående C program, egentligen gör alla "riktiga" jobb: den väntar tangentbordshändelser, och genererar multitouch händelser (simulering finger berör på skärmen). Alla parametrar läses från inställningsfilen kompakt. Demonen är Startat av Java app som root, eftersom det måste sådana behörigheter att läsa/skriva händelser direkt från /dev/input/eventN drivrutiner från underliggande Linux OS. Demon är inte kunna avgöra enheter att använda, skärmstorlek och orientering, etc, så den läser dessa parametrar från filen settings.cnf , som har utarbetats av den Java delen. Demonen har möjlighet att upptäcka att inställningsfilen har förändrats och att på nytt läsa det automatiskt.

SettingsActivity - detta är den viktigaste skärm som visas när du startar programmet. Det låter dig ställa in alla parametrar, och lagrar dem som inställningar. Det också (åter) startar tjänsten, och kräver CompactSettings på inställningar förändringar.

CompactSettings (aka settings.cnf) - skriver en kopia av inställningarna i ett mycket kompakt format som daemon kan lätt läsa. Inställningarna är i XML, men kompakt kopian är mycket mycket enklare.

TheService - detta är Javakod körs i bakgrunden, även när ingen skärm av app är synlig. Det blir en ikon alltid synlig i Android meddelandefältet och bryr sig för (åter) starta daemon (dess roll är bara att övervaka demonen, och kalla inställningsskärmen).

Mapper - detta är en Java-klass för att installera demonen, och starta det (om).

BroadcastReceiver - detta behövs för att göra app startas automatiskt när tabletten stövlar.

Loggar - ger en skärm som visar debug loggar, användbart vid utveckling av programvaran.

UncaughtExceptionHandler - normalt när en Java apps påträffar ett fel som leder till en creash, den stannar. Denna handler visar istället lite teknisk information (stackspårningen) för att hjälpa till att lokalisera problemet utan en felsökare kopplad via en PC.

Sammanställa och bygga
Den Java del utvecklades under Eclipse. Demonen är cross-kompilerad, och lagras in i Java app som en rå resurs.

För att bygga alla, kör skriptet build_all.sh . Dess slutliga produkten är APK filen i bin /. Bygga skriptet fungerar under Linux och Mac OSX, och kräver Android SDK installeras, samt C cross-kompilatorn (arm-linux-gnueabi-gcc). För att utveckla Java-del, och om build_all.sh kördes en gång tidigare i för att kompilera C daemon, kan allt göras från inom Eclipse som vanligt.

Arkiv för källkoden kan hittas i steg 10.

Se Steg
Relaterade Ämnen

Mini Pinball Tablet skåp

inspirerad av Mini flipperspel här:Jag beslutade att ge detta ett försök med en Lödfritt version. Tack till Pascal för att arbeta med mig att förena några problem hade jag med hans PinballButtons.apk.Tips och varningar:1. du måste installera PinballB...

Mini virtuella pinball

jag skapade denna mini pinball med PSP och skärmen MP4-spelare med plexiglas och jag hoppas du njuta av https://www.youtube.com/watch?v=hggDir5LlKo...

Pinball Machines: Themed Comics for Breakfast

I made a mini pinball machine themed comics for breakfast that you CAN PLAY. Dess ganska lätt att bygga. Svåraste är att göra siffrorna i den.Material:KartongFärgad silvertejpLeraAkrylfärgPapper (för bakgrund)K'NexWirePopsickle pinnarLiten träpinneEl...

Android pinball tabell

jag gjort denna android baserat flipperspel emulator från en kasserad store display android videospelare.Steg 1: tekniskt sett var det en videospelare som fastnat i en kylskåpsdörren att demonstrera funktionerna i de nya kylskåp kommer snart till en...

Sesame Street - Pinball nummer räkna klocka

detta instructable kommer att redogöra för byggandet av en skräddarsydd klocka. Även om detta är specifikt byggandet av klockan på Sesame Street; Pinball numret räknar animering, de allmänna förfarandena är desamma och instruktionerna är så allmänt s...

LED Pinball soffbord

det var, jag skötte mina egna affärer, när plötsligt (som alla goda historier start) jag hittade en gammal flipperspel på soptippen. Jag tog hem och har hjälp att sätta den i huset där det satt i mitt vardagsrum tillräckligt länge för att sätta rostf...

Pinball Ramp

Arbetar på att skapa nya flipperspel med Halifax Makerspace, insåg vi att vi behövde en ramp eller två. Ramper lägga till en spännande 3D aspekt i ett flipperspel. Vi ville också ha en upphöjd spelplanen, så ramper var en nödvändighet.Efter lite fors...

Full-Size K'NEX Pinball Machine

This is a project I have been working on in my spare time for the last 2 months. Jag har alltid varit en mycket stor pinball entusiast och beslutat att lägga min K'NEX och teknisk bakgrund att använda. Jag började med en enkel rektangulär form bit st...

Pinball spelplanen Rotisserie

Pinball spelplanen rotisseries är ett sätt att hålla en flipper spelplanen (plywood bit som har alla stötfångare, mål, simfötter, etc. på det). Som namnet antyder, roterar den så att du kan enkelt arbeta på båda sidor av spelplanen. Jag gjorde detta...

Desktop Pinball Controller

gratis pinball emulatorer, som visuell Pinball och Future Pinball är ett mycket roligt, men de är svåra att spela med ett pc-tangentbord. Jag bestämde mig att göra upplevelsen lite mer äkta genom att bygga en stationär (eller laptop) pinball controll...

Dinosaurie Pinball

Jag beslöt att göra detta flipperspel efter att ha sett min grand barn spelar "låtsas" pinball på i-telefonen. Tillverkad av komplett scraps, smått och gott som förmodligen skulle annars hamnat som mark fyllning. Jag hoppas att lägga till ljus o...

Mini Digital flipperspel kabinett

detta startade efter att verkligen få in The Pinball arkaden på Android, jag hade en idé om att skapa ett stativ för min Nexus 7 som skulle också fungera som kontroller för flipper.Så jag letade efter idéer och såg att ett par personer redan hade gjo...

Pinball soffbord

detta är ett soffbord byggt från spelplanen för ett flipperspel. Det är ganska lätt att bygga och bäst av allt, den lyser! Det inspirerades av en bar i Seattle kallas Shorty's, som har tabeller liknar dessa i sina bås. Min flickvän och jag älskar båd...

Fallet för mini-itx moderkort Asrock AM1H-ITX för HTPC / dagens dator

Detta är ett litet projekt som består av att skapa ett fall för mini-itx Asrock AM1H-ITX moderkort.Detta forum används till stöd för de nya 4 kärnor AMD Kabini processor, som inte är så stark, men har allt du behöver för en bra HTPC dator eller ens e...

Min enkla STRIIV hållare

ÖversiktMin enkla "Life Hack". Vissa använder aktivitet trackers för den vanliga, spåra mina steg, spåra mina brända kalorier... Jag bär min aktivitet tracker främst för att hjälpa mig att komma ihåg att ta särskilda läkemedel för att förhindra...

En skiffer solur, snidad av min stora stora farfars 1858.

Detta är ett bildspel med ett skiffer solur snidad av min farfars far bra bra, hans namn var Alexander Mills. Solur höggs 1858 från en bit av skiffer, den ringa del är bruten men skiffer är i ganska gott skick.Ett av min pappa 's gamla kunder kallas...

Hur man gör en av min kaffe

detta är min första Instructable vara så trevligt jäklar.Höger, om du har koffein känslighet, är gravid eller på någon medicin som inte är lämpliga för användning med koffein jag skulle avråda från att dricka och en av dessa.Detta gör ca 1L (1 liter)...

Min bästa Espresso Machineless Latte

min lösning på lattes hemma, utan en espressomaskin.Steg 1: Espresso Machineless Espresso Ifrån att ha en riktig espressomaskin i huset, det bästa sättet jag har hittat att falska espresso är den uppochner brygga metod med den fantastiska, prisvärda,...

Enklaste Mini serietidning

Detta Instructable visar dig hur man gör en otroligt lätt miniatyr serietidning på bara några minuter. Denna typ av bok kallas också en zine. Jag har gjort många av dessa och jag skriver i dem när jag har ledig tid.Steg 1: Samla materialDu behöver ba...