音频波形图PcgView,一屏显示2秒的数据量

效果图:

在这里插入图片描述

心电图是被记录在布满大小方格的纸上,所以想要知道心电图怎么看,首要的是知道这些格子代表的意义。这些方格中每一条细竖线相隔1mm,每一条细横线也是相隔1mm,它们围成了1mm见方的小格。粗线是每五个小格一条,每条粗线之间相隔就是5mm,横竖粗线又构成了大方格。

心电图记录纸是按照国际规定的标准速度移动的,移动速度为25mm/s,也就是说横向的每个小细格代表0.04s;每两条粗线之间的距离就是代表0.2s。

国际上对记录心电图时的外加电压也是有规定的,即外加1mV电压时,基线就应该准确地抬高10个小格,也就是说,每个小横格表示0.1mV,而每个大格就表示0.5mV,每两个大格就代表了这1mV。

特点:

  • 走纸速度不固定,不是标准的25mm/s
  • 一屏显示2秒的数据量;

标准的波形图,代码注释,请参考:心电波形图EcgView

动态适配版本:

package com.kl.common_base.view.wave;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

import com.kl.common_base.R;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class PdfEcgWaveView extends View {
   
   
    private List<Short> pointList = Collections.synchronizedList(new LinkedList<>());
    private Paint mPaint;
    private Paint mPaintLine;
    private int mWidth = 0;
    private int mHeight = 0;
    private int mCenterY = 0;
    public float points[];
    List<Short> nativeDatas = null;
    private int len = 0;
    private int index = 0;

    private double zoom;
    private double gapX = 0.2f;
    private int xSize = 0;
    private final int maxMillimeter = 25;
    private final int FILTER_SIZE = 1;
    private int sampleRate = 8000 / FILTER_SIZE;
    private int gain = 5;
    private final int maxMidScopeY = 0;
    private double screenTotalTime;
    private int[] lineArray;
    private int[] cycleArray;
    private Map<Integer, Integer> lineMap = new HashMap();
//    private List<Float> xList = new ArrayList<>();

    public PdfEcgWaveView(Context context) {
   
   
        super(context);
//        Log.d("caowj", "55555555555555555555555555");
        initPaint();
    }

    public PdfEcgWaveView(Context context,  AttributeSet attrs) {
   
   
        super(context, attrs);
//        Log.d("caowj", "66666666666666666666666666");
        initPaint();

    }

    public PdfEcgWaveView(Context context,  AttributeSet attrs, int defStyleAttr) {
   
   
        super(context, attrs, defStyleAttr);
//        Log.d("caowj", "77777777777777777777777777");
        initPaint();

    }

    private void initPaint() {
   
   
//        Log.d("caowj", "initPaint--------------");
        if (mPaint == null) {
   
   
            mPaint = new Paint();
            mPaint.setColor(Color.BLACK);
            mPaint.setAntiAlias(true);
            mPaint.setStrokeWidth(2);
            mPaint.setStrokeCap(Paint.Cap.ROUND);
            mPaint.setStyle(Paint.Style.STROKE);
        }
        if (mPaintLine == null) {
   
   
            mPaintLine = new Paint();
            mPaintLine.setColor(getContext().getResources().getColor(R.color.red));
            mPaintLine.setAntiAlias(true);
            mPaintLine.setStrokeWidth(2);
            mPaintLine.setStrokeCap(Paint.Cap.ROUND);
            mPaintLine.setStyle(Paint.Style.STROKE);
        }
    }

    public void addWaveDataInVisiable(short[] waveData, int[] peakArray, int[] cycleArray) {
   
   
        if (peakArray != null
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值