Styra tangentbord & mus w / Android app via Arduino (7 / 10 steg)

Steg 7: Android app

För nästa steg ska jag anta att du är bekväm med att skriva en Android app. Om inte, vänligen se över länkarna i steg 2. Källkoden är nedan.

ANTECKNINGAR:
* Vara säker på att ändra värdet för DEVICE_ADDRESS. Detta kan hittas på klistermärket på din BlueSMiRF. Det finns också samtidigt överföringshastigheten i steg 4 (#9). Det är sträng med bokstäver och siffror efter "BTA", som är ett värde över "BAUDRT".
* Vara säker på att ändra paketet namn (första raden i MyRemote.java) för att matcha projektets katalogstruktur

MyRemote.java

paketet edu.mit.media.amarino.myremote;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import at.abraxas.amarino.Amarino;

allmän klass MyRemote sträcker sig aktiviteten {

offentliga TextView resultatet;
Public int a, b;
offentliga EditText inputField;

/ * ändra adressen till adressen för din Bluetooth-modul
* och kontrollera din enhet har lagts till Amarino * /
privata statisk slutlig String DEVICE_ADDRESS = "00:06:66:07:AD:FE";

slutliga int dröjsmål = 150;

/ ** Kallas när aktiviteten skapas. */

public void onCreate (bunt savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Amarino.connect (, DEVICE_ADDRESS);

slutliga knappen LKlicka = (knappen) findViewById(R.id.leftClick);
lClick.setOnClickListener (nya View.OnClickListener() {
public void VidKlickning (Visa v) {
Utföra åtgärden på klicka
onLeftClick();
}
});
slutliga knappen rClick = (knappen) findViewById(R.id.rightClick);
rClick.setOnClickListener (nya View.OnClickListener() {
public void VidKlickning (Visa v) {
Utföra åtgärden på klicka
onRightClick();
}
});
slutliga knappen plus = (knappen) findViewById(R.id.plusBtn);
plus.setOnClickListener (nya View.OnClickListener() {
public void VidKlickning (Visa v) {
Utföra åtgärden på klicka
onPlus();
}
});
slutliga knappen minus = (knappen) findViewById(R.id.minusBtn);
minus.setOnClickListener (nya View.OnClickListener() {
public void VidKlickning (Visa v) {
Utföra åtgärden på klicka
onMinus();
}
});

inputField = (EditText)findViewById(R.id.input);

TextWatcher fieldValidatorTextWatcher = ny TextWatcher() {

public void beforeTextChanged (CharSequence s, int start, int räkna, int efter) {
}

public void onTextChanged (CharSequence s, int start, int innan, int räkna) {
String str = inputField.getText().toString();
int längd = str.length();
char c;

backspaced
om (len < = start) {
onDelete();
}
Swyped
annars om (len > (start + 1)) {
Sträng temp = "";
för (int jag = start; jag < len; i ++) {
c = str.charAt(i);
Temp += Character.toString(c);
}
onSend(temp);
}
normalt har skrivit
annat {
c = str.charAt(len-1);
Str = Character.toString(c);
onSend(str);
}
}

public void afterTextChanged (redigerbara arg0) {
}
};
inputField.addTextChangedListener(fieldValidatorTextWatcher);

}

skyddade void onStart() {
super.onStart();
}

skyddade void onStop() {
super.onStop();
stoppa Amarinos bakgrund tjänsten, vi inte behöver det längre
Amarino.Disconnect (, DEVICE_ADDRESS);
}

offentliga boolean onTouchEvent (MotionEvent händelse) {
int x = (int)event.getX();
int y = (int)event.getY();
int diffX;
int diffY;
booleska isUp, isDown, isLeft, isRight;
Switch (event.getAction()) {
fall MotionEvent.ACTION_DOWN:
en = x;
b = y;
bryta;
fall MotionEvent.ACTION_MOVE:
ta reda på vänster eller höger
IF(a > x) {
isLeft = sant;
isRight = false;
} annat {
isRight = sant;
isLeft = false;
}
bestämma uppåt eller nedåt
IF(b > y) {
isUp = sant;
isDown = false;
} annat {
isDown = sant;
isUp = false;
}
beräkna skillnaden
diffX = en - x;
om (diffX < 0) diffX * = -1;
diffY = b - y;
om (diffY < 0) diffY * = -1;
fastställa större skillnad
om (isLeft & & isUp) {
IF(diffX > diffY) onLeft();
annat onUp();
}
annars om (isLeft & & isDown) {
IF(diffX > diffY) onLeft();
annat onDown();
}
annars om (isRight & & isDown) {
IF(diffX > diffY) onRight();
annat onDown();
}
annars om (isRight & & isUp) {
IF(diffX > diffY) onRight();
annat onUp();
}

bryta;
fall MotionEvent.ACTION_UP:
bryta;
}
returnera false;
}

privata void onUp() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, "~", "U");
}
privata void onLeft() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', "L");
}
privata void onRight() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', "R");
}
privata void onDown() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, "~", "D");
}
privata void onLeftClick() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', 'Z');
}
privata void onRightClick() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', "X");
}
privata void onPlus() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', "P");
}
privata void onMinus() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', "M");
}

