perché wont mia app giroscopio a fuoco Android off eventi?
Domanda
va bene così Sono nuovo di programmazione per Android, e penso di aver fatto qualcosa di sbagliato, ma io non so cosa. Ho guardato 3 diversi tutorial e il mio codice sembra guardare come la loro. Qualcuno può dirmi che cosa sto facendo male? ecco la mia src (alterata da un androide 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);
}
}
Soluzione
- sono in esecuzione questo nell'emulatore o su un dispositivo reale?
- Se si sta eseguendo su un dispositivo reale sei sicuro che ha un giroscopio? Ci sono un sacco di diversi tipi di sensori e il giroscopio è solo uno di loro . Potrebbe benissimo essere uno degli altri.
Al posto di un solo iscritto al registro se si tratta di un tipo di giroscopio, provare a scrivere il nome del se.sensor
quando questo evento viene. In questo modo sarete almeno sapere che l'evento è di cottura.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow