前提・実現したいこと
加速度センサからの値をCSVファイルに出力したいのですが表示されません.
スマホを持って歩いた時の加速度を取得して,再度PCに繋げた時にCSVファイルが出力されるようにしたいです.
アプリも正常に動くため間違っている箇所がわからなくて困っています.
発生している問題・エラーメッセージ
エラーメッセージ
08-17 15:11:33.518 1750-15246/? E/ctxmgr: [BaseServerTask]Failed network request due to no network connectivity:
08-17 15:11:33.524 1750-15246/? E/ctxmgr: [SyncServerInterestRecordsOperation]Failed WriteInterestRecord: network status=1
08-17 15:11:35.796 748-851/? E/WifiConfigStore: rewrite network history for "SRAS-WPA"WPA_EAP
08-17 15:11:41.468 1750-15663/? E/ctxmgr: [BaseServerTask]Failed network request due to no network connectivity:
08-17 15:11:41.498 1750-15663/? E/ctxmgr: [SyncServerInterestRecordsOperation]Failed WriteInterestRecord: network status=1
### 該当のソースコード `````ここに言語を入力 コード ```java package com.example.sensor1; import android.app.Activity; import android.content.pm.ActivityInfo; import android.graphics.Color; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.github.mikephil.charting.charts.LineChart; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; import com.github.mikephil.charting.interfaces.datasets.ILineDataSet; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.util.Calendar; import java.util.Locale; public class MainActivity extends Activity implements SensorEventListener , View.OnClickListener{ private SensorManager sensorManager; private Sensor accel; private TextView TextView; private LineChart mChart; private String[] labels = new String[]{ "X軸", "Y軸", "Z軸"}; private int[] colors = new int[]{ Color.MAGENTA, Color.BLUE, Color.GRAY}; private boolean LineData = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 縦画面固定 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Get an instance of the SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); // Get an instance of the TextView TextView = findViewById(R.id.text_view); mChart = findViewById(R.id.chart); // インスタンス生成 mChart.setData(new LineData()); // no description text mChart.getDescription().setEnabled(false); // Grid背景色 mChart.setDrawGridBackground(true); // 右側の目盛り mChart.getAxisRight().setEnabled(false); Button buttonStart = findViewById(R.id.button_start); buttonStart.setOnClickListener(this); Button buttonStop = findViewById(R.id.button_stop); buttonStop.setOnClickListener(this); Button buttonChange = findViewById(R.id.button_change); buttonChange.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.button_start: sensorManager.registerListener(this,accel, SensorManager.SENSOR_DELAY_NORMAL); break; case R.id.button_stop: sensorManager.unregisterListener(this); break; case R.id.button_change: LineData = !LineData; break; } try{ //出力先の指定 FileWriter fw = new FileWriter(Environment.getExternalStorageDirectory().getPath()+"/test.csv",false); PrintWriter pw = new PrintWriter(new BufferedWriter(fw)); pw.close(); } catch (IOException ex){ } } @Override protected void onResume() { super.onResume(); // Listenerの登録 Sensor accel = sensorManager.getDefaultSensor( Sensor.TYPE_ACCELEROMETER); sensorManager.registerListener(this, accel, SensorManager.SENSOR_DELAY_NORMAL); } // 解除するコードも入れる! @Override protected void onPause() { super.onPause(); // Listenerを解除 sensorManager.unregisterListener(this); } private float x,y,z = 0.0f; public void onSensorChanged(SensorEvent event) { float FilterValues[] = new float[3]; final float alpha = 0.9f; if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { FilterValues[0] = FilterValues[0] * alpha + event.values[0] * (1 - alpha); FilterValues[1] = FilterValues[1] * alpha + event.values[1] * (1 - alpha); FilterValues[2] = FilterValues[2] * alpha + event.values[2] * (1 - alpha); String strTmp = "加速度センサー\n" + " X: " + FilterValues[0] + "\n" + " Y: " + FilterValues[1] + "\n" + " Z: " + FilterValues[2]; TextView.setText(strTmp); String accelerate; if (!LineData) { accelerate = String.format(Locale.US, "X: %.3f\nY: %.3f\nZ: %.3f\n", event.values[0], event.values[1], event.values[2]); } else { accelerate = String.format(Locale.US, "X: %.3f\nY: %.3f\nZ: %.3f\n", //\nで改行 FilterValues[0], FilterValues[1], FilterValues[2]); } TextView.setText(accelerate); //グラフ作成 LineData data = mChart.getLineData(); if (data != null) { for (int i = 0; i < 3; i++) { // 3軸なのでそれぞれ処理 ILineDataSet set3 = data.getDataSetByIndex(i); if (set3 == null) { LineDataSet set; // ILineDataSetの初期化(別メソッド) set = new LineDataSet(null, labels[i]); set.setLineWidth(2.0f); set.setColor(colors[i]); set.setDrawCircles(false); set.setDrawValues(false); set3 = set; data.addDataSet(set3); } //データのアップデート if (!LineData) { data.addEntry(new Entry(set3.getEntryCount(), event.values[i]), i); } else { data.addEntry(new Entry(set3.getEntryCount(), FilterValues[i]), i); } } mChart.notifyDataSetChanged(); // 表示の更新のために変更を通知する mChart.setVisibleXRangeMaximum(50); // 表示の幅を決定する mChart.moveViewToX(data.getEntryCount()); // 最新のデータまで表示を移動させる } } Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER = " + String.valueOf(event.values[0]) + String.valueOf(event.values[1]) + String.valueOf(event.values[2])); Log.d("SENSOR_DATA", "TYPE_ACCELEROMETER = " + String.valueOf(FilterValues[0]) + String.valueOf(FilterValues[1]) + String.valueOf(FilterValues[2])); } { Calendar time = Calendar.getInstance(); int year = time.get(Calendar.YEAR); int month = time.get(Calendar.MONTH); int day = time.get(Calendar.DAY_OF_MONTH); int hour = time.get(Calendar.HOUR_OF_DAY); int minute = time.get(Calendar.MINUTE); int second = time.get(Calendar.SECOND); int ms = time.get(Calendar.MILLISECOND); String nowtime = String.valueOf(hour) + ":" + String.valueOf(minute) + ":" + String.valueOf(second) + ":" + String.valueOf(ms); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー