2016-09-04 5 views
0

私は昨日アンドロイドとjavaで始まりました。問題があります。私はいくつかのTextViewsにセンサーの値を出力しようとしています。テキストは更新されますが、定義時に値が設定されます。 onSensorChangedはこれらの値を正しく更新する必要がありますか?センサーの変更がonSensorChangedを誘発しない

import [...] 

public class MainActivity extends Activity implements SensorEventListener { 

    public float[] gravity = {0,0,0}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final TextView gravxTxtView = (TextView) findViewById(R.id.gravxTxtView); 
     final TextView gravyTxtView = (TextView) findViewById(R.id.gravyTxtView); 
     final TextView gravzTxtview = (TextView) findViewById(R.id.gravzTxtView); 

     final Handler handler = new Handler(); 
     handler.postDelayed(
       new Runnable() { 
      @Override 
      public void run() { 
       gravxTxtView.setText("Gravity x: " + Float.toString((gravity[0]))); 
       gravyTxtView.setText("Gravity y: " + Float.toString((gravity[1]))); 
       gravzTxtview.setText("Gravity z: " + Float.toString((gravity[2]))); 
      } 
     }, 500); 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 
    } 

    @Override 
    public void onSensorChanged(SensorEvent event) { 
     if(event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ 
      gravity[0] = event.values[0]; 
      gravity[1] = event.values[1]; 
      gravity[2] = event.values[2]; 
     } 
    } 
} 

答えて

1

あなたが 1が欠落しているいくつかの深刻な段階

SensorManager sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE); 

2.センサー

Sensor accel=sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

3.レジスタセンサのインスタンスを取得するセンサーマネージャーのインスタンスを取得しますがありますセンサーイベントリスナーを実装しているリスタークラスにMainActivityで実装していれば特定の変更は、それがonSensorChangedメソッドを呼び出しますどうなるときこの

sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL); 

は今、私はその作業やクイック返信のためではない

+0

感謝を教えてください!私は文書の登録手続きを踏んだことはありません。それは今働いています(ish)。私は正しい値を取得しますが、xミリ秒ごとに更新しません。それはonSensorChanged関数とは関係ないと思っていますが、私が使っているループメソッドです。 –

+0

ステップ3をチェックすると、ここでは3番目のパラメータは、いくつかのデフォルトの周波数が利用可能な周波数を変更することができます。私は最後の部分を取得しませんでしたが、ループを使用しないでください、アンドロイドセンサーイベントは、パブリッシャーの加入者のパターンに従います、あなたはこれについて読むことがあります。 –

+1

私の悪いことは、テキストが最初の時間の後に更新されないということです。センサーの更新機能でsetText()を動かすだけで問題を解決しました。本当にありがとう!これは多くを開きます。 –

関連する問題