Beiträge von Pommes9485

    Hallo,


    ich habe mich bisher noch nie ausgiebig mit dem Styling auseinandergesezt, nun jedoch habe ich das Problem, dass alle Schrift in meinem Projekt Standartmäßig weiss ist und ich nicht weiß, warum.


    Meine Styles.xml beinhaltet nur das AppTheme, welches als parent "android:Theme.Holo.Light.DarkActionBar" eingetragen hat.


    Früher musste ich da nichts dran ändern, woran kann es liegen?

    Ich brauche deswegen einen Handler, weil schon alleine die Bluetooth Klassen in einen eigenen Thread die Daten empfängt und die dann per Handler alle x Datenstränge weitergibt. Das habe ich direkt so von Google übernommen (also dem offizielen Beispiel).


    Etwas anderes:
    Kann es sein, dass der AlarmManager immer nur eine Instants vom Service starten kann? Manchmal wird der Service nämlich nicht zu dem Zeitpunkt gestartet, zu dem er sollte und ich vermute, dass der Service durch den Thread nicht beendet wird und dann erst nach einer gewissen Zeit gestoppt wird. Dann holt der AlarmManager den Start nach. Kann das sein?

    Hallo,


    ich habe einen Thread in einem Service, welche Unabhängig laufen soll, da er doch einige aufwendigere Arbeiten durchführt.
    Damit mein Konstrukt der Handler das ganze ohne weiteres mitmacht habe ich jetzt noch am Anfang der Run Methode und am Ende folgendes ausgeführt:

    Java
    Looper.prepare();


    Java
    Looper.loop();


    Damit funktioniert jetzt alles, allerdings beendet sich der Thread nicht, wenn alles fertig ist. Er weiß ja auch wahrscheinlich nicht, wann das der Fall ist, wie geht ihr da vor?


    Ein

    Java
    Looper.getMainLooper().quitSafely();


    hilft leider nicht.


    Okay, ich habe noch einmal ein etwas über den Looper gelesen und verstehe jetzt, wie Sinnfrei es ist, nach Looper.loop(); die quit-Methode auszuführen.
    Ich probiere noch ein paar Dinge aus.


    EDIT:
    Ich dachte ich könnte den Looper einfach in der letzten Aufgabe im letzten Schritt beenden, indem ich ihn an das Objekt übergebe und zum Schluss dann

    Java
    loop.quit()

    ausführen. Allerdings beschwert sich Android dann, dass ich den MainThread nicht quiten darf..?

    Sowas hatte ich mir auch schon gedacht. Ich hatte das ursprünglich implementiert, damit nicht mehrere Threads gleichzeitig Lesen und schreiben. Ich sehe nun den Fehler der Denkweise :D


    Ich habe eine statische Methode, welche entweder das Objekt des SQLiteHelper zurückgibt wenn es schon erstellt ist, oder es sonst neu erstellt und dann zurückgibt.


    Wie würdet ihr da jetzt vorgehen?


    Eine Array in dem SQLiteHelper, welche die Daten Stränge einzeln zwischenspeichert und dann einfach nur abarbeitet?

    Hallo,


    ich habe folgendes Szenario:
    Ich empfange per Bluetooth Daten, verarbeite diese und speichere sie schließlich.
    Empfangen tue ich in einem extra Thread, dieser schickt die Daten dann per Handler an eine Klasse zum verarbeiten, welche dann die Daten zum speichern weitergibt, mit einer Singleton Implementierung des SQLiteHelper.


    Dabei packe ich die Daten immer in 50er Päckchen. Auf manchen Geräten stelle ich nun fest, dass die letzten 10 Werte aus einem Packet fehlen. Anschließend habe ich die Päckchengröße auf 100 erhöht. Das Ergebniss war, dass die letzten 60 Werte gefehlt haben. Daher würde ich sagen, dass das schreiben des Pakets in den Speicher irgendwann unterbrochen wird, nämlich dann, wenn das nächste Paket angekommen und verpackt ist.


    Liege ich da vollkommen falsch, weil der Handler für jeden Aufruf von handleMessage einen eigenen Thread startet, oder ist das möglich?


    Ich teste es heute Nacht mal mit einer niedrigeren Datenrate und hoffe, dort zu einem fehlerfreien Ergebnis zu kommen.

    Danach besteht das Problem leider immer noch...
    hier die volle Exception:



    ...und meine OnDestroy

    Dann habe ich noch eine blöde Frage:
    Wie setze ich denn die Views auf null?
    Also jeder Graph ist in der Klasse XYPlot gespeichert, welche von View erbt, aber auch direkt die Daten zum Anzeigen speichert. Hole ich mir dann einfach den XYPlot mit findViewByID und setze ihn dann auf null? Das erscheint mir irgendwie seltsam, weil ich doch dann im Prinzip nur die "Kopie" des Views auf null setze, oder? Oder läuft das über die Referenz?


    Danke schonmal, ich bin sehr optimistisch, dass es das ist ;)

    Genau, immer erst nach dem 5. oder 6. mal, davor gehe ich halt rein (starte die Activity wie oben beschrieben), erstelle in der OnCreate die Graphen und co., gehe mit "Zurück" zurück in die Liste und dann wieder von vorne.

    Die onCreate Methode bezog sich auf die 2. Activity ;)
    Dann weiß ich ehrlich gesagt nicht, woran es liegen kann. Ich benutze in der 2. Activity 6 AndroidPlot graphen. Diese haben jeweils eine Werte Array von 240 Werten zu Grunde liegen. Bei einem Aufruf oder auf bei 5 macht das keinen Unterschied nur dann wird es allmählich langsamer, um schließlich am Ende mit einer OoM Exception nur noch leere Felder anzuzeigen.

    Ich habe eine MainActivity, welche eine Liste enthält. Wenn auf einen dieser Einträge geklickt wird, starte ich eine neuen Activity, welche dann die "Details" anzeigt.
    Diese 2. Activity verursacht auch die Probleme.

    Guten Tag,


    ich habe ein wahrscheinlich relativ einfaches Problem:
    Ich initialisiere meine Activity in der onCreate Methode.
    Bisher war ich davon ausgegangen, wenn ich dann mit dem Pfeil zurück gehe und erneut die Activity starte, sie einfach resumed und onCreate wirklich nur einmal ausgeführt wird, allerdings ist dies nicht der Fall, stattdessen wird sie jedesmal wieder gestartet. Starten tue ich sie so:

    Java
    Intent i = new Intent(getApplicationContext(),
    								BatteryScreen.class);
    						i = i.putExtra("name", v.name);
    						i = i.putExtra("id", v.id);
    						i = i.putExtra("multi", m);
    						startActivity(i);


    Ist das verwerflich?
    Oder muss ich irgendwas bestimmtes in die onDestroy Methode reinschreiben, damit sie alles auf 0 (null) setzt?


    Das darausfolgende Problem ist eben, dass nach 6-7 zurück und starten, ich eine OutOfMemory Exception bekomme.

    Hallo,


    ja, wieder Bluetooth :-/


    Diesmal bin ich aber deutlich weiter.


    Das Bluetooth Chat Example habe ich erforlgreich implementiert und es funktioniert alles fast perfekt.


    Allerdings bekomme ich selten, aber doch so oft, dass es stört den Fehler:
    Service Discovery Failed.


    Da ich eigentlich, vor allem beim verbinden, bei dem Original Code geblieben bin, verwundert mich dies ein wenig.


    Ich habe die UUID geändert zu:
    ("00001101-0000-1000-8000-00805f9b34fb")


    Das soll für SPP Verbindungen sein und der HC-06 wird genau dazu verwendet.
    Hat hier einer eine Idee, woher der Fehler noch kommen könnte?

    Hallo,


    nachdem ich nur Probleme mit meinem eigenen Skript zum Abrufen von Daten über Bluetooth hatte, habe ich das Bluetooth Chat Example von Google übernommen bzw. leicht modifiziert.


    Um den eingehenden String zu einem großen zu machen füge ich einfach alles eingehende zusammen, bis das Stop Zeichen kommt. Das klappt auch soweit, nur das sich das eingehende irgendwie vermischt. Eigentlich sollte es so aussehen:
    Zeile 1 (Infos)
    Zeile 2 - n (jeweils 6 Werte durch ";" getrennt)
    Stop


    Allerdings bekomme ich abundzu vermischte Zeilen, wenn ich das Example kompiliere und installiere habe ich das gleiche Ergebnis. Woran kann das liegen?


    Hier die wichtigen Zeilen:
    BluetoothChatService


    Handler, welche die Nachricht Empfängt:


    Kann sich das einer erklären?

    Das mit der UUID verstehe ich auch noch nicht so ganz, aber so wie ich es verstanden habe, gibt es ja für verschiedene Protokolle verschiedene UUIDs. Daran sollte es also nicht liegen.


    Das mit dem Discovery abschalten tue ich mittlerweile sogar, ändert aber leider nichts.

    Leider muss ich jetzt wieder feststellen, dass ich die Fehlermeldung:
    "
    03-12 12:00:45.831: W/System.err(22612): java.io.IOException: Service discovery failed
    03-12 12:00:45.831: W/System.err(22612): at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:462)
    03-12 12:00:45.831: W/System.err(22612): at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:240)
    03-12 12:00:45.831: W/System.err(22612): at com.duw_energie.bat.DownloadData$Download.doInBackground(DownloadData.java:153)
    03-12 12:00:45.831: W/System.err(22612): at com.duw_energie.bat.DownloadData$Download.doInBackground(DownloadData.java:1)
    03-12 12:00:45.831: W/System.err(22612): at android.os.AsyncTask$2.call(AsyncTask.java:287)
    03-12 12:00:45.831: W/System.err(22612): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    03-12 12:00:45.831: W/System.err(22612): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    03-12 12:00:45.836: W/System.err(22612): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
    03-12 12:00:45.836: W/System.err(22612): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
    03-12 12:00:45.836: W/System.err(22612): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
    03-12 12:00:45.836: W/System.err(22612): at java.lang.Thread.run(Thread.java:856)


    "
    immer bekomme. Voran gehen dabei die folgenden Infos:
    "03-12 12:02:54.746: D/BluetoothUtils(22612): isSocketAllowedBySecurityPolicy start : device null
    "


    Kannst du mir dabei helfen? Ich habe jetzt den folgenden Code:


    Java
    UUID id1 = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    sock = dev. createRfcommSocketToServiceRecord(id1);
    sock.connect();


    Danach bricht es ab.
    Es kann sein, dass sich das Bluetooth Modul im Microchip geändert hat, dass muss ich noch recherchieren.

    Ich muss ganz ehrlich sagen, jetzt bin ich gerade total fertig.
    Ich habe über die letze Woche immer und immer wieder verschiedene Methoden ausprobiert, bei welchen ich IMMER einen Fehler bekomme habe, mal gab es eine Bad File Description, dann eine IOException read failed, socket might time out oder sonstwas.
    Mit der Methode habe ich gerade 4 Durchläufe gemacht und es hat bei allen funktioniert.
    Ich teste es mal weiter.

    Okay, ich probiere es auf das wichtigste zu verkürzen:

    Java
    BluetoothAdapter blue = BluetoothAdapter.getDefaultAdapter();for(int index =0; index<adressandid.length;index++){ bluetoothdevice="" dev="blue.getRemoteDevice(adressAndID[index][0]);" try="" {="" uuid="" id1="UUID" .fromstring("00001101-0000-1000-8000-00805f9b34fb");="" if(sock!="null)" sock.close();="" sock="dev.createInsecureRfcommSocketToServiceRecord(id1);" method="" m="dev.getClass().getMethod("createRfcommSocket"," new="" class[]="" {int.class});
    								sock = (BluetoothSocket) m.invoke(dev, 1);			
    								try{				sock.connect();				}catch(IOException i)				{					try{					sock.connect();				}catch(IOException ea)				{					sock.connect();				}					}								Log.i("Status:", "nach connect");				in = new Scanner(sock.getInputStream());				OutputStream out = sock.getOutputStream();						// Verbunden				String start = "123;";				out.write(start.getBytes());					String tmpOut;
    				String lastOut = "";				future = executor.submit(readTask);								tmpOut = future.get(5000, TimeUnit.MILLISECONDS);				// erste Zeile								//Hier passiert einiges, aber nur Datenverarbeitung				//Socket schließen				in.close();				out.close();				sock.close();



    Hier nochmal mit Formatierung.