1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

SensorEventListener: Aufruf in anderer Klasse

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von funk, 20.07.2010.

  1. funk, 20.07.2010 #1
    funk

    funk Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    53
    Erhaltene Danke:
    1
    Registriert seit:
    21.12.2009
    Phone:
    Motorola Milestone
    Hallo,

    wie ich hier im Forum schon beschrieben habe bastel ich an einer App um Dead Reckoning mit dem Milestone durchzuführen.

    Ich habe jetzt versucht alle Accelerometer-bezogenen Funktionen aus meiner eigentlichen Activity in eine andere Klasse auszulagern. Wenn ich diese dann in meiner Activity instantiiere, hängt sich meine App immer an der Stelle auf, an der sie den SensorManager aufrufen und den SensorEventListener registrieren soll...

    Sieht einer von euch den Fehler und kann mir helfen? Ich weiß langsam keinen Rat mehr...

    Gruß,
    Frank

    Hier die eigentliche Sensors-Klasse
    Code:
    package de.zeh.android.Sensors;
    
    import ...
    
    
    public class Sensors extends Activity{
        
        // Deklaration der Variablen
        ...
        
        // Deklaration der Klassen zum Triggern der Konstruktoren
        Accelerometer mAccelerometer;
    
     
        // Ende Deklaration
        //----------------------------------------------------------------------
        
        
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            Log.d("Log S 1","onCreate gestartet");
            
            mAccelerometer = new Accelerometer(this);
            Log.d("Log S 2","mAccelerometer instantiiert");
    
            // Layout Definition
            setContentView(R.layout.main);
            ...
        }
    Hier die Ausgelagerte Accelerometer-Klasse
    Code:
    package de.zeh.android.Sensors;
    
    import java.util.List;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.hardware.Sensor;
    import android.hardware.SensorEvent;
    import android.hardware.SensorEventListener;
    import android.hardware.SensorManager;
    import android.util.Log;
    
    public class Accelerometer extends Sensors implements SensorEventListener{
        
        // Deklaration der Sensor-Werkzeuge und -Variablen
        private SensorManager mSensorManager;
        private SensorEventListener sensorlistener;
        float[] magnetic_values;
        float[] accelerometer_values;
        float[] actual_orientation;
        boolean sensorReady = false;
        
        
        public Accelerometer(Activity parent) {
            Log.d("Log A 1","Accelerometer aufgerufen");
            this.mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
    // hier hängt sich die App auf!!
            this.mSensorManager.registerListener(sensorlistener, mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION), SensorManager.SENSOR_DELAY_UI);
            this.mSensorManager.registerListener(sensorlistener, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);
            Log.d("Log A 2","Listener registriert");
            
        }
     

Diese Seite empfehlen