2011-06-09 10 views
0

申し訳ありません。私はアンドロイドのプログラミングには新しく、私は何か間違ったことをしたと思いますが、何がわかりません。私は3つのチュートリアルを見て、私のコードはそれらのように見える。誰かが私が間違っていることを教えてもらえますか?ここに私のsrc(アンドロイド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); 
    } 

} 
+0

ログに何かが表示されていますか?それがうまくいかないことをあなたに納得させるものは何ですか? –

+0

logcatログでse.values [0]が表示されませんが、onResume(または)とPause(op)のログが表示されます – CyanPrime

+0

ジャイロスコープを使用する許可が必要な場合は、アプリケーションマニフェスト? – SRM

答えて

1
  1. あなたは、エミュレータや実​​際のデバイスでこれを実行していますか?
  2. 実際のデバイスで実行している場合は、ジャイロスコープがあることを確認してください。 lots of different sensor typesがあり、ジャイロスコープは1つのみです。それは非常によく他のものの一つかもしれません。

ジャイロスコープタイプの場合はログに書き込むのではなく、そのイベントが発生したときにse.sensorの名前を書き込んでみてください。そうすれば、イベントが発砲していることを少なくとも知ることができます。

+1

私はもっと研究しなければなりませんでした。私の携帯電話はジャイロスコープを持っていません。私は、加速度センサーで所望の効果を得ました。 – CyanPrime

関連する問題