나는 안드로이드를 처음 접하고 아직도 놀고있다. 그러나 최근에는 문제가 발생하여 막혔습니다. 가속도계에서 데이터를 가져 와서 achartengine을 사용하여 실시간으로 그려 봅니다. 처음에는 가속도계의 데이터를 저장 한 다음 그것을 그려 봅니다. 에뮬레이터에서 실행할 수는 있지만 Nexus 4를 실행중인 젤리 빈에 응용 프로그램을 배포하면 응용 프로그램이 중단됩니다. 나는 이유를 알 수없는 것 같습니다. 의견 있으십니까?실시간으로 가속도계에서 achartengine까지의 데이터
public class MainActivity extends Activity implements SensorEventListener,OnClickListener {
private Button butStart, butStop;
private LinearLayout layout;
private boolean started = false;
private SensorManager sensorManager;
private static GraphicalView view;
private LineChart line = new LineChart();
private long t;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = (LinearLayout) findViewById(R.id.chart_container);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
new ArrayList<AccelemoterData>();
butStart = (Button) findViewById(R.id.butStart);
butStop = (Button) findViewById(R.id.butStop);
butStart.setOnClickListener(this);
butStop.setOnClickListener(this);
butStart.setEnabled(true);
butStop.setEnabled(false);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
if (started) {
double x = event.values[0];
double y = event.values[1];
double z = event.values[2];
long time = System.currentTimeMillis();
AccelemoterData data = new AccelemoterData(time, x, y, z);
line.addNewData(data, t);
view.repaint();
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.butStart:
view = line.getView(this);
setContentView(view);
butStop.setEnabled(true);
butStart.setEnabled(false);
new ArrayList<AccelemoterData>();
started = true;
t = System.currentTimeMillis();
Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, accelerometer,SensorManager.SENSOR_DELAY_FASTEST);
break;
case R.id.butStop:
butStop.setEnabled(false);
butStart.setEnabled(true);
started = false;
sensorManager.unregisterListener(this);
layout.removeAllViews();
break;
default:
break;
}
}
}
public class LineChart {
private GraphicalView view;
private TimeSeries xSeries = new TimeSeries("X");
private TimeSeries ySeries = new TimeSeries("Y");
private TimeSeries zSeries = new TimeSeries("Z");
private XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
XYSeriesRenderer xRenderer = new XYSeriesRenderer();
XYSeriesRenderer yRenderer = new XYSeriesRenderer();
XYSeriesRenderer zRenderer = new XYSeriesRenderer();
XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
public LineChart() {
dataset.addSeries(xSeries);
dataset.addSeries(ySeries);
dataset.addSeries(zSeries);
xRenderer.setColor(Color.RED);
xRenderer.setPointStyle(PointStyle.CIRCLE);
xRenderer.setFillPoints(true);
xRenderer.setLineWidth(1);
xRenderer.setDisplayChartValues(false);
yRenderer.setColor(Color.GREEN);
yRenderer.setPointStyle(PointStyle.CIRCLE);
yRenderer.setFillPoints(true);
yRenderer.setLineWidth(1);
yRenderer.setDisplayChartValues(false);
zRenderer.setColor(Color.BLUE);
zRenderer.setPointStyle(PointStyle.CIRCLE);
zRenderer.setFillPoints(true);
zRenderer.setLineWidth(1);
zRenderer.setDisplayChartValues(false);
multiRenderer.setXLabels(0);
multiRenderer.setLabelsColor(Color.RED);
multiRenderer.setChartTitle("t vs (x,y,z)");
multiRenderer.setXTitle("Sensor Data");
multiRenderer.setYTitle("Values of Acceleration");
multiRenderer.setZoomButtonsVisible(true);
multiRenderer.addSeriesRenderer(xRenderer);
multiRenderer.addSeriesRenderer(yRenderer);
multiRenderer.addSeriesRenderer(zRenderer);
}
public GraphicalView getView(Context context)
{
view = ChartFactory.getLineChartView(context, dataset, multiRenderer);
return view;
}
public void addNewData(AccelemoterData data, long t)
{
xSeries.add(data.getTime()-t, data.getX());
ySeries.add(data.getTime()-t, data.getY());
zSeries.add(data.getTime()-t, data.getZ());
}
}
적어도 어떤 오류로 질문을 업데이트 할 수 있습니까? –