오픈소스 만보기를 이용해 추가적으로 걸음수를 막대그래프로 실시간으로 증가시키려고 합니다.
if (gabOfTime > 100) {
lastTime = currentTime;
x = event.values[SensorManager.DATA_X];
y = event.values[SensorManager.DATA_Y];
z = event.values[SensorManager.DATA_Z];
speed = Math.abs(x + y + z - lastX - lastY - lastZ) / gabOfTime* 3000;
if (speed > SHAKE_THRESHOLD) {
Log.e("Step!", "SHAKE");
Intent myFilteredResponse = new Intent(
"com.androday.test.step");
values.Step = count++;
이부분에서 걸음수인 values.step을 받습니다.
아래부분이 그래프와 걸음수를 나타내는 부분입니다.
코드중에 그래프의 값을
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] {app.manbo.values.Step});
이렇게 나타냈는데 시작 걸음수인 0에서 더이상 그래프가 증가하지 않습니다.
어느 부분을 더 추가해야 할까요?
고수분들의 도움 부탁드립니다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intentMyService = new Intent(this, MyServiceIntent.class);
// 실행되기 원하는 서비스 등록
receiver = new MyMainLocalRecever();
CountText = (TextView) findViewById(R.id.textView01);
btnStopService = (Button) findViewById(R.id.btnStopService);
// 서비스 중지
btnStopService.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (flag) {
btnStopService.setText("Stop !!");
// TODO Auto-generated method stub
try {
IntentFilter mainFilter = new IntentFilter(
"com.androday.test.step");
registerReceiver(receiver, mainFilter);
startService(intentMyService);
// txtMsg.setText("After stoping Service:\n"+service.getClassName());
Toast.makeText(getApplicationContext(), "서비스 시작", 0).show();
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), e.getMessage(), 1).show();
}
}
else {
btnStopService.setText("Go !!");
// TODO Auto-generated method stub
try {
unregisterReceiver(receiver);
stopService(intentMyService);
Toast.makeText(getApplicationContext(), "서비스 중지",0).show();
// txtMsg.setText("After stoping Service:\n"+service.getClassName());
} catch (Exception e) {
// TODO: handle exception
Toast.makeText(getApplicationContext(), e.getMessage(), 1).show();
}
}
flag = !flag;
}
});
List<double[]> values = new ArrayList<double[]>();
values.add(new double[] {app.manbo.values.Step});
/** 그래프 출력을 위한 그래픽 속성 지정객체 */
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
// 상단 표시 제목과 글자 크기
renderer.setChartTitle("활동량");
renderer.setChartTitleTextSize(20);
// 분류에 대한 이름
String[] titles = new String[] { "시간당 걸음수" };
// 항목을 표시하는데 사용될 색상값
int[] colors = new int[] { Color.YELLOW };
// 분류명 글자 크기 및 각 색상 지정
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++) {
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
// X,Y축 항목이름과 글자 크기
renderer.setXTitle("시간");
renderer.setYTitle("걸음수");
renderer.setAxisTitleTextSize(12);
// 수치값 글자 크기 / X축 최소,최대값 / Y축 최소,최대값
renderer.setLabelsTextSize(10);
renderer.setXAxisMin(0.5);
renderer.setXAxisMax(12.5);
renderer.setYAxisMin(0);
renderer.setYAxisMax(100);
// X,Y축 라인 색상
renderer.setAxesColor(Color.WHITE);
// 상단제목, X,Y축 제목, 수치값의 글자 색상
renderer.setLabelsColor(Color.CYAN);
// X축의 표시 간격
renderer.setXLabels(12);
// Y축의 표시 간격
renderer.setYLabels(5);
// X,Y축 정렬방향
renderer.setXLabelsAlign(Paint.Align.LEFT);
renderer.setYLabelsAlign(Paint.Align.LEFT);
// X,Y축 스크롤 여부 ON/OFF
renderer.setPanEnabled(false, false);
// ZOOM기능 ON/OFF
renderer.setZoomEnabled(false,false);
// ZOOM 비율
renderer.setZoomRate(1.0f);
// 막대간 간격
renderer.setBarSpacing(0.5f);
// 설정 정보 설정
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
for (int i = 0; i < titles.length; i++) {
CategorySeries series = new CategorySeries(titles[i]);
double[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++) {
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
// 그래프 객체 생성
GraphicalView gv = ChartFactory.getBarChartView(this, dataset,
renderer, Type.STACKED);
// 그래프를 LinearLayout에 추가
LinearLayout Graph = (LinearLayout) findViewById(R.id.graph1);
Graph.addView(gv);
}
class MyMainLocalRecever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
serviceData = intent.getStringExtra("serviceData");
CountText.setText(serviceData);
Toast.makeText(getApplicationContext(), "Walking . . . ", 0).show();
}