H
hatschy
Neues Mitglied
Hi!
Ich versuche neben dem Beschleunigungssensor und Kompass auch Wifiscan aufzuzeichnenden. Der Sinn ist die Daten von einem Testlauf festzuhalten bei dem man sich durch das Gebäude bewegt. Grundsätzlich habe ich alles schon mal Implementiert.
Jetzt möchte ich den Wifi scan als thread ausführen mit der nebenbedingung dass ich zb. max 1 Sekunde auf den Scan warte und das nehme was ich habe. ( Als nicht den vollständigen Scan abwarte - habe ich schon mit dem Broadcastreceiver gemacht - das dauert aber bis zu 4,5sekunden)
Okay. Leider Scheiter ich jetzt schon daran ein Thread zu starten und
1 Sekunde zu warten. Bei Thread.sleep() funktioniert was nicht.
Mit Thread hab ich noch nicht viel gemacht. Hab ich da einen Denkfehler?
Für Tipps wäre ich sehr dankbar. Murx schon den ganzen Tag drum rum.
Darum ist es auch a bissal Chaotisch
Das ist der Code für die Runnable Klasse:
In der Activity habe ich einen Button lisen auf START und STOP.
Initialisert wird so:
Button Start
Der ursprüngliche Beitrag von 16:15 Uhr wurde um 16:21 Uhr ergänzt:
Das ist noch aus dem LogCat
Ich versuche neben dem Beschleunigungssensor und Kompass auch Wifiscan aufzuzeichnenden. Der Sinn ist die Daten von einem Testlauf festzuhalten bei dem man sich durch das Gebäude bewegt. Grundsätzlich habe ich alles schon mal Implementiert.
Jetzt möchte ich den Wifi scan als thread ausführen mit der nebenbedingung dass ich zb. max 1 Sekunde auf den Scan warte und das nehme was ich habe. ( Als nicht den vollständigen Scan abwarte - habe ich schon mit dem Broadcastreceiver gemacht - das dauert aber bis zu 4,5sekunden)
Okay. Leider Scheiter ich jetzt schon daran ein Thread zu starten und
1 Sekunde zu warten. Bei Thread.sleep() funktioniert was nicht.
Mit Thread hab ich noch nicht viel gemacht. Hab ich da einen Denkfehler?
Für Tipps wäre ich sehr dankbar. Murx schon den ganzen Tag drum rum.
Darum ist es auch a bissal Chaotisch
Das ist der Code für die Runnable Klasse:
Code:
public class MyWifiScanner implements Runnable
{
public MyWifiScanner(WifiManager WM, TextView c)
{
mainWifi = WM; // Den WifiManger will ich dann übergeben
ConnectTViewconsle(c); // Ist zum Testen
}
public void ConnectTViewconsle(TextView c)
{
console=c;
console.setText("Thread startet");
}
@Override
console.setText("Thread run startet");
// Hier Starte ich dann den Wifi scan
try {
Thread.sleep(1000);
// Hier will ich dann denn Scan auslesen
// nebenbedinung könnte noch werden dass ich auch schon früher stoppe
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
console.setText("habe gewarete");
}
}
Initialisert wird so:
Code:
neuerthread = new MyWifiScanner(mainWifi, (TextView)findViewById(R.id.TVconsoleWifitest));
meinThread = new Thread(neuerthread);
Code:
bstart=(Button) findViewById(R.id.bstart);
bstart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(!meinThread.isAlive()) meinThread.start();
}
});
Der ursprüngliche Beitrag von 16:15 Uhr wurde um 16:21 Uhr ergänzt:
Das ist noch aus dem LogCat
03-12 11:20:04.060: E/AndroidRuntime(842): FATAL EXCEPTION: Thread-53
03-12 11:20:04.060: E/AndroidRuntime(842): Process: com.example.tunavi, PID: 842
03-12 11:20:04.060: E/AndroidRuntime(842): android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
03-12 11:20:04.060: E/AndroidRuntime(842): at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6094)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:857)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.view.ViewGroup.invalidateChild(ViewGroup.java:4320)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.view.View.invalidate(View.java:10935)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.view.View.invalidate(View.java:10890)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.widget.TextView.checkForRelayout(TextView.java:6587)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.widget.TextView.setText(TextView.java:3813)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.widget.TextView.setText(TextView.java:3671)
03-12 11:20:04.060: E/AndroidRuntime(842): at android.widget.TextView.setText(TextView.java:3646)
03-12 11:20:04.060: E/AndroidRuntime(842): at com.example.tunavi.MyWifiScanner.run(MyWifiScanner.java:42)
03-12 11:20:04.060: E/AndroidRuntime(842): at java.lang.Thread.run(Thread.java:841)
03-12 11:20:08.560: I/Process(842): Sending signal. PID: 842 SIG: 9