Cardio graph for android

后端 未结 1 959
情歌与酒
情歌与酒 2020-12-08 08:48

I want to make an app which shows cardio graph in real time. That means i want to measure heart bit and want to show the bit rate in graph in my application. But i wondering

相关标签:
1条回答
  • 2020-12-08 09:14

    For this specific application, you may want to draw the graph "by hand" using Path and a SurfaceView.

    Get a Paint instance ready during initialization:

    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setStyle(Paint.Style.STROKE);
    paint.setStrokeWidth(3);
    paint.setColor(Color.GREEN);  //Change to what you want
    

    When you need to update the graphic, clear the scene and build the line path (adapt this to your needs) :

    canvas.drawColor(Color.WHITE);
    
    Path path = new Path();
    path.moveTo(0, yourValueAt(0));
    for(int sec = 1; sec < 30; sec++)
        path.lineTo(sec, yourValueAt(sec));
    
    canvas.drawPath(path, paint);
    

    You may also use quadTo or cubicTo instead of lineTo.

    If you want your graph to have a realtime animation effect (i.e. sliding to the left while data is coming on the right), you may draw on a SurfaceView in a similar way to the famous LunarLander example (following code is a simplified version):

    class DrawingThread extends Thread {
        @Override
        public void run() {
            while (running) {
                Canvas c = null;
                try {
                    c = mSurfaceHolder.lockCanvas(null);
                    synchronized (mSurfaceHolder) {
                        doDraw(c);
                    }
                } finally {
                    if (c != null) mSurfaceHolder.unlockCanvasAndPost(c);
                }
                synchronized (this) {
                    //Optional but saves battery life.
                    //You may compute the value to match a given max framerate..
                    this.wait(SOME_DELAY_IN_MS); 
                }
            }
        }
    }
    

    Where mSurfaceHolder is obtained by calling yourSurfaceView.getHolder() and doDraw is where you call canvas.drawPath() and all your drawing code.

    0 讨论(0)
提交回复
热议问题