2016-11-01 10 views
1

これは、ジャイロスコープからX軸、Y軸、Z軸の値を取得して3つのテキストボックスに表示する単純なコードですが、出力を生成しません。テキストボックスは変更されません。私は何が欠けていますか?ジャイロスコープのコードで値が表示されない

public class Orientation extends AppCompatActivity implements SensorEventListener { 
TextView textX, textY, textZ; 
SensorManager sensorManager; 
Sensor sensor; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_orientation); 

    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 


    textX = (TextView) findViewById(R.id.textX); 
    textY = (TextView) findViewById(R.id.textY); 
    textZ = (TextView) findViewById(R.id.textZ); 
} 

public void onResume() { 
    super.onResume(); 
    sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL); 
} 

public void onStop() { 
    super.onStop(); 
    sensorManager.unregisterListener(this); 
} 


public void onAccuracyChanged(Sensor sensor, int acc) { 
} 

public void onSensorChanged(SensorEvent event) { 
    float x = event.values[0]; 
    float y = event.values[1]; 
    float z = event.values[2]; 


    textX.setText("X : " + (int) x + " rad/s"); 
    textY.setText("Y : " + (int) y + " rad/s"); 
    textZ.setText("Z : " + (int) z + " rad/s"); 
} 

}

EDIT: センサーの存在を最初に確認する必要があります。

+1

かなり高速な回転である1 rad/sより速く動かない限り、常に0 rad/sと表示されます。おそらくuse(int)(x * 100)/ 100dの代わりに使用しますか? –

+0

それは事です。それは何も表示されません。テキストボックスはそのままです。 – DivisionSi

+0

したがって、テキストボックスは空のままですか?あなたはLogCat経由で値を与えようとしましたか? –

答えて

1

解決策はかなりかすかです。携帯電話はジャイロスコープを持っていませんでした。

関連する問題