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

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

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

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

Android Studio

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

Q&A

解決済

1回答

2736閲覧

Android上で動く加速度センサからのデータをグラフ化するプログラム

Jyogasajyoutaro

総合スコア13

Java

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

Android Studio

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

0グッド

0クリップ

投稿2016/05/26 15:35

###前提・実現したいこと
Android上で加速度センサのデータを取得しグラフ化するプログラムを作成しています。
###発生している問題・エラーメッセージ
R.id.action_mainとR.menu.menu_mainにエラーが発生して動かない状態になっています

エラーメッセージ

Error:(202, 36) エラー: シンボルを見つけられません
シンボル: 変数 menu
場所: クラス R

Error:(214, 23) エラー: シンボルを見つけられません
シンボル: 変数 action_main
場所: クラス id

###該当のソースコード

Java

1import android.app.Activity; 2import android.graphics.Color; 3import android.graphics.Typeface; 4import android.hardware.Sensor; 5import android.hardware.SensorEvent; 6import android.hardware.SensorEventListener; 7import android.hardware.SensorManager; 8import android.os.Bundle; 9import android.os.Handler; 10import android.util.Log; 11import android.view.Menu; 12import android.view.MenuItem; 13import android.widget.LinearLayout; 14import android.widget.RelativeLayout; 15import android.widget.TextView; 16 17import org.afree.chart.AFreeChart; 18import org.afree.chart.ChartFactory; 19import org.afree.chart.axis.ValueAxis; 20import org.afree.chart.plot.PlotOrientation; 21import org.afree.chart.plot.XYPlot; 22import org.afree.data.xy.XYSeries; 23import org.afree.data.xy.XYSeriesCollection; 24import org.afree.graphics.SolidColor; 25import org.afree.graphics.geom.Font; 26import org.w3c.dom.Text; 27 28import java.util.ArrayList; 29import java.util.HashMap; 30import java.util.List; 31 32 33public class MainActivity extends Activity { 34 35 // センサーマネージャー 36 private SensorManager manager; 37 38 // センサーイベントリスナー 39 private SensorEventListener listener; 40 41 Handler handler; 42 GraphView spcv = null; 43 44 // 今回の加速度 45 private float fAccell[] = new float[3]; 46 47 private float gravity[] = { 0.0f, 0.0f, 0.0f }; 48 private float[] linear_acceleration = { 0.0f, 0.0f, 0.0f }; 49 50 private final float alpha = 0.8f; 51 private RelativeLayout layout1 = null; 52 53 private List list = new ArrayList<HashMap<String, Float>>(); 54 55 @Override 56 protected void onCreate(Bundle savedInstanceState) { 57 super.onCreate(savedInstanceState); 58 setContentView(R.layout.activity_main); 59 60 layout1 = (RelativeLayout)findViewById(R.id.layout1); 61 62 // センサーマネージャーを取得 63 manager = (SensorManager)getSystemService(SENSOR_SERVICE); 64 65 // センサーのイベントリスナーを登録 66 listener = new SensorEventListener() { 67 68 // 値変更時 69 @Override 70 public void onSensorChanged(SensorEvent sensorEvent) { 71 72 // センサーの種類で値を取得 73 switch( sensorEvent.sensor.getType()) { 74 // 加速度 75 case Sensor.TYPE_ACCELEROMETER: 76 fAccell = sensorEvent.values.clone(); 77 78 gravity[0] = alpha * gravity[0] + (1 - alpha) * fAccell[0]; 79 gravity[1] = alpha * gravity[1] + (1 - alpha) * fAccell[1]; 80 gravity[2] = alpha * gravity[2] + (1 - alpha) * fAccell[2]; 81 82 linear_acceleration[0] = fAccell[0] - gravity[0]; 83 linear_acceleration[1] = fAccell[1] - gravity[1]; 84 linear_acceleration[2] = fAccell[2] - gravity[2]; 85 86 layout1.setBackgroundColor(Color.TRANSPARENT); 87 if(linear_acceleration[0] >= 1.5f){ 88 layout1.setBackgroundColor(Color.BLUE); 89 } 90 if(linear_acceleration[1] >= 1.5f){ 91 layout1.setBackgroundColor(Color.YELLOW); 92 } 93 if(linear_acceleration[2] >= 1.5f){ 94 layout1.setBackgroundColor(Color.GREEN); 95 } 96 97 HashMap<String, Float> map = new HashMap<String, Float>(); 98 99 if(list.size() > 100){ 100 list.remove(0); 101 } 102 103 map.put("x", (linear_acceleration[0])); 104 map.put("y", (linear_acceleration[1])); 105 map.put("z", (linear_acceleration[2])); 106 list.add(map); 107 108 109 break; 110 } 111 112 } 113 114 // 115 @Override 116 public void onAccuracyChanged(Sensor sensor, int i) { 117 118 } 119 }; 120 121 // Graph 122 spcv = (GraphView) findViewById(R.id.graphView1); 123 124 handler = new Handler(); 125 Thread repaintThread = new Thread(new Runnable() { 126 public void run() { 127 while (true) { 128 handler.post(new Runnable() { 129 public void run() { 130 // repaint(); 131 XYSeriesCollection dataset = new XYSeriesCollection(); 132 XYSeries series1 = new XYSeries("X"); 133 XYSeries series2 = new XYSeries("Y"); 134 XYSeries series3 = new XYSeries("Z"); 135 136 for(int i=0;i<list.size();i++){ 137 HashMap<String, Float> item = (HashMap<String, Float>)list.get(i); 138 float x = Float.parseFloat(item.get("x").toString()); 139 float y = Float.parseFloat(item.get("y").toString()); 140 float z = Float.parseFloat(item.get("z").toString()); 141 142 series1.add(i+1, x); 143 series2.add(i+1, y); 144 series3.add(i+1, z); 145 } 146 147 dataset.addSeries(series1); 148 dataset.addSeries(series2); 149 dataset.addSeries(series3); 150 151 // chart 152 AFreeChart chart = ChartFactory.createXYLineChart( 153 "加速度", 154 "時間", 155 "加速度", 156 dataset, 157 PlotOrientation.VERTICAL, 158 false, 159 true, 160 false 161 ); 162 163 // XY軸の加工 164 XYPlot plot = chart.getXYPlot(); 165 ValueAxis xAxis = plot.getDomainAxis(); 166 ValueAxis yAxis = plot.getRangeAxis(); 167 yAxis.setRange(-3, 3); 168 169 // tickラベルのフォントを変更 170 Font xyTitleFont = new Font(Typeface.SANS_SERIF, Typeface.BOLD, 30); 171 xAxis.setTickLabelFont(xyTitleFont); 172 yAxis.setTickLabelFont(xyTitleFont); 173 174 // chartの背景と枠線を変更 175 chart.setBackgroundPaintType(new SolidColor(Color.GRAY));//背景の色 176 chart.setBorderPaintType(new SolidColor(Color.BLACK));//枠線の色 177 178 // チャートに設定して再描画 179 spcv.setChart(chart); 180 spcv.postInvalidate(); 181 } 182 }); 183 try { 184 // 500ミリ秒 185 Thread.sleep(500); 186 } catch (InterruptedException e) { 187 // TODO 自動生成された catch ブロック 188 e.printStackTrace(); 189 } 190 } 191 } 192 }); 193 repaintThread.start(); 194 195 } 196 197 @Override 198 public boolean onCreateOptionsMenu(Menu menu) { 199 // Inflate the menu; this adds items to the action bar if it is present. 200 getMenuInflater().inflate(R.menu.menu_main,menu); 201 return true; 202 } 203 204 @Override 205 public boolean onOptionsItemSelected(MenuItem item) { 206 // Handle action bar item clicks here. The action bar will 207 // automatically handle clicks on the Home/Up button, so long 208 // as you specify a parent activity in AndroidManifest.xml. 209 int id = item.getItemId(); 210 211 //noinspection SimplifiableIfStatement 212 if (id == R.id.action_main) { 213 return true; 214 } 215 216 return super.onOptionsItemSelected(item); 217 } 218 219 @Override 220 protected void onResume() { 221 super.onResume(); 222 223 // リスナー設定:加速度 224 manager.registerListener( 225 listener, 226 manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 227 SensorManager.SENSOR_DELAY_UI); 228 229 } 230 231 232 @Override 233 protected void onPause() { 234 super.onPause(); 235 236 // リスナー解除 237 manager.unregisterListener(listener); 238 } 239240 241

###試したこと
activity_main.xmlを確認しましたがエラーはありませんでした

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記の2点を確認してください。

  • res/menuの下にmenu_main.xmlは存在しているか。
  • エラーメッセージの追記

投稿2016/05/26 16:14

yona

総合スコア18155

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

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

Jyogasajyoutaro

2016/05/27 04:55

ご回答ありがとうございます。 ご指摘頂いた2点について確認を行いました。 結果として ・res/menu自体が存在しなかった ・シンボル以外のエラーとして 注意:/Users/hoge/AndroidStudioProjects/Accelerometer/app/src/main/java/com/example/hoge/accelerometer/MainActivity.javaの操作は、未チェックまたは安全ではありません。 注意:詳細は、-Xlint:uncheckedオプションを指定して再コンパイルしてください。 :app:compileDebugJavaWithJavac FAILED Error:Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. といった内容のエラーを確認いたしました このような場合どうしたら良いでしょうか よろしくお願いいたします。
yona

2016/05/27 04:58

存在しないリソースファイルを使おうとしているのでエラーになっています。 メニューを使わないのであればエラーが出ている2つのメソッドを消すと良いでしょう。 メニューを使うならリソースファイルを定義する必要があります。
Jyogasajyoutaro

2016/05/30 13:30

ありがとうございました。実行できました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問