privata void onSend (String str) {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ^', str);
}
privata void onDelete() {
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ''', 'B');
}
}

===============================

Main.XML

<? XML-version = "1.0" encoding = "utf-8"? >
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android: orientering = "vertikala"
Android: layout_width = "fill_parent" android: layout_height = "fill_parent" >

< LinearLayout android: layout_width = "400 pixlar" android: layout_height = "100px" android: layout_gravity = "center_horizontal"
Android: layout_marginTop = "20px" >

< knappen android: id = "
Android: text = "android: textstorlek ="32px"
Android: layout_width = "200px" android: layout_height = "100px" >< / knapp >

< knappen android: id = "
Android: text = "android: textstorlek ="32px"
Android: layout_width = "200px" android: layout_height = "100px" >< / knapp >

< / LinearLayout >

< LinearLayout android: layout_width = "200px" android: layout_height = "100px" android: layout_gravity = "center_horizontal"
Android: layout_marginTop = "20px" >

< knappen android: id = "
Android: text = "android: textstorlek ="48px"
Android: layout_width = "100px" android: layout_height = "100px" >< / knapp >

< knappen android: id = "
Android: text = "android: textstorlek ="48px"
Android: layout_width = "100px" android: layout_height = "100px" >< / knapp >

< / LinearLayout >

< LinearLayout android: layout_width = "450px" android: layout_height = "100px" android: layout_gravity = "center_horizontal"
Android: layout_marginTop = "20px" >

< EditText android: id = "android: textstorlek ="32px"
Android: layout_width = "fill_parent" android: layout_height = "100px" / >

< / LinearLayout >

< / LinearLayout >

===============================

Strings.XML

<? XML-version = "1.0" encoding = "utf-8"? >
< resurser >
< string namn = "programnamn" > MyRemote < / sträng >
< string namn = "clickLeft" > vänster klicka < / sträng >
< string namn = "clickRight" > högerklicka på < / sträng >
< string namn = "plus" > + < / sträng >
< string namn = "minus" > – < / sträng >
< string namn = "Skicka" > Skicka < / sträng >
< / resurser >

===============================

Jag skulle vilja säga några ord om flera funktioner längst ner på "MyRemote.java". De kallar samma metod med liknande parametrar:
Amarino.sendDataToArduino (detta, DEVICE_ADDRESS, ' ~', 'Z');

Denna metod gör det faktiska commucation med den BlueSMiRF wired till Arduino. Det vet vad enheten att skicka det till variabeln DEVICE_ADDRESS, som är en unik identifierare för BlueSMiRF. Ganska rakt fram. Men nästa att parametrar kan behöva lite mer förklaring, den ~ och Z. Den 3: e parametern (~) berättar bearbetning skissen, som vi ska skriva i nästa steg, vilket läge vi är i:
~ = musrörelse, mus-klicka och musens känslighet
^ = tangentbordsinmatning
' = Backsteg

Jag valde de slumpmässiga tecken purposefully för ett par skäl. Främst, behövde jag några reserverade tecken betecknar "läge" så jag valde de tecken som jag skulle aldrig använda medan du kör detta projekt. Detta kan verka förvirrande, men förhoppningsvis detta kommer att klara det upp: den fjärde parametern ("Z" i ovanstående kodutdrag) kan göra en sak om skicka det med en ~ eller det kan göra något helt annat om jag skickar det med en ^. Detta växer möjligheterna exponentiellt.

Observera användningen av dessa tecken på nästa steg, våra Processing skiss.

Se Steg
Relaterade Ämnen

Hur man styr servomotor från android app

Om du vill göra Android app att styra en servomotor, detta är en perfekt instructable för dig, här kan du följa en steg för steg förfarande video för att veta hur man gör en android app som använder MIT app inventor och styra en servomotor.Steg 1: Ko...

Styra Intel Edison med anpassade Android app via Internet.

¡Hello alla, jag hoppas att detta projekt kommer att hjälpa dig att göra din egen Smart Home kontrollerad via Internet!Projektet består i ett Smart Home system kontrolleras via Internet av en Android-applikation designad av mig. Steg framåt jag förkl...

Arduino NodeMCU ESP8266 baserade WIFI Smart Strip 4 Relay Switch Board med Raw TCP/IP, Mqtt & Android App

Nod MCU är en öppen källkod ESP8266 baserade Wifi aktiverat IoT plattform för alla. Vad vi har gjort skapas en fyra relay board för det och det coolaste är att styrelsen också har en 100-240V-AC till 5V DC strömförsörjning ombord så du kommer att kun...

RC bil hacka - bluetooth kontrolleras via Android app

Jag är säker på att ni kan hitta på hem oanvända RC bil. Denna anvisning hjälper dig att ändra din gamla RC bil till ursprungliga gåva :) På grund av att den RC bil jag hade var liten i storlek har jag valt Arduino Pro Mini som huvudsakliga controlle...

Styra Arduino med Android-telefon via Bluetooth

Hej gott folk, här kan du lära dig hur man styr Arduino med Android-telefon via Bluetooth. Du kan använda din smartphone som en fjärrkontroll för dig hem belysningssystem eller du kan använda som en drone remote etc.För att göra anslutningen mellan A...

Styra Arduino använder android app

I detta instructables ska jag förklara hur man styr de arduino IO pinnar använder en android app, som vi ska skriva här.Meddelandet kommer att vara över ethernet och vi kommer att använda en GET-begäran till aktivera IO.Låt oss komma igång!Steg 1: de...

Android APP att styra en 3DPrinted Robot

Detta instructables görs att förklara hur man kontrollerar en av mina EEZYbotARM eller EEZYbotDELTA med en Smartphone (eller en tablett). Detta görs via Arduino ombord en bluetooth-modul och en Android app med MIT App inventor 2.Video:I videon jag an...

Hur: Skapa en Android App med Android studion att styra LED

Detta är en steg för steg handledning för att göra en android apk via bluetooth.Innan start kodning,Ladda ner Android Studio IDE och uppdatera Java. Java och C kunskaper i programmering hjälper. Denna ska tutorial förklarar inte Java programmering. O...

Programmera din Arduino med en Android-enhet via Bluetooth

Hej världen, i detta Instructable jag vill visa dig, hur du programmerar din Arduino Uno med din Android-enhet via Bluetooth. Det är mycket enkelt och så billig. Det ger oss också möjlighet att programmera vårt Arduino där allt vi vill över trådlöst...

Arduino Bluetooth Garage dörrkontroll med sensorer och anpassningsbara Android App

Använda en arduino till aktivera reläer för att öppna garageportar och elektriska dörrlås.En anpassningsbar Android App, ansluter till arduino via lösenordsskyddade bluetooth-ihopparningen.En bluetooth hc-05 modul tar emot kommandon från en android-t...

Arduino/Android - BLUETOOTH RGB ledde kontroll ANDROID APP

Hej världen! Idag har jag gjort en app för att styra en RGB Led-modul med en Android-enhet. Kontakta mig för den öppna källkoden av APP.Obs: Om du köpt en gemensam anod LED ansluter du den till 5vJag använde en gemensam katod ledde som måste anslutas...

Arduino - BLUETOOTH röst & Remote hem kontroll Android APP

Hej världen! Idag gjorde jag en röst kontroll och fjärrkontrollen app kombinerat. Jag tror detta är den bästa jag gjort och jag kommer att använda den i mitt hem själv, kolla också in andra apps jag gjort.Jag gjorde en lista över kommandon i koden, h...

Kontrollera elektriska enheter från Android, Arduino och skapa din egen android app

Hej, vill du kontrollera alla dina elektriska apparater i hemmet styrs från din android mobil, vill du skapa din egen app för att uppnå denna uppgift, det här inlägget förklarar steg för steg procedur för att skapa android app för att kontrollera ele...

Kontrollera lamporna på julgran via Arduino, Android och Bluetooth!

Alrighty, detta är min första Instructable och jag är ganska glada över det. Jag fick idén till detta projekt från en kombination av dessa 2 Instructables...Grundtanken var att göra ett sätt att kontrollera lamporna på min julgran i år, men efter jul...

Bygga Android APP till kontroll Arduino Smart Car (製作Android APP控制Arduino 智慧車)

Detta är en exempelkod skapas från MIT APP inventor2. Att visa hur du ansluter till Andruino via BT. Du kan ändra den av dig att möta vilken funktion du vill ha. Bassically, det är verkligen lätt att bygga en APP för att stödja Arduino + BT projekt.....

Arduino pro mini HC-06 Bluetooth och Android App

Arduino pro mini HC-06 Bluetooth och Android AppYouTube channelDokument och kod...

Bluetooth-tangentbord mus Adapter

Hallå! Denna veckas bygga är Minion Bluetooth tangentbord mus-kortet!Koppla in ett vanligt tangentbord eller mus och vi kommer att kunna använda dem som ett Bluetooth-tangentbord eller -mus.Det är också NFC aktiverat så vi kan direkt peka till par me...

Hacka en gammal iPod med hjälp av en Android och en Arduino.

Denna handledning visar hur du använder en Arduino för att förvandla den gamla dammiga musikspelaren till en Bluetooth kontrollerad dockningsstation.Även om den har en sprucken skärm eller dött batteri det kan fortfarande användas.Följande instruktio...

Smart Home Automation med Android + Ethernet Internet + Arduino

Hemautomation blir mer och mer populära, prisvärda och fascinerar människor. Internet erbjuder sådana möjligheter som aldrig förr. Imponera på dina vänner visar på Smartphone som du kan växla på/av-lampa i din lägenhet miles bort och samtidigt se det...