Probleme mit App und Debugging

  • Antworten:27
  • Bentwortet
Tom K
  • Forum-Beiträge: 26

21.04.2012, 22:01:55 via Website

Hallo Leute,

Ich hab Probleme bei meiner eigentlich ersten aber schon etwas komplizierten Android App die ich für die Steuerung einer Lichtanlage in meiner Schule entwickeln muss. Bisher hab ich nur C Sharp programmieren gelernt und bin deswegen etwas überfordert beim JAVA Programmieren und jetzt auch Debuggen meiner App ^^
Da ich viel an Code habe und mir nicht sicher bin ob ich den ganzen hier posten darf/soll, wollte ich erst einmal fragen ob es jemanden gibt der mir gerne helfen würde und dem ich dann den ganzen Code schicken kann oder sonst irgendwie geben kann ^^

Bitte helft mir! :(

Antworten
Markus B.
  • Forum-Beiträge: 636

22.04.2012, 00:23:08 via Website

Hallo,
fang doch mal von vorne an. Ich meine du hast ja schon etwas geschrieben. Wo ist denn genau dein Problem ?
Funktioniert irgendwo etwas nicht ? Stürzt die App ab ?

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 15:14:45 via Website

Gut dann fang ich gleich mal mit dem ersten Fehler an bei dem ich die App nicht mal starten kann ^^

1public class Main extends Activity {
2
3 SeekBar skbAlleDimmen;
4
5 int dimmwertalle = 255; //Maximalen Dimmwert setzen
6
7 /** Called when the activity is first created. */
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11
12 //Seekbar mit ChangeListener erstellen
13 skbAlleDimmen = (SeekBar)findViewById(R.id.skb_startseite_lichter_dimmen);
14 skbAlleDimmen.setOnSeekBarChangeListener((OnSeekBarChangeListener) this);
15
16 setContentView(R.layout.main);
17 }
18
19 //Methode wird nach dem Loslassen der Seekbar aufgerufen
20 public void onStopTrackingTouch(SeekBar seekBar) {
21 dimmwertalle = skbAlleDimmen.getProgress();
22 Datatransfer AlleDimmen = new Datatransfer();
23 AlleDimmen.Datasend("R1W" + dimmwertalle + "!");
24 }
25
26//...anderer Code
Beim Debuggen kommt gleich mal FATAL EXCEPTION: main Error und danach
E/AndroidRuntime(1570): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lightmanagement.application/com.lightmanagement.application.Main}: java.lang.ClassCastException: com.lightmanagement.application.Main cannot be cast to android.widget.SeekBar$OnSeekBarChangeListener
Gefolgt von mehreren Errors und Google hat nicht wirklich geholfen... :/

Antworten
Markus B.
  • Forum-Beiträge: 636

22.04.2012, 15:29:50 via Website

Hi,
nun frag ich mich ja wie du die App entwickelt hast wenn diese schon beim Starten aussteigt...

Der Fehler liegt hier:

skbAlleDimmen = (SeekBar)findViewById(R.id.skb_startseite_lichter_dimmen);

Dann zeig mir doch mal den Inhalt von der main.xml.

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 15:35:11 via Website

Vorher war die App auch einfacher und hat auch funktioniert. Jetzt hab ich noch manches geändert und die Seekbar hinzugefügt und seitdem stürzt sie ab.

main.xml:
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <TextView
8 android:id="@+id/tv_startseite"
9 android:layout_width="wrap_content"
10 android:layout_height="wrap_content"
11 android:padding="10dip"
12 android:text="@string/tv_startseite"
13 android:textSize="30dp"
14 android:textStyle="bold" />
15
16 <Button
17 android:id="@+id/btn_startseite_lichter_ein"
18 android:layout_gravity="center"
19 android:layout_width="300dp"
20 android:layout_height="wrap_content"
21 android:text="@string/btn_startseite_lichter_ein"
22 android:onClick="onButtonClick" />
23
24 <Button
25 android:id="@+id/btn_startseite_lichter_aus"
26 android:layout_gravity="center"
27 android:layout_width="300dp"
28 android:layout_height="wrap_content"
29 android:text="@string/btn_startseite_lichter_aus"
30 android:onClick="onButtonClick" />
31
32 <Button
33 android:id="@+id/btn_startseite_lichter_dimmen"
34 android:layout_gravity="center"
35 android:layout_width="300dp"
36 android:layout_height="wrap_content"
37 android:text="@string/btn_startseite_lichter_dimmen"
38 android:onClick="onButtonClick" />
39
40 <SeekBar
41 android:id="@+id/skb_startseite_lichter_dimmen"
42 android:layout_gravity="center"
43 android:layout_width="250dp"
44 android:layout_height="wrap_content"
45 android:paddingBottom="20dip"
46 android:max="255"
47 android:progress="255"/>
48
49 <Button
50 android:id="@+id/btn_startseite_einzelne_lichter"
51 android:layout_gravity="center"
52 android:layout_width="300dp"
53 android:layout_height="wrap_content"
54 android:text="@string/btn_startseite_einzelne_lichter"
55 android:onClick="onButtonClick" />
56
57 <Button
58 android:id="@+id/btn_startseite_reihen"
59 android:layout_gravity="center"
60 android:layout_width="300dp"
61 android:layout_height="wrap_content"
62 android:text="@string/btn_startseite_reihen"
63 android:onClick="onButtonClick" />
64
65 <Button
66 android:id="@+id/btn_startseite_saved_states"
67 android:layout_gravity="center"
68 android:layout_width="300dp"
69 android:layout_height="wrap_content"
70 android:text="@string/btn_startseite_saved_states"
71 android:onClick="onButtonClick" />
72
73 <Button
74 android:id="@+id/btn_startseite_kommando"
75 android:layout_gravity="center"
76 android:layout_width="300dp"
77 android:layout_height="wrap_content"
78 android:text="Kommando..."
79 android:onClick="onButtonClick" />
80
81</LinearLayout>

Antworten
Markus B.
  • Forum-Beiträge: 636

22.04.2012, 15:51:54 via Website

Hi, grrrrrr jetzt sehe ich es erst.

setContentView(R.layout.main);

Pack das mal direkt unter

super.onCreate(savedInstanceState);

Dann kann er die R.id auch finden.

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 16:05:03 via Website

Danke. Ich hab das Ganze jetzt mal so geändert:

1public class Main extends Activity implements OnSeekBarChangeListener {
2
3 SeekBar skbAlleDimmen;
4
5 int dimmwertalle = 255; //Maximalen Dimmwert setzen
6
7 /** Called when the activity is first created. */
8 @Override
9 public void onCreate(Bundle savedInstanceState) {
10 super.onCreate(savedInstanceState);
11 setContentView(R.layout.main);
12
13 //Seekbar mit ChangeListener erstellen
14 skbAlleDimmen = (SeekBar)findViewById(R.id.skb_startseite_lichter_dimmen);
15 skbAlleDimmen.setOnSeekBarChangeListener(this);
16 }
17
18 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
19 }
20
21 public void onStartTrackingTouch(SeekBar seekBar) {
22 }
23
24 //Methode wird nach dem Loslassen der Seekbar aufgerufen
25 public void onStopTrackingTouch(SeekBar seekBar) {
26 dimmwertalle = skbAlleDimmen.getProgress();
27 Datatransfer AlleDimmen = new Datatransfer();
28 AlleDimmen.Datasend("R1W" + dimmwertalle + "!");
29 }
30
31 public void onButtonClick(final View view) {
32 switch (view.getId()) {
33 //Alle Lichter steuern
34 case R.id.btn_startseite_lichter_ein:
35 Datatransfer AlleEin = new Datatransfer();
36 AlleEin.Datasend("R1W255!");
37 break;
38//... restlicher Code

und jetzt startet die App wenigstens mal :)
Aber wenns jetzt weiter geht und ich auf Button Lichter Ein drück kommen die Fehler:

104-22 15:59:22.652: E/AndroidRuntime(5197): FATAL EXCEPTION: main
204-22 15:59:22.652: E/AndroidRuntime(5197): java.lang.IllegalStateException: Could not execute method of the activity

usw. und da geht er in die Klasse mit dem Code:

1package com.lightmanagement.application;
2
3import java.net.*;
4import java.io.*;
5
6import android.widget.Toast;
7import android.app.Activity;
8
9public class Datatransfer extends Activity{
10
11 public void Datasend(String kommando) {
12
13 final String IPSERVER = "172.16.22.223";
14 final int SERVERPORT = 1500;
15 Socket s = null;
16
17 //String zusammenstellen
18 String kommandostr = (char)2 + kommando + (char)3;
19
20 try {
21 //Socket mit IP und Port
22 s = new Socket(IPSERVER, SERVERPORT);
23
24 //OutputStream von Socket
25 OutputStream out = s.getOutputStream();
26
27 //Kommandostring auf Output schreiben
28 PrintWriter output = new PrintWriter(out);
29 output.write(kommandostr);
30 output.flush();
31 }
32 catch (UnknownHostException e) {
33 Toast HostToast = Toast.makeText(this, "Server wurde nicht erreicht!", Toast.LENGTH_LONG);
34 HostToast.show();
35 }
36 catch (IOException e) {
37 Toast IOToast = Toast.makeText(this, "IOExeption Error!", Toast.LENGTH_LONG);
38 IOToast.show();
39 }
40 finally {
41 try {
42 s.close();
43 } catch (IOException e) {
44 Toast IOToast = Toast.makeText(this, "IOExeption Error!", Toast.LENGTH_LONG);
45 IOToast.show();
46 }
47 }
48 }
49}

da wäre halt irgendwo wieder ein Fehler ^^

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 16:25:52 via Website

Meinst du den?

104-22 16:23:09.965: I/System.out(6350): waiting for debugger to settle...
204-22 16:23:10.165: I/System.out(6350): debugger has settled (1327)
304-22 16:23:10.695: D/memalloc(6350): /dev/pmem: Mapped buffer base:0x51b6b000 size:31162368 offset:29073408 fd:58
404-22 16:23:20.825: D/memalloc(6350): /dev/pmem: Mapped buffer base:0x539de000 size:24231936 offset:22142976 fd:61
504-22 16:23:30.104: D/AndroidRuntime(6350): Shutting down VM
604-22 16:23:30.104: W/dalvikvm(6350): threadid=1: thread exiting with uncaught exception (group=0x40a9f228)
704-22 16:23:30.174: E/AndroidRuntime(6350): FATAL EXCEPTION: main
804-22 16:23:30.174: E/AndroidRuntime(6350): java.lang.IllegalStateException: Could not execute method of the activity
904-22 16:23:30.174: E/AndroidRuntime(6350): at android.view.View$1.onClick(View.java:3082)
1004-22 16:23:30.174: E/AndroidRuntime(6350): at android.view.View.performClick(View.java:3549)
1104-22 16:23:30.174: E/AndroidRuntime(6350): at android.view.View$PerformClick.run(View.java:14400)
1204-22 16:23:30.174: E/AndroidRuntime(6350): at android.os.Handler.handleCallback(Handler.java:605)
1304-22 16:23:30.174: E/AndroidRuntime(6350): at android.os.Handler.dispatchMessage(Handler.java:92)
1404-22 16:23:30.174: E/AndroidRuntime(6350): at android.os.Looper.loop(Looper.java:154)
1504-22 16:23:30.174: E/AndroidRuntime(6350): at android.app.ActivityThread.main(ActivityThread.java:4944)
1604-22 16:23:30.174: E/AndroidRuntime(6350): at java.lang.reflect.Method.invokeNative(Native Method)
1704-22 16:23:30.174: E/AndroidRuntime(6350): at java.lang.reflect.Method.invoke(Method.java:511)
1804-22 16:23:30.174: E/AndroidRuntime(6350): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
1904-22 16:23:30.174: E/AndroidRuntime(6350): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
2004-22 16:23:30.174: E/AndroidRuntime(6350): at dalvik.system.NativeStart.main(Native Method)
2104-22 16:23:30.174: E/AndroidRuntime(6350): Caused by: java.lang.reflect.InvocationTargetException
2204-22 16:23:30.174: E/AndroidRuntime(6350): at java.lang.reflect.Method.invokeNative(Native Method)
2304-22 16:23:30.174: E/AndroidRuntime(6350): at java.lang.reflect.Method.invoke(Method.java:511)
2404-22 16:23:30.174: E/AndroidRuntime(6350): at android.view.View$1.onClick(View.java:3077)
2504-22 16:23:30.174: E/AndroidRuntime(6350): ... 11 more
2604-22 16:23:30.174: E/AndroidRuntime(6350): Caused by: java.lang.NullPointerException
2704-22 16:23:30.174: E/AndroidRuntime(6350): at com.lightmanagement.application.Datatransfer.Datasend(Datatransfer.java:41)
2804-22 16:23:30.174: E/AndroidRuntime(6350): at com.lightmanagement.application.Main.onButtonClick(Main.java:45)
2904-22 16:23:30.174: E/AndroidRuntime(6350): ... 14 more
3004-22 16:23:32.046: D/Process(6350): killProcess, pid=6350
3104-22 16:23:32.076: D/Process(6350): dalvik.system.VMStack.getThreadStackTrace(Native Method)
3204-22 16:23:32.076: D/Process(6350): java.lang.Thread.getStackTrace(Thread.java:599)
3304-22 16:23:32.076: D/Process(6350): android.os.Process.killProcess(Process.java:790)
3404-22 16:23:32.086: D/Process(6350): com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:104)
3504-22 16:23:32.086: D/Process(6350): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
3604-22 16:23:32.086: D/Process(6350): java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
3704-22 16:23:32.086: D/Process(6350): dalvik.system.NativeStart.main(Native Method)

Antworten
Markus B.
  • Forum-Beiträge: 636

22.04.2012, 16:29:32 via Website

Hi,
jau das habe ich gemeint und dort kannst du dann folgendes lesen:


04-22 16:23:30.174: E/AndroidRuntime(6350): Caused by: java.lang.NullPointerException
04-22 16:23:30.174: E/AndroidRuntime(6350): at com.lightmanagement.application.Datatransfer.Datasend(Datatransfer.java:41)

Da hast du wieder einen NullPointer drin. Also wieder schauen was da genau Null ist.

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 16:50:02 via Website

Ja das liegt sicher am Socket s. Weil normalerweise hab ich keinen finally Block und das s.close(); noch im try Block drinnen.
Der Server der erreicht werden soll liegt mit einem Proxy in meiner Schule. Dort hab ich auch schon probiert mich mit meinem Handy über Wlan und Proxy zu verbinden. Bin ich dort dann im Wlan drinnen und versuche etwas mit der App zu schicken funktioniert das auch immer, aber ich will dass wenn ich nicht in dem Wlan drinnen bin die App nicht abstürzt sonder ein Toast kommt und der Socket dann auch geschlossen wird.
Wie macht man das am besten?

Antworten
Markus B.
  • Forum-Beiträge: 636

22.04.2012, 17:01:12 via Website

Hi,
die Meldung wird ja schon weiter oben erscheinen.
Du musst nur dein finally-Block anpassen.

