Android mit Computer kommunizieren lassen

  • Antworten:11
  • Bentwortet
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 17:53:38 via Website

Hi,

ich bin neu in diesem Forum und beschäftige mich seit einiger Zeit mit dem Programmieren von Java Apps auf Android. Ich möchte eine App schreiben, die mit dem Computer kommuniziert. Nur wie mache ich das? Ziel ist es, dass beim Start der App oder bei Klick auf einen entsprechenden Button mein Smartphone via Wifi mit dem Computer interagiert (ausführen von bestimmten Aktionen)
Wie stelle ich das nun an :-D? Wie sage ich Android es soll mit dem Computer kommunizieren? Gibt es da irgendwie ein paar Code Schnipsel?

Viele Grüße

Robert

Antworten
Carsten M.
  • Forum-Beiträge: 33.204

07.03.2012, 18:05:43 via App

Z. B. indem Du auf dem PC einen Server einrichtest, den Du via App ansprichst...

Herzliche Grüße
Carsten

Ich komm' mir langsam vor wie jemand, der ich bin // #cäthe

Antworten
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 19:28:02 via Website

Hallo Carsten!

Danke für deine Antwort!

ich habe nun mal geschaut wie ich einen Server auf meinem Rechner erstellen kann (mit Java) habe daraufhin eine Anleitung und ein schon vorgefertigtes beispiel gefunden

http://openbook.galileodesign.de/javainsel5/javainsel16_007.htm#Rxx747java160070400063A1F03F100

https://www.nextpit.de/de/android/forum/thread/394352/Ueber-Wifi-mit-dem-PC-kommunizieren

Wollte das Beispiel einfach mal selbst nachahmen und stoße bei der App allerdings auf ein Problem. Ich habe den Code den das Andere Mitglied ganz unten gepostet hat einfach mal abgeändert in Eclipse eingegeben, jedoch gibt es keine Rückmeldung vom Smartphone...
(java.netSocketTimeoutExeption: Connection timed out)

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

07.03.2012, 20:33:09 via Website

Robert N.
Andere Mitglied ganz unten gepostet hat einfach mal abgeändert in Eclipse eingegeben, jedoch gibt es keine Rückmeldung vom Smartphone...
(java.netSocketTimeoutExeption: Connection timed out)

Vermutlich hast du diese Zeile...

123 Socket server = new Socket("IP des PCs", 1234);

...genau so abgetippt. :smug:

if all else fails, read the instructions.

Antworten
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 20:48:39 via Website

neee :-D da habe ich schon meine eigene IP eingetippt :P

Antworten
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 20:56:11 via Website

Theoretisch müsste ich den Fehler doch bei meiner App suchen, wenn ich beim Starten der PC-Applikation (Server) in der Console "Server gestartet" angezeigt kriege oder? Ist ja eine if Bedingung und deshalb würde die Console ja nichts ausgeben, wenn was in der PC Application falsch wäre:) ?

Antworten
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 21:08:22 via Website

Ich habe den Fehler entdeckt :-D Ich habe die IP einfach aus einer Anderen App genommen (Remote Droid), jedoch was das die Falsche. Danach habe ich nochmals die IP via Komandozeile aufgerufen, eingetippt und es hat funktioniert ;)

Antworten
Robert N.
  • Forum-Beiträge: 22

07.03.2012, 21:45:38 via Website

Zwar funktioniert dieser kleine "Chat nun " jedoch hängt sich die App immer nach Einmaligem senden auf...woran könnte das liegen? Hier der code der App Datei:

1package de.android.tester;
2
3import java.io.BufferedReader;
4import java.io.BufferedWriter;
5import java.io.IOException;
6import java.io.InputStreamReader;
7import java.io.OutputStreamWriter;
8import java.net.Socket;
9
10import android.app.Activity;
11import android.os.Bundle;
12import android.view.View;
13import android.widget.Button;
14import android.widget.EditText;
15import android.widget.TextView;
16
17public class TesterActivity extends Activity {
18
19 private TextView myText;
20 private Button myButton;
21 private EditText myTextField;
22
23 /** Called when the activity is first created. */
24 @Override
25 public void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.main);
28
29 myText = (TextView) findViewById(R.id.test_text);
30 myButton = (Button) findViewById(R.id.test_button);
31 myTextField = (EditText) findViewById(R.id.texteingabefeld);
32
33 myButton.setOnClickListener(new View.OnClickListener() {
34 public void onClick(View view) {
35 myText.setText("Button wurde gedrückt!");
36
37 if (myTextField.getText().toString().length() != 0) {
38 String aStr = myTextField.getText().toString();
39 try {
40 Socket server = new Socket("192.168.178.31", 1234);
41 BufferedReader input = new BufferedReader(
42 new InputStreamReader(server.getInputStream()));
43 BufferedWriter output = new BufferedWriter(
44 new OutputStreamWriter(server.getOutputStream()));
45 output.write(aStr);
46 output.newLine();
47 output.flush();
48 myText.setText("Antwort vom Server: "
49 + input.readLine());
50 } catch (IOException e) {
51 myText.setText(e.toString());
52 }
53 } else {
54 myText.setText("Text");
55 }}});
56 }
57
58 public void onClick(View v) {
59 // TODO Auto-generated method stub
60
61 }
62}

Antworten
Felix
  • Forum-Beiträge: 259

09.03.2012, 23:16:46 via Website

Tach!

Zwar funktioniert dieser kleine "Chat nun " jedoch hängt sich die App immer nach Einmaligem senden auf...woran könnte das liegen?

Was hast du bereits unternommen, um die Ursache zu finden? Hast du schon den Debugger angeworfen, um die Stelle zu finden, an der es nicht mehr weitergeht?


Felix.

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

10.03.2012, 11:42:47 via Website

Ich bin jetzt zwar kein Android-Programmierer, würde aber sagen, die onCreate()-Methode wurde durchlaufen und das wars dann halt.
Da vom Button die onClick()-Methode auch leer ist, geht an der Stelle auch nix.

Also ein normales Verhalten - einmal gelaufen, dann geht nur noch beenden mit "zurück" bzw. "Home".

:)

if all else fails, read the instructions.

Antworten
Felix
  • Forum-Beiträge: 259

10.03.2012, 12:43:57 via Website

Tach!

Klaus T.
Ich bin jetzt zwar kein Android-Programmierer, würde aber sagen, die onCreate()-Methode wurde durchlaufen und das wars dann halt.
Da vom Button die onClick()-Methode auch leer ist, geht an der Stelle auch nix.

Das einzelne leere onClick() steht da nur zur Zierde. Eine Funktion hat es keins. Dem myButton wurde mit myButton.setOnClickListener() ein Click-Listener übergeben. Darin befindet sich das Socket-Handling. Der myButton kann durchaus auch öfter geklickt werden.

Das onClick() am Ende bekäme eine Funktion, wenn die Klasse android.view.View.OnClickListener implementierte und dann this als OnClickListener in irgendeiner View gesetzt würde.


Felix.

Antworten
Klaus T.
  • Forum-Beiträge: 8.183

10.03.2012, 13:29:21 via Website

Felix
Das onClick() am Ende bekäme eine Funktion, wenn die Klasse android.view.View.OnClickListener implementierte und dann this als OnClickListener in irgendeiner View gesetzt würde.

Aaah...Ok....wer lesen kann ist klar im Vorteil! :*):)

if all else fails, read the instructions.

Antworten