상대편으로부터 데이터값을 받아서 데이터값을 Y라고 생각하고 X는 일정한 간격으로 증가시키면서

 

파형을 그릴려고 하는 초보입니다.

 

그런데 값은 제대로 전달되는거 같습니다. logcat을 찍어보면

 

하지만 그래프가 아예 그려지지 않아서 계속 하다가 이렇게 질문을 올립니다.

 

이 부분은 값을 받아와서 그리는 부분입니다.

 

  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
     mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
     mCanvas.setBitmap(mBitmap);
     mCanvas.drawColor(Color.WHITE);
     mWidth = w;
     mHeight = h;
     if (mWidth < mHeight) {
        mMaxX = w;
       } else {
        mMaxX = w - 50;
        }
       mLastX = mMaxX;
       super.onSizeChanged(w, h, oldw, oldh);
       
     }

  @Override
  protected void onDraw(Canvas canvas) {
     synchronized (this) {
      if (mBitmap != null) {
      canvas.drawPath(path, paint);
      canvas.drawBitmap(mBitmap, 0, 0, null);
      
      }
    }   
  }

   protected void drawGraph(byte[] data) {
    float mPrevYpos = 50;
    float x=0;
    Log.e(TAG, "data1111: " + data);
    int dataSize = data.length;
    Log.e(TAG, "dataSize1111: " + dataSize);
    float mYpos = 0;
    paint.setColor(Color.RED);
    path.moveTo(x, mPrevYpos);
    for (int i = 0; i < data.length; i++){
     mYpos = data[i];
     Log.e(TAG, "mYpos22222: " + mYpos);
     path.lineTo(i, mYpos);
     Log.e(TAG, "i1111: " + i);
     }
    }  
   }

 

그리고 여기는 받아온 값을 형변환시켜주는 부분입니다.

private double UByte(byte b){
 if(b<0) // if negative
  return (double)( (b&0x7F) + 128 );
 else
  return (double)b;
 }

 

여기는 버튼을 눌렀을경우 창에 그려주도록 실행하는 부분입니다.

       byte [] data=mGraphView.data;
       for(x=0; x<data.length; x++)
                {
        double fval = UByte(data[x]);
        if(fval<0){
         Toast.makeText(getApplicationContext(), "아직 정보가 들어오지 않았습니다.", Toast.LENGTH_SHORT).show();
        }
        else{
        mGraphView.drawGraph(fval);
        mHandler.sendEmptyMessage(1);
        }
                }