好吧,所以我是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);
    }

}
有帮助吗?

解决方案

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

如果是陀螺仪类型,而不是仅写入日志,请尝试写下 se.sensor 当该事件开火时。这样一来,您至少知道该活动正在开火。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top