Java-Android - Anruf-URL, wenn die Taste gedrückt wird, ohne öffnen browser
Möchte ich eine einfache Android App, mit Schaltflächen ruft eine URL auf einem Arduino-Gerät Schalter leuchtet auf und aus. Es ist nicht notwendig, öffnen Sie einen webbrowser.
Ich bin ziemlich neu auf Android und habe schon gesucht hier und fand einige Vorschläge, aber Sie funktionierte nicht für mich.
Vielleicht kann jemand mich in die richtige Richtung?
Hier ist mein code bisher, wenn ich auf den Knopf drücke, passiert nichts.
package de.triscus.arduinoweb;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.view.View.OnClickListener;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class HomeLight extends AppCompatActivity implements OnClickListener {
String msg = "Android : ";
private Button lichterkette1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_light);
lichterkette1 = (Button) findViewById(R.id.Lichterkette1);
lichterkette1.setOnClickListener(this);
}
public void onClick(View v) {
URL url = null;
HttpURLConnection urlConnection = null;
switch (v.getId())
{
case R.id.Lichterkette1:
try {
url = new URL("http://192.168.2.106/?Lichterkette=1");
urlConnection = (HttpURLConnection) url.openConnection();
//urlConnection = (HttpURLConnection) url.openConnection();
Log.d(msg, "Lichterkette1 pressed");
//InputStream in = new BufferedInputStream(urlConnection.getInputStream());
// Log.d(msg, InputStream);
} catch (MalformedURLException e) {
e.printStackTrace();
Log.d(msg, "URL Malformed");
} catch (IOException e) {
e.printStackTrace();
Log.d(msg, "IO exception");
} finally {
urlConnection.disconnect();
Log.d(msg, "Disconnected");
}
}
}
}
und hier ist der logcat-Ausgabe:
03-16 15:19:26.133 9805-9805/? I/art: Late-enabling -Xcheck:jni
03-16 15:19:26.143 9805-9805/? I/art: VMHOOK: rlim_cur : 0 pid:9805
03-16 15:19:26.173 9805-9815/? I/art: Debugger is no longer active
03-16 15:19:26.193 9805-9805/? E/Typeface: SANS_LOC file not found.
03-16 15:19:26.584 9805-9805/? D/Atlas: Validating map...
03-16 15:19:26.684 9805-9835/? I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: AU_LINUX_ANDROID_LA.AF.1.1_RB1.05.00.02.006.020 - CR771817 ()
OpenGL ES Shader Compiler Version: E031.25.03.06
Build Date: 03/04/15 Wed
Local Branch:
Remote Branch: refs/tags/AU_LINUX_ANDROID_LA.AF.1.1_RB1.05.00.02.006.020
Local Patches: NONE
Reconstruct Branch: NOTHING
03-16 15:19:33.481 9805-9805/de.triscus.arduinoweb D/Android :: Lichterkette1 pressed
03-16 15:19:33.481 9805-9805/de.triscus.arduinoweb D/Android :: Disconnected
03-16 15:19:34.832 9805-9805/de.triscus.arduinoweb D/Android :: Lichterkette1 pressed
03-16 15:19:34.832 9805-9805/de.triscus.arduinoweb D/Android :: Disconnected
Danke im Voraus
Triscus
P. S.: Internet - /Netzwerk-Auslastung erlaubt
Das ist eine Arbeit. Deine Ausgabe sagt, dass Sie eine Verbindung in die Schaltfläche gedrückt, portion, und dann schließlich zu trennen, wenn Sie fertig sind.
InformationsquelleAutor Triscus | 2016-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Netzwerk oprations/Aufruf kann nicht durchgeführt werden Haupt-thread. Sie müssen führen Sie es aus einem anderen thread-oder asynchronen task oder eine Absicht service
Hinweis : Alle UI-opration sollte getan werden onPostExecute,onPreExecute
Den code unten kann Ihnen helfen, zu lösen.
Froh, Ihnen zu helfen....Ya es sollte nach außen verlagert Schalter habe ich bearbeitet meine Antwort. Wenn es für Sie gearbeitet werden kann, akzeptieren Sie meine Antwort.
InformationsquelleAutor Andan H M
Ich werde die Antwort auf diese Frage so allgemein wie möglich, in der Hoffnung, dass es hilft nicht nur Euch, sondern andere. Die Klasse suchen, ist aufgerufen, eine HttpPost oder eine HttpGet. Obwohl die URLConnection Sie verwenden, sollte auch funktionieren. HttpPost und HttpGet sind nicht ASYNC so müssen Sie wahrscheinlich wollen, um es aus einem anderen thread oder eine Absicht service.
Können Sie senden post-Anfragen wie die folgenden
Http Wird Folgen ungefähr dem gleichen format.
Dies ist eine wirklich schnelle gerade nach vorne Weg zu schicken, get und post-requests, ohne mit einem browser. Das einzige Problem ist, dass Sie nicht async, wie ich bereits erwähnt habe, bevor, aber es ist wirklich wichtig. Sie arbeiten mit einem rest-api. Also der einzige Haken ist, dass Sie brauchen, um sicherzustellen, dass Ihr Arduino verhält sich wie ein richtiger webserver.
InformationsquelleAutor nbroeking