###前提・実現したいこと
AndroidStudioでセンサーのログをcsvに変換してSDカードに記録するアプリケーションを作成しています。
###発生している問題・エラーメッセージ
ビルド時点ではエラーが発生しておらず,実機上でもセンサ情報が表示されているのですが,端末内のファイルを見てもcsvファイルが作成されておりません。
###該当のソースコード
java
1 2import java.io.BufferedWriter; 3import java.io.FileNotFoundException; 4import java.io.FileOutputStream; 5import java.io.IOException; 6import java.io.OutputStreamWriter; 7import java.io.UnsupportedEncodingException; 8import java.util.Calendar; 9import java.util.List; 10 11import android.app.Activity; 12import android.hardware.Sensor; 13import android.hardware.SensorEvent; 14import android.hardware.SensorEventListener; 15import android.hardware.SensorManager; 16import android.os.Bundle; 17import android.widget.TextView; 18 19class sensorsd extends Activity implements SensorEventListener { 20 21 //センサーマネージャーのインスタンス 22 private SensorManager sensorManager; 23 24 @Override 25 public void onCreate(Bundle savedInstanceState) { 26 27 super.onCreate(savedInstanceState); 28 29 //センサーマネージャーのインスタンスを取得 30 sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE); 31 32 setContentView(R.layout.activity_main); 33 } 34 35 @Override 36 protected void onResume() 37 { 38 super.onResume(); 39 List<Sensor>sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 40 //リスナーの登録 41 for(Sensor s : sensors) 42 { 43 sensorManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL ); 44 } 45 } 46 @Override 47 public void onAccuracyChanged(Sensor sensor, int accuracy) { 48 49 } 50 @Override 51 public void onSensorChanged(SensorEvent e) 52 { Calendar time = Calendar.getInstance(); 53 int year = time.get(Calendar.YEAR); 54 55 int month = time.get(Calendar.MONTH); 56 57 int day = time.get(Calendar.DAY_OF_MONTH); 58 59 int hour = time.get(Calendar.HOUR_OF_DAY); 60 61 int minute = time.get(Calendar.MINUTE); 62 63 int second = time.get(Calendar.SECOND); 64 65 int ms = time.get(Calendar.MILLISECOND); 66 67 String nowtime = 68 String.valueOf(hour)+":"+String.valueOf(minute)+":"+String.valueOf(second)+":" 69 +String.valueOf(ms); 70 71 switch(e.sensor.getType()) 72 { 73 74 //加速度 75 case Sensor.TYPE_ACCELEROMETER: 76 { 77 78 String FILE = "/sdcard1/test.csv"; 79 try { 80 81 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( 82 new FileOutputStream(FILE, true), "UTF-8")); 83 String write_int = nowtime + "," + 84 String.valueOf(e.values[SensorManager.DATA_X])+"," + 85 String.valueOf(e.values[SensorManager.DATA_Y])+"," + 86 String.valueOf(e.values[SensorManager.DATA_Z])+"\n"; 87 bw.write(write_int); 88 bw.close(); 89 } catch (IOException k) { 90 k.printStackTrace(); 91 } 92 93 94 95 TextView x = (TextView)findViewById(R.id.x); 96 x.setText("x" + String.valueOf(e.values[SensorManager.DATA_X])); 97 TextView y = (TextView)findViewById(R.id.y); 98 y.setText("y" + String.valueOf(e.values[SensorManager.DATA_Y])); 99 TextView z = (TextView)findViewById(R.id.z); 100 z.setText("z" + String.valueOf(e.values[SensorManager.DATA_Z])); 101 break; 102 } 103 104 } 105 } 106 107 108 @Override 109 protected void onStop() 110 { 111 super.onStop(); 112 sensorManager.unregisterListener(this); 113 }; 114
###試したこと
sdカードの名称が誤っていないか確認済みです。
また,本体に保存しようとしたのですがそちらも失敗してしまいました。
###補足情報(言語/FW/ツール等のバージョンなど)
実機はnexus7(2013)を使用しております。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/16 03:47