当前位置
主页 > SDK中心 > Android

Android

集成准备

获取AppKey

集成心电SDK之前,您首先需要到创越官网注册并且添加新应用,获得secureKey。
特别提醒 :我们建议开发者在注册账号时使用企业邮箱,避免使用个人邮箱注册,防止由于个人离职带来的问题,建议使用的账号形式如:ecg@企业域名、apps@企业域名、dev@企业域名。

版本支持

SDK android framework version

 minSdkVersion 19
 supportVersion 28.0.0

集成方式

自动集成

  • 在project级的build.gradle 文件下添加

    repositories {
        maven {
            url 'http://sdk.creyond.com:8100/nexus/content/repositories/android/'
        }
    
    }
  • 在module级的build.gradle 文件下添加

  implementation "com.creyond:EcgSdk:1.0.0"

权限授予

心电SDK使用前需要宿主APP授予如下权限:

权限 用途
BLUETOOTH_ADMIN(必须) 扫描链接设备权限。
BLUETOOTH(必须) 扫描链接设备权限。
ACCESSCOARSELOCATION(必须) 扫描设备权限。
ACCESSFINELOCATION(可选) 扫描设备权限

初始化

在使用SDK功能之前调用初始化代码 (设置运动患者信息以提高分析精确度) 必须确保初始化成功再使用SDK的功能

  Verify.Builder builder = new Verify.Builder("666666", "xiaoming")
                .age(26)
                .height(178)
                .phone("1800989098")
                .sex(Verify.Sex.MAN)
                .weight(60)
                .turnDistance(30);
  EcgSDK.init(this, builder.build(), new EcgSDK.CallBack() {
            @Override
            public void success() {

            }

            @Override
            public void error(ErrorMsg errorMsg) {

            }
        });

功能使用

扫描心电设备

Bluetooth.scan( new Bluetooth.ScanListener() {
            @Override
            public void findOne(Device device) {
               //todo 扫描到了一个心电设备
            }

            @Override
            public void startScan() {
                //todo 开始搜索
            }

            @Override
            public void scanFail(String msg) {
                //todo 扫描失败 原因为:msg            }

            @Override
            public void scanFinished() {
                //todo 扫描结束            }

        });

获取心电数据并展示心电图

  • 添加控件到布局
    <com.creyond.support.ui.gl20.EcgGL20View
                android:id="@+id/ecg_view"
                android:layout_width="match_parent"
                android:layout_centerInParent="true"
                android:layout_height="150dp"/>
  • 回调在子线程
String mac =device.getMac();
EcgGL20View ecg_view;
TextView tv_state;
EcgDisplayer ecgDisplayer;

private void watch(final Device device) {
         ecgDisplayer = new EcgDisplayer.Builder(device.getMac(), ecg_view)
                .turnDistance(30)
                .newDisplayer();
        device.watch( new WatchListener() {
            @Override
            public void accept(byte[] bytes) {
               //todo 原始设备心电数据
               ecgDisplayer.capture(bytes, null);
            }
        
            @Override
            public void connected() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        tv_state.setText("连接成功 mac:" + device.getMac());
                    }
                });
            }

            @Override
            public void start() {
            }

            @Override
            public void fail(final String msg) {
            }

            @Override
            public void disConnected() {
            }
        });
    }
     @Override
    protected void onResume() {
        super.onResume();

        ecg_view.resume();
    }


    @Override
    protected void onPause() {
        super.onPause();
        ecg_view.pause();
    }

开始运动前调用

ecgDisplayer.startRecord();

获取实时心电数据分析结果

 ecgDisplayer.capture(bytes, new CaptureCallback() {
                    @Override
                    public void result(Result result) {
                        updateInfo(result);
                    }
                });

心电回放

  • 添加控件到布局
        <FrameLayout android:layout_width="match_parent"
                 android:layout_height="wrap_content">
        <com.creyond.support.ui.playback.EcgPlaybackView
                android:id="@+id/ecg_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
        <SeekBar android:layout_width="match_parent"
                 android:id="@+id/seek_bar"
                 android:layout_gravity="bottom"
                 android:layout_height="10dp"/>
    </FrameLayout>
  • 心电图回放
     SeekBar seek_bar;
     EcgPlaybackView ecg_view;
     Playbacker playbacker;
     
     String path = ecgDisplayer.getRecordPath();
        File file = new File(path);
        if (!file.exists() || file.length() == 0) {
            Toast.makeText(this, "文件不存在或文件大小为0", Toast.LENGTH_LONG).show();
            finish();
        }
        seek_bar.setMax(playbacker.getTotalPoints());
        seek_bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                playbacker.seek(progress);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

API

Result

字段 描述
getMotionStateDes() 当前状态
getBat() 设备电量
getStepCount() 步数
getStepRate() 步频
getHeartRate() 心率
getMetArr() 代谢当量
getRR() RR间期
getRP() 节律比例

Processor.Builder

字段 描述
turnDistance() 转身距离(M)
height() 身高 (cm)
weight() 体重(kg)
age() 年龄