###前提・実現したいこと
Androidにおいて描画中の端末の加速度センサの値を取得するアプリを作っています。
センサの値を取得し、そのときのタイムスタンプを取得したいと思っています。
ここ(http://androidlab.blog119.fc2.com/blog-entry-20.html)を参考にして作成したのですが、描画中のXY座標のタイムスタンプは取得できたものの、センサのタイムスタンプが取得できませんでした。
まだアプリ作成初心者なのもありますが、何かよい方法があれば教えていただきたいです。
よろしくお願いします。
開発環境はAndroidstudioになります。
###ソースコード(追記)
Java
1 2import java.util.ArrayList; 3import java.util.List; 4import java.util.Calendar; 5 6import android.app.Activity; 7import android.content.Intent; 8import android.hardware.Sensor; 9import android.hardware.SensorEvent; 10import android.hardware.SensorEventListener; 11import android.hardware.SensorManager; 12import android.os.Bundle; 13import android.view.Menu; 14import android.view.MenuItem; 15import android.widget.Toast; 16 17public class SensorActivity extends Activity implements SensorEventListener{ 18 19 private SensorManager sensorManager; 20 21 DrawNoteView view; 22 private static final int MENU_CLEAR = 0; 23 private static final int MENU_SAVE = 1; 24 private String ID; 25 26 27 // 加速度センサーの値 28 private float[] accelerometerValues = new float[3]; 29 30 ArrayList<Float> accelx = new ArrayList<Float>(); 31 ArrayList<Float> accely = new ArrayList<Float>(); 32 ArrayList<Float> accelz = new ArrayList<Float>(); 33 34 ArrayList<String> sensortime = new ArrayList<String>(); 35 36 float x; 37 float y; 38 float z; 39 String Stime; 40 41 42 @Override 43 public void onCreate(Bundle savedInstanceState) { 44 super.onCreate(savedInstanceState); 45 view = new DrawNoteView(getApplication()); 46 setContentView(view); 47 Intent intent = getIntent(); 48 ID = intent.getStringExtra("keyword"); 49 50 //SensorManagerのインスタンスを取得 51 sensorManager = (SensorManager)this.getSystemService(SENSOR_SERVICE); 52 } 53 54 @Override 55 protected void onResume() { 56 super.onResume(); 57 58 List<Sensor>sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); 59 //リスナーの登録 60 for(Sensor s : sensors) 61 { 62 sensorManager.registerListener(this,s,SensorManager.SENSOR_DELAY_NORMAL ); 63 } 64 65 66 } 67 68 @Override 69 public void onAccuracyChanged(Sensor sensor, int accuracy) { 70 } 71 72 @Override 73 public void onSensorChanged(SensorEvent event) { 74 75 Calendar time = Calendar.getInstance(); 76// int year = time.get(time.YEAR); 77// 78// int month = time.get(time.MONTH); 79// 80// int day = time.get(time.DAY_OF_MONTH); 81 82 int hour = time.get(time.HOUR_OF_DAY); 83 84 int minute = time.get(time.MINUTE); 85 86 int second = time.get(time.SECOND); 87 88 int ms = time.get(time.MILLISECOND); 89 90 Stime = String.valueOf(hour)+":"+String.valueOf(minute)+":"+String.valueOf(second)+":" +String.valueOf(ms); 91 92 switch(event.sensor.getType()) 93 { 94 95 //加速度 96 case Sensor.TYPE_ACCELEROMETER: { 97 98 accelerometerValues = event.values.clone(); 99 100 sensortime.add(Stime); 101 102 x = accelerometerValues[0]; 103 y = accelerometerValues[1]; 104 z = accelerometerValues[2]; 105 106accelx.add(x); 107 accely.add(y); 108 accelz.add(z); 109 110 break; 111 } 112 } 113 } 114 115 /** メニューの生成イベント */ 116 117 @Override 118 public boolean onCreateOptionsMenu(Menu menu) { 119 super.onCreateOptionsMenu(menu); 120 menu.add(0, MENU_CLEAR, 0, "Clear"); 121 menu.add(0, MENU_SAVE, 0, "Save"); 122 return true; 123 } 124 /** メニューがクリックされた時のイベント */ 125 @Override 126 public boolean onOptionsItemSelected(MenuItem item) { 127 switch ( item.getItemId() ) { 128 case MENU_CLEAR: 129 view.clearDrawList(); 130 break; 131 132 case MENU_SAVE: 133 134 135 exec_post(); 136 137 138 break; 139 } 140 return true; 141 } 142 143// POST通信を実行(AsyncTaskによる非同期処理を使うバージョン) 144 private void exec_post() { 145 // 非同期タスクを定義 146 HttpPostTask task = new HttpPostTask( 147 this, 148 149 150 151 152 // タスク完了時に呼ばれるUIのハンドラ 153 new HttpPostHandler(){ 154 155 @Override 156 public void onPostCompleted(String response) { 157 // 受信結果をUIに表示 158// 159 } 160 161 @Override 162 public void onPostFailed(String response) { 163 Toast.makeText( 164 getApplicationContext(), 165 "エラーが発生しました。", 166 Toast.LENGTH_LONG 167 ).show(); 168 } 169 } 170 ); 171 172 173 for(int i = 0; i <accelx.size(); i++){ 174 task.addPostParam( "accelerometer_No[]", i ); 175 task.addPostParam2( "aX[]", accelx.get(i)); 176 task.addPostParam2("aY[]", accely.get(i)); 177 task.addPostParam2("aZ[]", accelz.get(i)); 178 } 179 180 for(int i = 0; i <view.drawnowtime_list.size(); i++){ 181 task.addPostParam( "drawtime_No[]", i ); 182 task.addPostParam3( "drawtime[]", view.drawnowtime_list.get(i) ); 183 } 184 185 task.addPostParam3( "ID", ID ); 186 187 for(int i = 0; i <sensortime.size(); i++) { 188 task.addPostParam( "sensortime_No[]", i ); 189 task.addPostParam3("sensortime[]", sensortime.get(i)); 190 } 191 192 // タスクを開始 193 task.execute(); 194 195 196 } 197} 198
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/06/24 05:56 編集
退会済みユーザー
2017/06/24 11:52