Styra Arduino använder android app (6 / 8 steg)
Steg 6: App kodning
För kodning app, gjorde jag det lättare för dig. Du måste kopiera denna kod till MainActivity.java och ändra paketet laurens_wuyts.arduinoiocontrol till company.appname.
paketet laurens_wuyts.arduinoiocontrol;
import android.app.Activity;
import android.os.AsyncTask;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.ToggleButton;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
allmän klass MainActivity sträcker sig aktiviteten {
skyddade void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
offentliga boolean onCreateOptionsMenu (Menu menu) {
Blåsa upp menyn; Detta lägger till innehåll i åtgärdsfältet om den finns.
getMenuInflater () .inflate (R.menu.menu_main, menyn);
return true;
}
offentliga boolean onOptionsItemSelected (MenuItem post) {
Hantera åtgärden bar objekt klick här. Åtgärdsfältet kommer
automatiskt handtaget klickar på knappen hem/upp, så länge
du anger en förälder verksamhet i AndroidManifest.xml.
int id = item.getItemId();
noinspection SimplifiableIfStatement
om (id == R.id.action_settings) {
return true;
}
återvända super.onOptionsItemSelected(item);
}
/*****************************************************/
/ * Detta är en bakgrundsprocess för att ansluta * /
/ * till arduino server och skicka * /
/ * en GET-begäran med extra data * /
/*****************************************************/
privat klassen Background_get utökar AsyncTask < sträng, Void, sträng > {
Protected String doInBackground (sträng... params) {
försök {
/*********************************************************/
/ * Ändra IP till IP du anger i den arduino skissen * /
/*********************************************************/
URL url = ny URL ("http://192.168.1.177/?" + params[0]);
HttpURLConnection anslutning = (HttpURLConnection) url.openConnection();
BufferedReader i = nya BufferedReader (nya InputStreamReader(connection.getInputStream()));
StringBuilder resultatet = nya StringBuilder();
Sträng inputLine;
medan ((inputLine = in.readLine())! = null)
Result.append(inputLine).append("\n");
in.Close();
Connection.Disconnect();
återvända result.toString();
} fånga (IOException e) {
e.printStackTrace();
}
returnera null;
}
}
}
I den här koden behöver du bara ändra IP till IP av din arduino.
För att kontrollera knappen behöver du att göra 2 saker:
- Definiera knappen
- Lägga till en onclick/onchange lyssnare för varje knapp.
Definiera knapparna:
/ * För en växel * /
Byta led1 = (Switch) findViewById(R.id.Led1);
/ * För en växlingsknapp * /
ToggleButton led2 = (ToggleButton) findViewById(R.id.Led2);
/ * För en normal knapp * /
Knappen led3 = (knappen) findViewById(R.id.Led3);
Lägga till onclick/onchange:
Placera onclick/onchange lyssnare i funktionen onCreate.
/ * För en switch behöver du en "OnCheckedChangeListener" såhär * /
LED1.setOnCheckedChangeListener (nya CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged (CompoundButton buttonView, boolean isChecked) {
om (isChecked) {
/ * Switch är led 1 * /
nya Background_get().execute("led1=1");
} annat {
nya Background_get().execute("led1=0");
}
}
});
/ * För en växlingsknapp behöver du också en "OnCheckedChangeListener" * /
LED2.setOnCheckedChangeListener (nya CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged (CompoundButton buttonView, boolean isChecked) {
IF(isChecked) {
/ * Växlingsknappen är led 2 * /
nya Background_get().execute("led2=1");
} annat {
nya Background_get().execute("led2=0");
}
}
});
/ * För en knapp behöver du en "OnTouchListener" * /
LED3.setOnTouchListener (nya View.OnTouchListener() {
offentliga boolean onTouch (Visa v, MotionEvent händelse) {
om (event.getAction() == MotionEvent.ACTION_DOWN) {
/ *-knappen är led 3 * /
nya Background_get().execute("led3=1");
} else om (event.getAction() == MotionEvent.ACTION_UP) {
nya Background_get().execute("led3=0");
}
return true;
}
});
Det är all kodning som behövde göras! Nu måste vi lägga till behörigheter i din app.