Warum nicht meine Gyroscope -App in Android aus irgendwelchen Ereignissen abfeuern?
Frage
Okay, also bin ich neu im Programmieren für Android und ich denke, ich habe etwas falsch gemacht, aber ich weiß nicht was. Ich habe mir 3 verschiedene Tutorials angesehen und mein Code scheint wie ihre auszusehen. Kann mir jemand sagen, was ich falsch mache? Hier ist mein SRC (verändert aus einem Android -Nehe -Tutorial).
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);
}
}
Lösung
- Führen Sie dies im Emulator oder auf einem tatsächlichen Gerät aus?
- Wenn Sie es auf einem tatsächlichen Gerät ausführen, sind Sie sicher, dass es ein Gyroskop hat? Es gibt Viele verschiedene Sensortypen Und das Gyroskop ist nur eines von ihnen. Es könnte sehr gut einer der anderen sein.
Versuchen Sie, den Namen des Namens des Namens zu schreiben, anstatt nur in das Protokoll zu schreiben, wenn es sich um einen Gyroskoptyp handelt. se.sensor
Wenn dieses Ereignis feuert. Auf diese Weise werden Sie zumindest wissen, dass das Ereignis schießt.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow