初めてアンドロイドスタジオでJavaを使ってアプリを作っています
スマホの傾きを加速度センサを使って調べたいのですが、なかなかうまくいきません
Main Activity
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.widget.TextView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity
implements SensorEventListener {
private SensorManager sensorManager; private TextView textView, textInfo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get an instance of the SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); textInfo = findViewById(R.id.text_info); // Get an instance of the TextView textView = findViewById(R.id.text_view); } @Override protected void onResume() { super.onResume(); // Listenerの登録 Sensor accel = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_FASTEST); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_GAME); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_UI); } // 解除するコードも入れる! @Override protected void onPause() { super.onPause(); // Listenerを解除 sensorManager.unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { float sensorX, sensorY, sensorZ; if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { sensorX = event.values[0]; sensorY = event.values[1]; sensorZ = event.values[2]; String strTmp = "加速度センサー\n" + " X: " + sensorX + "\n" + " Y: " + sensorY + "\n" + " Z: " + sensorZ; textView.setText(strTmp); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView android:id="@+id/text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="62dp" android:layout_marginLeft="62dp" android:layout_marginTop="135dp" android:layout_marginEnd="291dp" android:layout_marginRight="291dp" android:layout_marginBottom="577dp" android:text="TextView" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.64" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/text_info" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="77dp" android:layout_marginLeft="77dp" android:layout_marginTop="135dp" android:layout_marginEnd="157dp" android:layout_marginRight="157dp" android:layout_marginBottom="577dp" android:text="TextView" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/textView" app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
でやっていますが角度が表示されません
間違っているとこも多くあると思いますが、アドバイスをいただければ幸いです
あなたの回答
tips
プレビュー