
###前提・実現したいこと
Androidのアプリをつくっていて、加速度とジャイロセンサの値を時刻とともにCSVで実機に保存したいのですが、うまくいかず困っています。また、START STOP のボタンで加速度とジャイロセンサの記録を開始・終了させれるようにしたいのですが、そこもうまくいっていません。どなたか教えていただけると嬉しいです。
###発生している問題・エラーメッセージ
エラーはないんですけど、CSVで保存するときに時刻も一緒に保存したい。
start stop ボタンが表示されない。
###該当のソースコード
Javaなど
public class MainActivity extends AppCompatActivity implements Runnable, SensorEventListener { SensorManager mSensorManager; Sensor mLinearAcc; Sensor mGyro; TextView tv; Handler h; float kx, ky, kz; float gx, gy, gz; //センサーを使うための準備 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mLinearAcc = mSensorManager. getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); mGyro = mSensorManager. getDefaultSensor(Sensor.TYPE_GYROSCOPE); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); LinearLayout ll = new LinearLayout(this); setContentView(ll); tv = new TextView(this); ll.addView(tv); h = new Handler(); h.postDelayed(this, 800); Button button2 = (Button) findViewById(R.id.button2); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // ボタンクリックしたときの処理 } }); } //センサーで得る値が変わるたびに行う動作 @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_LINEAR_ACCELERATION) { kx = event.values[0]; ky = event.values[1]; kz = event.values[2]; Log.d("MainActivity", "x=" + String.valueOf(event.values[0]) + "y=" + String.valueOf(event.values[1]) + "z=" + String.valueOf(event.values[2])); System.out.println("xの加速度 : " + kx + "yの加速度 : " + ky + "zの加速度 : " + kz); try { //出力先を作成する FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory().getPath()+"/Kasokudo.csv", true); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); //内容を指定する pw.print(kx ); pw.print(","); pw.print(ky ); pw.print(","); pw.print(kz ); pw.println(); //ファイルに書き出す pw.close(); //終了メッセージを画面に出力する System.out.println("出力が完了しました。"); } catch (IOException ex) { //例外時処理 ex.printStackTrace(); } } else if (event.sensor.getType() == Sensor.TYPE_GYROSCOPE) { gx = event.values[0]; gy = event.values[1]; gz = event.values[2]; Log.d("MainActivity", "X=" + String.valueOf(event.values[0]) + "Y=" + String.valueOf(event.values[1]) + "Z=" + String.valueOf(event.values[2])); System.out.println("Xのジャイロ :" + gx + "Yのジャイロ :" + gy + "Zのジャイロ :" + gz); try { //出力先を作成する FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory().getPath()+"/Gyro.csv", true); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); //内容を指定する pw.print(gx ); pw.print(","); pw.print(gy ); pw.print(","); pw.print(gz ); pw.println(); //ファイルに書き出す pw.close(); //終了メッセージを画面に出力する System.out.println("出力が完了しました。"); } catch (IOException ex) { //例外時処理 ex.printStackTrace(); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } //データの更新時間間隔の設定 @Override protected void onResume() { super.onResume(); mSensorManager.registerListener(this, mLinearAcc, SensorManager.SENSOR_DELAY_NORMAL); mSensorManager.registerListener(this, mGyro, SensorManager.SENSOR_DELAY_NORMAL); } //実機での表示 @Override public void run() { tv.setText("Xの加速度 : " + kx*100 + "\n" + "Yの加速度 : " + ky*100 + "\n" + "Zの加速度 : " + kz*100 + "\n" + "Xのジャイロ :" + gx + "\n" + "Yのジャイロ :" + gy + "\n" + "Zのジャイロ :" + gz + "\n" ); h.postDelayed(this, 800); } } ```XML コード ```XML <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.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="com.example.user.kakunin.MainActivity"> LinearLayout ll = new LinearLayout(this); tv = new TextView(this); ll.addView(tv); <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="スタートで保存開始、ストップで保存終了します" android:textAppearance="@style/TextAppearance.AppCompat.Body2" android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.524" /> <Button android:id="@+id/button2" android:layout_width="88dp" android:layout_height="48dp" android:layout_marginBottom="85dp" android:layout_marginLeft="77dp" android:layout_marginStart="77dp" android:layout_marginTop="87dp" android:text="Start" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" app:layout_constraintVertical_bias="0.0" tools:layout_constraintBottom_creator="1" tools:layout_constraintLeft_creator="1" tools:layout_constraintTop_creator="1" /> <Button android:id="@+id/button3" android:layout_width="88dp" android:layout_height="48dp" android:layout_marginEnd="52dp" android:layout_marginRight="73dp" android:text="Stop" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="@+id/button2" app:layout_constraintVertical_bias="0.0" tools:layout_constraintBottom_creator="1" tools:layout_constraintRight_creator="1" tools:layout_constraintTop_creator="1" /> </android.support.constraint.ConstraintLayout>
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報


回答1件
あなたの回答
tips
プレビュー