1finally {
2 try {
3 if(null != s )
4s.close();
5 } catch (IOException e) {
6 Toast.makeText(this, "IOExeption Error!", Toast.LENGTH_LONG).show();
7 }

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

22.04.2012, 17:20:39 via Website

Hm... Irgendwie funktioniert das trozdem nicht und es kommen die selben Errors :S

Antworten
Tom K
  • Forum-Beiträge: 26

23.04.2012, 14:38:12 via Website

Kann mir wer mit dem try, catch und finally Block helfen? :/

Antworten
Tom K
  • Forum-Beiträge: 26

23.04.2012, 15:59:34 via Website

Ja hab ich, stürzt aber trotzdem ab :/

Antworten
Markus B.
  • Forum-Beiträge: 636

23.04.2012, 17:15:21 via App

Hi, ist es denn sicher noch der selbe Fehler in
com.lightmanagement.application.Datatransfer.Datasend(Datatransfer.java:41) ?
Wenn ja dann sag mal an was in Zeile 41 steht.

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

23.04.2012, 19:00:50 via Website

Das sind mal die Fehler:
104-23 18:54:49.824: W/dalvikvm(3230): threadid=1: thread exiting with uncaught exception (group=0x40a9f228)
204-23 18:54:49.924: E/AndroidRuntime(3230): FATAL EXCEPTION: main
304-23 18:54:49.924: E/AndroidRuntime(3230): java.lang.IllegalStateException: Could not execute method of the activity
404-23 18:54:49.924: E/AndroidRuntime(3230): at android.view.View$1.onClick(View.java:3082)
504-23 18:54:49.924: E/AndroidRuntime(3230): at android.view.View.performClick(View.java:3549)
604-23 18:54:49.924: E/AndroidRuntime(3230): at android.view.View$PerformClick.run(View.java:14400)
704-23 18:54:49.924: E/AndroidRuntime(3230): at android.os.Handler.handleCallback(Handler.java:605)
804-23 18:54:49.924: E/AndroidRuntime(3230): at android.os.Handler.dispatchMessage(Handler.java:92)
904-23 18:54:49.924: E/AndroidRuntime(3230): at android.os.Looper.loop(Looper.java:154)
1004-23 18:54:49.924: E/AndroidRuntime(3230): at android.app.ActivityThread.main(ActivityThread.java:4944)
1104-23 18:54:49.924: E/AndroidRuntime(3230): at java.lang.reflect.Method.invokeNative(Native Method)
1204-23 18:54:49.924: E/AndroidRuntime(3230): at java.lang.reflect.Method.invoke(Method.java:511)
1304-23 18:54:49.924: E/AndroidRuntime(3230): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
1404-23 18:54:49.924: E/AndroidRuntime(3230): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
1504-23 18:54:49.924: E/AndroidRuntime(3230): at dalvik.system.NativeStart.main(Native Method)
1604-23 18:54:49.924: E/AndroidRuntime(3230): Caused by: java.lang.reflect.InvocationTargetException
1704-23 18:54:49.924: E/AndroidRuntime(3230): at java.lang.reflect.Method.invokeNative(Native Method)
1804-23 18:54:49.924: E/AndroidRuntime(3230): at java.lang.reflect.Method.invoke(Method.java:511)
1904-23 18:54:49.924: E/AndroidRuntime(3230): at android.view.View$1.onClick(View.java:3077)
2004-23 18:54:49.924: E/AndroidRuntime(3230): ... 11 more
2104-23 18:54:49.924: E/AndroidRuntime(3230): Caused by: android.os.NetworkOnMainThreadException
2204-23 18:54:49.924: E/AndroidRuntime(3230): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1178)
2304-23 18:54:49.924: E/AndroidRuntime(3230): at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84)
2404-23 18:54:49.924: E/AndroidRuntime(3230): at libcore.io.IoBridge.connectErrno(IoBridge.java:127)
2504-23 18:54:49.924: E/AndroidRuntime(3230): at libcore.io.IoBridge.connect(IoBridge.java:112)
2604-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192)
2704-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
2804-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.Socket.startupSocket(Socket.java:596)
2904-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.Socket.tryAllAddresses(Socket.java:127)
3004-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.Socket.<init>(Socket.java:177)
3104-23 18:54:49.924: E/AndroidRuntime(3230): at java.net.Socket.<init>(Socket.java:149)
3204-23 18:54:49.924: E/AndroidRuntime(3230): at com.lightmanagement.application.Datatransfer.Datasend(Datatransfer.java:21)
3304-23 18:54:49.924: E/AndroidRuntime(3230): at com.lightmanagement.application.Main.onButtonClick(Main.java:47)
3404-23 18:54:49.924: E/AndroidRuntime(3230): ... 14 more

Bei Datatransfer.java:21 steht
1s = new Socket(IPSERVER, SERVERPORT);

Und bei Main.java:47 steht
1AlleEin.Datasend("R1W255!");

Antworten
Markus B.
  • Forum-Beiträge: 636

24.04.2012, 09:21:19 via App

Hi, lade die App mal irgendwo hoch und schick mir den Link per pn. Ich muss mir die ganze Geschichte mal genau anschauen. Ich sag es nur schon mal vorweg, heute schaffe ich das nicht.

Gruß,
Markus

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

24.04.2012, 15:18:33 via Website

Hey,

dein Profil sagt, du hast ein HTC Sensation, mit Android 4.0? Testest du auf diesem? Denn diese Exception, welche in deinem Stacktrace auftaucht, gibt es seit 4.0
1[…]Caused by: android.os.NetworkOnMainThreadException[…]

Lg Ansgar

Antworten
Tom K
  • Forum-Beiträge: 26

24.04.2012, 15:53:57 via Website

@Markus: Was genau kann ich dir schicken? Den Ordner im workspace oder irgendeine Datei?

@Ansgar: Ja ich hab seit kurzem auf 4.0.3 geupdatet und teste auch am Handy. Liegt es an dieser Exception oder wie?

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

24.04.2012, 17:42:53 via Website

