質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

1334閲覧

センサ情報をCSVに変換してAndroidの内蔵ストレージに保存したい

hisashi_1

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2019/08/08 05:04

前提・実現したいこと

AndroidStudioで地磁気センサーのログをcsvに変換して内部ストレージに記録するアプリケーションを作成しています。

発生している問題・エラーメッセージ

1.http://androidlab.blog119.fc2.com/blog-entry-20.html#more

1のURLサイトに記載されているソースコード参考に作成にしているのですが,
今実機として使っているGooglePixcel3aには,SDカードが実装されていません.
そのため,内部ストレージにcsvファイルとして書き込みたいのですが,全然わかりません.

2.https://akira-watson.com/android/external-storage-file.html
2のURLサイトをみてやってい見たんですが,どう組み込んでいいかわからず,困っています.

該当のソースコード

Java

ソースコード
import android.app.Activity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.Calendar;

public class MainActivity extends Activity implements SensorEventListener {

//SensorManagerのインスタンス private SensorManager sensorManager; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //SensorManagerのインスタンスを取得 sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE); setContentView(R.layout.activity_main); } @Override protected void onResume() { super.onResume(); List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); //リスナーの登録 for(Sensor s : sensors) { sensorManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL ); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent e) { Calendar time = Calendar.getInstance(); int year = time.get(time.YEAR); int month = time.get(time.MONTH); int day = time.get(time.DAY_OF_MONTH); int hour = time.get(time.HOUR_OF_DAY); int minute = time.get(time.MINUTE); int second = time.get(time.SECOND); int ms = time.get(time.MILLISECOND); String nowtime = String.valueOf(year)+";"+String.valueOf(month)+";"+String.valueOf(day)+";"+ String.valueOf(hour)+":"+String.valueOf(minute)+":"+String.valueOf(second)+":"+String.valueOf(ms); switch(e.sensor.getType()) { //地磁気 case Sensor.TYPE_MAGNETIC_FIELD: { String FILE = "/data/test.csv"; try { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(FILE, true), "UTF-8")); String write_int =nowtime + "," + String.valueOf(e.values[SensorManager.DATA_X])+"," + String.valueOf(e.values[SensorManager.DATA_Y])+"," + String.valueOf(e.values[SensorManager.DATA_Z])+"\n"; bw.write(write_int); bw.close(); } catch (UnsupportedEncodingException k) { k.printStackTrace(); } catch (FileNotFoundException k) { k.printStackTrace(); } catch (IOException k) { k.printStackTrace(); } TextView x = (TextView)findViewById(R.id.x); x.setText("x" + String.valueOf(e.values[SensorManager.DATA_X])); TextView y = (TextView)findViewById(R.id.y); y.setText("y" + String.valueOf(e.values[SensorManager.DATA_Y])); TextView z = (TextView)findViewById(R.id.z); z.setText("z" + String.valueOf(e.values[SensorManager.DATA_Z])); break; } } } @Override protected void onStop() { super.onStop(); sensorManager.unregisterListener(this); };

}

試したこと

実機にデバックすると,センサの値は,画面上できちんと確認できています.

補足情報(FW/ツールのバージョンなど)

実機は,GooglePixcel3aです.
内部ストレージに保存した場合のCSVデータは,AndroidをPCとつないで,エクスプローラーを開き,Android/data/com.oooo~/の中で確認できるのでしょうか?

たくさん質問をしていますが,どうかご指導をよろしくお願いします.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugar_yas

2019/08/08 08:37

CSVファイルの出力で例外が発生してなくって、ファイルが見つからないというのであれば、Androidを再起動してみるか、プログラム上で、メディアスキャンを実施してみては、どうでしょうか。
sugar_yas

2019/08/19 02:32

ファイルを作った後(bw.close(); の後)であれば、どこでも良いと思います。
hisashi_1

2019/09/13 06:23

ありがとうございます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問