🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

4回答

3830閲覧

センサ情報をCSVに変換してSDカードに保存したい

kenzoo1993

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

1クリップ

投稿2016/12/21 04:37

###前提・実現したいこと
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)を使用しております。

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

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

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

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

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

guest

回答4

0

実機はnexus7(2013)を使用
外部SDカードに保存したい

Nexus 7 (2013)はそもそもSDカードスロットが無いですよね
さっきから、もしかしたらと自分のNexus7 2013を見ているのですが

確かにhttp://tabkul.com/?p=32208のような無理くりUSBを使う方法があるようですが...
こういうことをするのであれば、それを明記しないと答える人が混乱しますね

WRITE_EXTERNAL_STORAGE

Nexus7のOSはどこまでバージョンアップしているのでしょうか
Android 6以上にアップグレードしているのであれば
dangerous permissionの実装が必要ですが
落ちたりしていないようなので古いままなのでしょうか

投稿2016/12/22 02:24

aja

総合スコア3733

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

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

kenzoo1993

2017/01/16 03:47

お返事が遅くなってしまい申し訳ありません。 実機zenpad38.0で行っていたのですが以前の環境をそのまま掲載してしまいました。 内容を整理してもう一度掲載させていただきたいと思います。 ありがとうございました。
guest

0

おそらくパスがまずいです。
/sdcard1/は書き込み権限はないと思いますよ。
一度、ファイルパスの取得方法を調べてみるといいですよ。

投稿2016/12/21 07:04

yona

総合スコア18155

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

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

kenzoo1993

2016/12/21 12:14

webでSDカードのファイルパスの取得方法を調べたのですが,非推奨(?)のようでしたので端末内に保存する方法に一旦変更しようと思い,パスを"/test.csv"に変更したのですが出力されませんでした。。 自分の知識不足を痛感しております。。
yona

2016/12/21 13:47

ルートディレクトリも書き込み権限はありません。 どこに保存したいんですか、それが決まらないと何もできないです。 ・アプリ内の領域ですか? ・外部SDカードですか? ・内部SDカードですか?
kenzoo1993

2016/12/21 14:17

外部SDカードに保存したいと考えております。
guest

0

Java

1bw.write(write_int); 2bw.flush(); // こいつが足りなさそう 3bw.close();

投稿2016/12/21 06:39

abs123

総合スコア1280

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

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

kenzoo1993

2016/12/21 06:56

追記してもだめでした。。
abs123

2016/12/21 07:03

ファイルの確認方法を教えてもらえますか?
kenzoo1993

2016/12/21 12:02

ASTROファイルマネージャー パソコンと繋いでパソコン上で SDカードをパソコンに繋いで の三通りで試しました!
guest

0

パーミッションの問題かもしれません
マニフェストファイル(AndroidManifest.xml)には、uses-permissionの記述を追記していますか?

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

尚、過去の質問にも似たようなものがあり解決されていました
やりとりがいろいろと参考になりそうなのでリンク貼っておきますね
AndroidアプリでのCSV出力について(teratail)

投稿2016/12/21 05:59

takito

総合スコア3116

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

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

kenzoo1993

2016/12/21 06:24

先程ご提示頂きましたものとリンク先の回答を参考に以下の二文をマニフェストファイルに追記しました。 <use-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> しかしながら,出力されるようにはなっていません。 エラーが出たらその場所を修正する必要が有ることがわかるのですが,出ていないためどう修正すればよいのかわかりません… 申し訳ありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問