Ich vermute ja.
Seit Android 4.0 ist es nicht mehr erlaubt im MainThread, also dort, wo das UI läuft, aufs Internet zuzugreifen. Die App wird dann vom System einfach mit dieser Exception abgeschossen.

Du müsstest jetzt einen AsyncTask verwenden oder einen Thread mit einem Handler für den Zugriff aus UserInterface, wenn alles geladen wurde.

Lg Ansgar

Antworten
Markus B.
  • Forum-Beiträge: 636

24.04.2012, 20:27:35 via Website

Hi,
nur der Vollständigkeit halber:
Die Exception wieder bei Honeycomb SDK or higher geschmissen.
Dessen war ich mir noch gar nicht so bewusst, danke für den Hinweis Ansgar ! Ich mein es macht ja auch eigentlich Sinn :)

@Tom
Schick mir bitte das ganze Projekt. Dann kann ich mir das Ganze mal im Verbund anschauen. Ich hoffe du hast dir bei dem Projekt mühe gegeben und das mich der Code somit nicht vom Stuhl haut :)

Gruß,
Markus

— geändert am 24.04.2012, 20:28:02

Antworten
Tom K
  • Forum-Beiträge: 26

24.04.2012, 22:41:35 via Website

Ah danke für die Infos... mich wundert es nämlich auch, dass ich seit dem Update nicht mehr in WLANs mit Proxy und Authentifizierung rein komme :/

@Markus
Ich schick dir das Projekt gleich morgen früh via Email. Ich hoff der Code ist nicht all zu schlimm :grin:
Mir fällt nämlich so schnell irgendwie nichts ein wie ich das mit der Exception bewältigen soll.

Antworten
Tom K
  • Forum-Beiträge: 26

26.04.2012, 11:55:13 via Website

Ich bräuchte halt nur noch deine Email.
Oder du kannst mir hier erklären wie man das Ganze mit einem Asynctask macht? :grin:

Antworten
Markus B.
  • Forum-Beiträge: 636

26.04.2012, 14:04:10 via Website

Hi,
hast du dir denn schon mal angeschaut wie der AsyncTask funktioniert ?
Dazu gibt es einfach eine Tonne an Beispielen. Du kannst es alternativ auch in einen Thread packen.

Gruß,
Markus

Antworten
Tom K
  • Forum-Beiträge: 26

26.04.2012, 21:22:04 via Website

Ich hab mir schon ein paar Beispiele dazu angeschaut.
Dann hab ich die eine Datentransfer Klasse so geändert:

1package com.lightmanagement.application;
2
3import java.net.*;
4import java.io.*;
5
6import android.os.AsyncTask;
7
8public class Datatransfer extends AsyncTask<String, Void, Void> {
9
10 @Override
11 protected Void doInBackground(String... kommandos) {
12
13 for (String kommando : kommandos) {
14
15 final String IPSERVER = "172.16.22.223";
16 final int SERVERPORT = 1500;
17 Socket s = null;
18
19 //String zusammenstellen (STX + kommando + ETX)
20 String kommandostr = (char)2 + kommando + (char)3;
21
22 try {
23 //Socket mit IP und Port
24 s = new Socket(IPSERVER, SERVERPORT);
25
26 //OutputStream von Socket
27 OutputStream out = s.getOutputStream();
28
29 //Kommandostring auf Output schreiben
30 PrintWriter output = new PrintWriter(out);
31 output.write(kommandostr);
32 output.flush();
33
34 s.close();
35 }
36
37 catch (UnknownHostException e) {
38 }
39
40 catch (IOException e) {
41 }
42 }
43 return null;
44 }
45}

Und in der Main ruf ich das Ganze dann so auf:
1Datatransfer AlleDimmen = new Datatransfer();
2 AlleDimmen.execute(new String[] { "R1W" + dimmwertalle + "!" });

Wenn ich das alles dann debugge ohne im WLAN meiner Schule zu sein kommen keine Fehler im LogCat und die App stürzt nicht ab. ^^
Also ich kann nicht wirklich nachschauen ob der String geschickt wurde... aber würde der Code so passen?

Gruß, Tom

— geändert am 26.04.2012, 21:23:37

Antworten
Tom K
  • Forum-Beiträge: 26

30.04.2012, 09:10:33 via Website

Funktioniert alles so.
Danke für die Hilfe :)

Antworten