Hallo,
ich versuche gerade Daten von einem Bluetooth Gerät zu lesen und diese dann durch ein Textview anzeigen zu lassen, allerdings kommt dabei immer der im Titel gennante Fehler.
Bei der Hardware handelt es sich um eine Plattform, die einen 6 Achsen Beschleunigungssensor enthält, welcher direkt die Schritte erkennen kann.
Mein Problem ist nun,in der Funtkion ready() wird die korrekte Anzahl der Schritte im Log angezeigt, sobald die .setText ausgeführt wird erscheint folgender Fehler:
08-24 19:41:46.133 11192-11613/com.example.kai.schrittzaehler I/MainActivity: Steps= 14
08-24 19:41:46.966 11192-11243/com.example.kai.schrittzaehler E/MetaWear: Background task reported an error
java.util.concurrent.ExecutionException: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at java.util.concurrent.FutureTask.report(FutureTask.java:94)
at java.util.concurrent.FutureTask.get(FutureTask.java:164)
at com.mbientlab.metawear.MetaWearBleService$3.run(MetaWearBleService.java:1263)
at java.util.Timer$TimerImpl.run(Timer.java:284)
Caused by: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6566)
at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:946)
at android.view.ViewGroup.invalidateChild(ViewGroup.java:5081)
at android.view.View.invalidateInternal(View.java:12719)
at android.view.View.invalidate(View.java:12683)
at android.view.View.invalidate(View.java:12667)
at android.widget.TextView.checkForRelayout(TextView.java:7170)
at android.widget.TextView.setText(TextView.java:4347)
at android.widget.TextView.setText(TextView.java:4204)
at android.widget.TextView.setText(TextView.java:4179)
at com.example.kai.schrittzaehler.MainActivity$5$1.process(MainActivity.java:306)
at com.mbientlab.metawear.impl.DefaultMetaWearBoard$57.run(DefaultMetaWearBoard.java:3915)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Alles anzeigen
Eigentlich müsste doch so mein Text im Textview angezeigt werden oder?
Schalte ich den toggle switch um, werden wir die Rohdaten vom Beschleunigungssensor und vom Gyroskop im Tectview angezeigt, bei den Schritten funktioniert es nicht obwohl ich soch alles genauso gemacht habe oder?
Ich habe das ganze vorher mit einen App Template vom Hersteller der Plattform versucht (Link) aber dort nicht in der MainActivity Klasse gearbeitet, sondern in "public class DeviceSetupActivityFragment extends Fragment implements ServiceConnection {", das hat auch soweit funktioniert, bis ich das Textview eingebaut habe, ab da kam immer dieser Fehler, ich hatte gehofft, dass er im neuen Projekt, in dem ich nur in der MainActivity arbeite weg geht. Ich konnte herausfinden, dass es im App Template daran lag, dass ich nicht in einer Unterklasse von Activity war und da das findbyViewId nicht nutzbar ist??
Das ist mein erstes Java Projekt, ich habe vorher nur mit C oder Matlab gearbeitet und ich bin so langsam echt am verzweifeln, warum läuft es mit dem Textview der Beschleunigungswerte aber nicht mit dem der gezählten Schritte?
Die MainActivity ist das Text Datei im Anhang
Der XML Code:
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.example.kai.schrittzaehler.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Connect"
android:id="@+id/connect"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Disonnect"
android:id="@+id/disconnect"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LED on"
android:id="@+id/led_on"
android:layout_below="@+id/connect"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="LED off"
android:id="@+id/led_off"
android:layout_marginTop="20dp"
android:layout_centerHorizontal="true" />
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Toggle Both"
android:id="@+id/accel_switch"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Accelerometer: 0"
android:id="@+id/textAccel"
android:layout_below="@+id/accel_switch"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Gyroscope: 0"
android:id="@+id/textGyro"
android:layout_below="@+id/textAccel"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sync"
android:id="@+id/acc_start"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="reset"
android:id="@+id/acc_stop"
android:layout_below="@+id/acc_start"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Steps: 0"
android:id="@+id/stepView"
android:layout_below="@+id/acc_stop"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
</android.support.design.widget.CoordinatorLayout>
Alles anzeigen