pourquoi l'habitude mon application Gyroscope dans le feu androïde hors des événements?

StackOverflow https://stackoverflow.com/questions/6300277

Question

bien, donc je suis nouveau à la programmation pour Android, et je pense que je l'ai fait quelque chose de mal, mais je ne sais pas quoi. Je l'ai regardé 3 tutoriels différents et mon code semble ressembler à la leur. Quelqu'un peut-il me dire ce que je fais mal? voici mon src (modifié à partir d'un tutoriel Android nehe).

package cypri.games;


import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.util.Log;

/**
 * The initial Android Activity, setting and initiating
 * the OpenGL ES Renderer Class @see Lesson02.java
 * 
 * @author Savas Ziplies (nea/INsanityDesign)
 */
public class DGearActivity extends Activity {

    /** The OpenGL View */
    private GLSurfaceView glSurface;
    DGear dGear = new DGear();

    private static final String TAG = "DEBUG";

    SensorManager sensorManager;
    private final SensorEventListener sensorListener = new SensorEventListener(){
        public void onSensorChanged(SensorEvent se) {
             if (se.sensor.getType() == Sensor.TYPE_GYROSCOPE) {
                 dGear.playerX = se.values[0];
                 Log.v(TAG, "se.values[0] =" + se.values[0]);
             }
        }

        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

    /**
     * Initiate the OpenGL View and set our own
     * Renderer (@see Lesson02.java)
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
        sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME);

        //Create an Instance with this Activity
        glSurface = new GLSurfaceView(this);
        //Set our own Renderer
        glSurface.setRenderer(dGear);
        //Set the GLSurface as View to this Activity
        setContentView(glSurface);
    }

    /**
     * Remember to resume the glSurface
     */
    @Override
    protected void onResume() {
        Log.v(TAG, "or");
        super.onResume();
        glSurface.onResume();
        sensorManager.registerListener(sensorListener, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_GAME);
    }

    /**
     * Also pause the glSurface
     */
    @Override
    protected void onPause() {
        super.onPause();
        glSurface.onPause();
        Log.v(TAG, "op");
        sensorManager.unregisterListener(sensorListener);
    }

}
Était-ce utile?

La solution

  1. Êtes-vous en cours d'exécution ce dans l'émulateur ou sur un périphérique réel?
  2. Si vous utilisez sur un périphérique réel vous êtes sûr qu'il a un gyroscope? Il y a des beaucoup de différents types de capteurs de et le gyroscope est seulement l'un d'entre eux . Il pourrait très bien être l'un des autres.

Au lieu de seulement écrit au journal si c'est un type gyroscopique, essayez d'écrire le nom de la se.sensor lorsque que déclenche l'événement. De cette façon, vous savez au moins l'événement est mise à feu.

scroll top