AndroidのGyroscopeアプリがイベントを発射しないのはなぜですか?
質問
さて、私は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つにすぎません。それは他の1つである可能性が非常に高いです。
ジャイロスコープタイプの場合にログに書き込む代わりに、の名前を書いてみてください se.sensor
そのイベントが発砲するとき。そうすれば、少なくともイベントが解雇されていることがわかります。
所属していません StackOverflow