마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 만보기+막대그래프 질문입니다.

0 추천
오픈소스 만보기를 이용해 추가적으로 걸음수를 막대그래프로 실시간으로 증가시키려고 합니다.

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();



  }

 

 

익명사용자 님이 2015년 5월 26일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...