我想制作一个实时显示心电图的应用程序。这意味着我想测量心脏位并希望在我的应用程序中以图表形式显示比特率。但我想绘制心电图。我已经浏览了许多示例图形代码,但无法获得绘制心电图的任何线索。是否有任何 body 的线索?
最佳答案
对于此特定应用程序,您可能希望使用 Path 和 SurfaceView“手动”绘制图形。
在初始化期间准备好 Paint 实例:
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
当您需要更新图形时,清除场景并构建线路径(根据您的需要进行调整):
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);
您也可以使用 quadTo 或 cubeTo 代替 lineTo。
如果您希望您的图形具有实时动画效果(即向左滑动,而右侧有数据),您可以使用与著名的 LunarLander 示例类似的方式在 SurfaceView 上绘制(以下代码是简化版本):
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);
}
}
}
}
其中 mSurfaceHolder 是通过调用
yourSurfaceView.getHolder()
获得的,doDraw
是哪里您调用
canvas.drawPath()
和所有绘图代码。关于android - 安卓的心电图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6041190/