0

好吧,所以我是 android 编程的新手,我认为我做错了什么,但我不知道是什么。我查看了 3 个不同的教程,我的代码看起来像他们的。谁能告诉我我做错了什么?这是我的 src(从 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);
    }

}
4

1 回答 1

1
  1. 您是在模拟器中还是在实际设备上运行它?
  2. 如果您在实际设备上运行它,您确定它有陀螺仪吗?有许多不同的传感器类型,陀螺仪只是其中之一。它很可能是其他人之一。

如果它是陀螺仪类型,则不要只写入日志,而是尝试写入该se.sensor事件触发时的名称。这样你至少会知道事件正在触发。

于 2011-06-09T23:09:24.187 回答