前提・実現したいこと
Android Studioで計測した加速度の情報をcsvファイルに保存するプログラムを作成しています
・現在実装できていること
加速度の情報を表示する。(strTmp1)
加速度の情報をリストに保存する。(listX,listY,listZ)
リストの情報を表示する。(strTmp2)(リストに加速度の情報が入力されているかを確かめるもの)
・実装したいこと
現在、表示させているリストの情報をcsvファイルに出力できるようにしたい。
発生している問題・エラーメッセージ
リストの情報をcsvファイルに出力する方法がわかりません。
Androidのファイルの扱い方がわからず、pcのファイルに保存する場合と同じような方法で保存できるのか疑問です。
該当のソースコード
Java
1【MainActivity.java】 2package com.websarva.wings.android.test1; 3 4import android.os.Bundle; 5import android.hardware.Sensor; 6import android.hardware.SensorEvent; 7import android.hardware.SensorEventListener; 8import android.hardware.SensorManager; 9import android.widget.TextView; 10import androidx.appcompat.app.AppCompatActivity; 11 12import java.util.ArrayList; 13import java.util.List; 14 15public class MainActivity extends AppCompatActivity implements SensorEventListener { 16 17 private SensorManager sensorManager; 18 private TextView textView, textInfo; 19 20 //加速度の履歴を保存する配列 21 List<Float> listX = new ArrayList<>(); 22 List<Float> listY = new ArrayList<>(); 23 List<Float> listZ = new ArrayList<>(); 24 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.activity_main); 29 30 // センサーマネージャーのインスタンスを取得 31 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 32 33 // TextViewのインスタンスを取得 34 textView = findViewById(R.id.text_view); 35 textInfo = findViewById(R.id.text_info); 36 } 37 38 @Override 39 protected void onResume() { 40 super.onResume(); 41 // リスナの登録 42 Sensor accel = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 43 44 //センサの反応速度を変化 45 //sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL); 46 sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_FASTEST); 47 //sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_GAME); 48 //sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_UI); 49 } 50 51 @Override 52 protected void onPause() { 53 super.onPause(); 54 // 登録したリスナを解除 55 sensorManager.unregisterListener(this); 56 } 57 58 //イベントリスナ 59 @Override 60 //センサーの値が変化したとき 61 public void onSensorChanged(SensorEvent event) { 62 float sensorX, sensorY, sensorZ; 63 64 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 65 sensorX = event.values[0]; 66 sensorY = event.values[1]; 67 sensorZ = event.values[2]; 68 69 String strTmp1 = "加速度センサー\n" 70 + " X: " + sensorX + "\n" 71 + " Y: " + sensorY + "\n" 72 + " Z: " + sensorZ; 73 textView.setText(strTmp1); 74 75 //加速度の履歴を保存 76 listX.add(sensorX); 77 listY.add(sensorY); 78 listZ.add(sensorZ); 79 80 String strTmp2 = " X: " + listX + " Y: " + listY + " Z: " + listZ; 81 82 textInfo.setText(strTmp2); 83 84 } 85 } 86 87 @Override 88 //センサーの精度が変化したとき 89 public void onAccuracyChanged(Sensor sensor, int accuracy) { 90 } 91}
補足情報(言語/FW/ツールのバージョンなど)
開発環境:Android Studio Arctic Fox | 2020.3.1 Patch 2
開発言語:Java
Androidバージョン:11.0(R)-API30
Android Studioでの開発は始めて1ヵ月程度で、Javaについても今回初めて使用しています。そのため理解していない部分が多いです。
どうかご指摘、ご指導よろしくお願いします。
あなたの回答
tips
プレビュー