前提・実現したいこと
アンドロイドで加速度センサのデータを取得し、
PCへ送信後、CSVファイルへ書き込むことを実現したいと考えております。
よろしくお願いいたします。
###エラー
実際に取得、送受信、書き込みは実現していますが、CSVファイルを確認するとデータ数が
最初に取得した値から51個までしか書き込まれていません。
備考
PCでの受信では受信ごとにコンソールへデータを出力するようにプログラムしておりますが、
送信側のアプリを止めるまでデータ出力せず、この理由も理解できてません。
ソースコード
アンドロイドアプリケーション
java
1public class MainActivity extends Activity 2 implements SensorEventListener, View.OnClickListener{ 3 4 5 public String sendingStr[] = new String[4]; 6// 7 //-- --// 8 private SensorManager sensorManager; 9 private Sensor accel; 10 11 public float linear_acceleration[] = new float[3]; 12 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 17 super.onCreate(savedInstanceState); 18 setContentView(R.layout.activity_main); 19 20 // Get an instance of the SensorManager 21 sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 22 } 23 24 @Override 25 protected void onResume() { 26 super.onResume(); 27 // Listenerの登録 28 accel = sensorManager.getDefaultSensor( 29 Sensor.TYPE_ACCELEROMETER); 30 31 sensorManager.registerListener(this, accel, 32 SensorManager.SENSOR_DELAY_NORMAL); 33 34 } 35 36 // 解除するコードも入れる! 37 @Override 38 protected void onPause() { 39 super.onPause(); 40 // Listenerを解除 41 sensorManager.unregisterListener(this); 42 } 43 44 @Override 45 public void onSensorChanged(SensorEvent event) { 46 47 if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { 48 49 50 linear_acceleration[0] = event.values[0]; 51 linear_acceleration[1] = event.values[1]; 52 linear_acceleration[2] = event.values[2]; 53 } 54 DateFormat format = new SimpleDateFormat("yyyy MM ddhh:mm:ss.SSS"); 55 String date = format.format(new Date()); 56 sendingStr[0] =date; 57 sendingStr[1] = Float.toString(linear_acceleration[0]); 58 sendingStr[2] = Float.toString(linear_acceleration[1]); 59 sendingStr[3] = Float.toString(linear_acceleration[2]); 60 TCPsocket cl = new TCPsocket(sendingStr); 61 cl.start(); 62 } 63 @Override 64 public void onAccuracyChanged(Sensor sensor, int accuracy) { 65 } 66} 67public class TCPsocket extends Thread { 68 private String Ip = "-------"; //アクセス先IP 69 private int Port = ----; //アクセス先ポート 70 public String date; 71 public String acceldataX, acceldataY, acceldataZ; 72 73 74 public TCPsocket(String str[]) { 75 this.date =str[0]; 76 this.acceldataX = str[1]; 77 this.acceldataY = str[2]; 78 this.acceldataZ = str[3]; 79 } 80 81 @Override 82 public void run() { 83 try { 84//通信用ソケット作成 85 Socket socket = new Socket(Ip, Port); 86 InputStream in = socket.getInputStream(); 87 OutputStream out = socket.getOutputStream(); 88 BufferedReader br = new BufferedReader(new InputStreamReader(in, "UTF-8")); 89 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out, "UTF-8")); 90 91 92//テキストを送る 93 94 bw.write(this.date+","+this.acceldataX + "," + this.acceldataY + "," + this.acceldataZ 95 96//データを確定させて通信処理を起こさせる 97 bw.flush(); 98//後処理 99 in.close(); 100 out.close(); 101 socket.close(); 102 } catch (Exception e) { 103 e.printStackTrace(); 104 } 105 } 106}
PC側 受信プログラム
java
1public class Server{ 2 public static final int PORT =----; 3 static final String INPUT_DIR = "/Users/---/---/example.csv"; 4 public String stopStr = null; 5 public static void main(String args[]) { 6 Server sm =new Server(); 7 8 try { 9 ServerSocket ss = new ServerSocket(PORT); 10 BufferedReader br; 11 12 //ファイルを開く 13 FileWriter f = new FileWriter(INPUT_DIR,false); 14 PrintWriter p = new PrintWriter(new BufferedWriter(f)); 15 p.println("時間,加速度X,加速度Y,加速度Z"); 16 System.out.println("待機します"); 17 18 Socket sc; 19 20 while(true){ 21 try { 22 23 ss.setSoTimeout(20000); 24 sc= ss.accept(); 25 26 br = new BufferedReader( 27 new InputStreamReader( 28 sc.getInputStream() 29 ) 30 ); 31 String str = br.readLine(); 32 System.out.println(str); 33 p.println(str); 34 35 } 36 catch(Exception e) { 37 e.printStackTrace(); 38 System.out.println("お疲れ様でした"); 39 p.close(); 40 } 41 } 42 } 43 catch(Exception e) { 44 e.printStackTrace(); 45 } 46 } 47} 48
CSVファイルでの結果
1 2019 09 30 06:51:01.129 -0.09453266 0.20342097 9.94607
2 2019 09 30 06:51:01.268 -0.07694965 0.19186173 9.90667
3 2019 09 30 06:51:01.469 -0.068598665 0.19453368 9.895572
4 2019 09 30 06:51:01.669 -0.06703765 0.21001938 9.888551
5 2019 09 30 06:51:01.869 -0.07821378 0.20364122 9.887718
6 2019 09 30 06:51:02.068 -0.064461485 0.21603361 9.852897
7 2019 09 30 06:51:02.278 -0.059088897 0.21865766 9.86099
8 2019 09 30 06:51:02.471 -0.075953655 0.21085255 9.855588
9 2019 09 30 06:51:02.675 -0.060429648 0.21003853 9.831597
10 2019 09 30 06:51:02.875 -0.06442318 0.21770956 9.829414
11 2019 09 30 06:51:03.087 -0.06366661 0.19936039 9.818918
12 2019 09 30 06:51:03.288 -0.07372226 0.20634188 9.83041
13 2019 09 30 06:51:03.481 -0.06743987 0.20283677 9.828178
14 2019 09 30 06:51:03.675 -0.07095456 0.21268173 9.841481
15 2019 09 30 06:51:03.874 -0.068091094 0.20891805 9.836655
16 2019 09 30 06:51:04.074 -0.08297346 0.20617908 9.8278055
17 2019 09 30 06:51:04.274 -0.073023155 0.21091002 9.8492
18 2019 09 30 06:51:04.474 -0.06694188 0.20304745 9.860874
19 2019 09 30 06:51:04.677 -0.06944143 0.21055567 9.841434
20 2019 09 30 06:51:04.876 -0.07716991 0.19967642 9.842851
21 2019 09 30 06:51:05.077 -0.06413587 0.21682848 9.848942
22 2019 09 30 06:51:05.284 -0.07720821 0.19935082 9.862579
23 2019 09 30 06:51:05.485 -0.077533826 0.20142896 9.857598
24 2019 09 30 06:51:05.676 -0.07358818 0.21320845 9.877317
25 2019 09 30 06:51:05.874 -0.065256365 0.20117041 9.874157
26 2019 09 30 06:51:06.073 -0.075857885 0.20486705 9.882106
27 2019 09 30 06:51:06.273 -0.067401566 0.20511605 9.904553
28 2019 09 30 06:51:06.473 -0.069259465 0.21232738 9.901489
29 2019 09 30 06:51:06.673 -0.0656107 0.20650469 9.916975
30 2019 09 30 06:51:06.883 -0.081785925 0.20138109 9.911947
31 2019 09 30 06:51:07.074 -0.070561916 0.19083704 9.901403
32 2019 09 30 06:51:07.276 -0.07145255 0.20350714 9.917406
33 2019 09 30 06:51:07.476 -0.07807013 0.20208979 9.916601
34 2019 09 30 06:51:07.676 -0.07410533 0.20069157 9.922529
35 2019 09 30 06:51:07.876 -0.08459193 0.20482875 9.918086
36 2019 09 30 06:51:08.076 -0.06543832 0.1931163 9.914973
37 2019 09 30 06:51:08.277 -0.09329725 0.19994457 9.936187
38 2019 09 30 06:51:08.483 -0.07222828 0.2018312 9.95532
39 2019 09 30 06:51:08.683 -0.07405745 0.20212808 9.935056
40 2019 09 30 06:51:08.884 -0.0632165 0.21986434 9.910836
41 2019 09 30 06:51:09.084 -0.067526065 0.2029038 9.939969
42 2019 09 30 06:51:09.278 -0.08234139 0.1995998 9.923526
43 2019 09 30 06:51:09.477 -0.08055052 0.20737618 9.925566
44 2019 09 30 06:51:09.684 -0.0910467 0.19755995 9.933639
45 2019 09 30 06:51:09.883 -0.08817366 0.1986134 9.928486
46 2019 09 30 06:51:10.083 -0.08515697 0.20134279 9.932537
47 2019 09 30 06:51:10.277 -0.07458418 0.19936039 9.928582
48 2019 09 30 06:51:10.476 -0.07863516 0.19714814 9.944135
49 2019 09 30 06:51:10.675 -0.07528328 0.20905212 9.944393
50 2019 09 30 06:51:10.883 -0.07761044 0.20027019 9.943914
51 2019 09 30 06:51:11.073 -0.07634631 0.20024146 9.94174
試したこと
センサのデータ時間数を変更など行いましたが、常に50個で止まってしまいます。
補足情報(FW/ツールのバージョンなど)
アンドロイドの端末はファーウェイ Mate 10 Pro
アンドロイドはAndroid Studio
PCの受信プログラムはeclipseで動かしております。
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/01 01:21