Problem Eclipse Libraries

  • Antworten:2
Johannes B.
  • Forum-Beiträge: 2

04.12.2011, 13:22:18 via Website

Hallo,

ich hoffe ich poste hier im richtigen Bereich. Ich habe heute damit angefangen mit Eclipse und ADT Android Apps zu programmieren. Zum auslesen des Lagesensors habe ich folgenden Code benutzt:

1package example.hello;
2
3import android.app.Activity;
4import android.hardware.SensorListener;
5import android.hardware.SensorManager;
6import android.os.Bundle;
7import android.util.Log;
8import android.widget.TextView;
9
10@SuppressWarnings("deprecation")
11public class HelloAndroid extends Activity implements SensorListener {
12 private static final String TAG = "SensorDemo";
13 private SensorManager sensorManager;
14 private TextView outView;
15 private int sensor = SensorManager.SENSOR_ORIENTATION;
16
17 /** Called when the activity is first created. */
18 @Override
19 public void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.main);
22 outView = (TextView) findViewById(R.id.output);
23
24 // Real sensor manager
25 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
26 }
27
28 /** Register for the updates when Activity is in foreground */
29 @Override
30 protected void onResume() {
31 super.onResume();
32 Log.d(TAG, "onResume");
33 sensorManager.registerListener(this, sensor);
34 }
35
36 /** Stop the updates when Activity is paused */
37 @Override
38 protected void onPause() {
39 super.onPause();
40 Log.d(TAG, "onPause");
41 sensorManager.unregisterListener(this, sensor);
42 }
43
44 public void onAccuracyChanged(int sensor, int accuracy) {
45 Log.d(TAG, String.format("onAccuracyChanged sensor: %d accuraccy: %d",
46 sensor, accuracy));
47 }
48
49 public void onSensorChanged(int sensorReporting, float[] values) {
50 if (sensorReporting != sensor)
51 return;
52
53 float azimuth = Math.round(values[0]);
54 float pitch = Math.round(values[1]);
55 float roll = Math.round(values[2]);
56
57 String out = String.format("Azimuth: %.2f\n\nPitch:%.2f\nRoll:%2f", azimuth,
58 pitch, roll);
59 Log.d(TAG, out);
60 outView.setText(out);
61 }
62}

Das klappt auch wirklich gut.
Jetzt möchte ich noch die GPS Daten auslesen. Kann ich das Sensor-auslesen in eine Library packen oder in einen andere .java Datei auslagern und dann von meiner "Main" Methode darauf zugreifen?

Johannes

PS: Ich habe schon versucht eine neue Klasse zu machen und diesen Code hineinzukopieren. Danach habe ich den Code von den GUI Sachen befreit und eine public String Variable gemacht, in der die Werte gespeichert werden. Danach habe ich aus HelloWorld.java auf diese Klasse zugegriffen, leider ohne Erfolg. Das Programm ist immer abgestürzt.

— geändert am 04.12.2011, 14:13:56

Antworten
Gian U.
  • Forum-Beiträge: 117

04.12.2011, 15:00:01 via Website

Natürlich kannst du für das Auslesen eine eigene Klasse schreiben. Zeig doch mal deinen Versuch und die Fehlermeldungen, die in der LogCat ausgegeben wurden. Vielleicht kann dir dann geholfen werden :-)

Mnemono - Efficient learning!

Antworten
Johannes B.
  • Forum-Beiträge: 2

04.12.2011, 15:27:22 via Website

Habe es jetzt mit ein bisschen probieren doch noch hinbekommen. :D

HelloAndroid.java
1package example.hello;
2
3import android.app.Activity;
4import android.hardware.SensorManager;
5import android.os.Bundle;
6import android.view.View;
7import android.view.View.OnClickListener;
8import android.widget.TextView;
9import android.widget.Button;;
10
11public class HelloAndroid extends Activity {
12 private TextView outView;
13 private Button button;
14 private sensor sens;
15
16 /** Called when the activity is first created. */
17 @Override
18 public void onCreate(Bundle savedInstanceState) {
19 super.onCreate(savedInstanceState);
20 setContentView(R.layout.main);
21
22
23 sens = new sensor((SensorManager) getSystemService(SENSOR_SERVICE));
24
25 outView = (TextView) findViewById(R.id.output);
26 button = (Button) findViewById(R.id.button1);
27 button.setOnClickListener(new OnClickListener() {
28 public void onClick(View v) {
29 outView.setText(sens.out);
30 }
31 });
32 }
33}

sensor.java
1package example.hello;
2
3import android.hardware.SensorListener;
4import android.hardware.SensorManager;
5import android.util.Log;
6
7@SuppressWarnings("deprecation")
8public class sensor implements SensorListener {
9 private static final String TAG = "SensorDemo";
10 public String out;
11 private SensorManager sensorManager;
12 private int sensor = SensorManager.SENSOR_ORIENTATION;
13
14 public sensor(SensorManager sm){
15 sensorManager = sm;
16 sensorManager.registerListener(this, sensor);
17 }
18
19 public void onAccuracyChanged(int sensor, int accuracy) {
20 Log.d(TAG, String.format("onAccuracyChanged sensor: %d accuraccy: %d",
21 sensor, accuracy));
22 }
23
24 public void onSensorChanged(int sensorReporting, float[] values) {
25 if (sensorReporting != sensor)
26 return;
27
28 float azimuth = Math.round(values[0]);
29 float pitch = Math.round(values[1]);
30 float roll = Math.round(values[2]);
31
32 out = String.format("Azimuth: %.2f\n\nPitch:%.2f\nRoll:%.2f", azimuth,
33 pitch, roll);
34 Log.d(TAG, out);
35 }
36}

wie kann ich jetzt onSensorChanged an HelloAndroid weiterreichen, um das TextView automatisch upzudaten?

— geändert am 04.12.2011, 15:43:45

Antworten