V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hush
V2EX  ›  Android

Android 心电图绘制该如何实现啊

  •  
  •   hush · 2016-07-19 18:20:23 +08:00 · 12726 次点击
    这是一个创建于 3067 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT 。。之前使用的 MPAndroidChart 。可是测了 5 分钟的心电数据后,性能消耗的太多了,效果不理想。 现在用的是 SurfaceView ,可绘制第一屏之后,就顿感乏力啊,后续的显示就不清楚怎么实现了。 有人有好的方案么?求告知

    17 条回复    2016-07-20 20:55:08 +08:00
    shui14
        1
    shui14  
       2016-07-19 18:31:11 +08:00
    android 不是有 canvas 类 js 都可以绘折线图
    hush
        2
    hush  
    OP
       2016-07-19 18:39:02 +08:00 via Android
    @shui14 我第一屏实现没问题,主要是后续的移动
    huyanqi
        3
    huyanqi  
       2016-07-19 19:00:46 +08:00   ❤️ 1
    Chrisplus
        4
    Chrisplus  
       2016-07-19 19:16:39 +08:00
    用过 MPAndroidChart, 使用 Dynamic plot 几分钟过后确实 GC 很频繁.
    其实这种情况下,不考虑通用的图表功能, 应该自己写画图
    hush
        5
    hush  
    OP
       2016-07-19 19:23:49 +08:00
    @huyanqi 很谢谢啊,现在不知道能不能保留刷新,这个像是把内容清除之后再从头开始绘制,不知道能不能像医用的心电仪一样的显示
    hush
        6
    hush  
    OP
       2016-07-19 19:25:02 +08:00
    @Chrisplus 对的啊,我现在就在画图,不明白如何实现。。。有思路吗?
    huyanqi
        7
    huyanqi  
       2016-07-19 19:33:26 +08:00   ❤️ 1
    @hush 心电仪不是超出屏幕后从头绘制的么?
    hush
        8
    hush  
    OP
       2016-07-19 19:51:17 +08:00
    @huyanqi 吖···我们 IOS 是这样实现的,还以为他们是仿的心电仪呢。我现在网上视频找了下,是像你说的那样的。很感谢你哈~
    warcraft1236
        9
    warcraft1236  
       2016-07-20 10:15:57 +08:00
    目测医疗公司的员工
    inmyfree
        10
    inmyfree  
       2016-07-20 10:24:35 +08:00   ❤️ 1
    @hush 心电图没做过,只做过防 iphone 录音机的波形图,但是应该不难,原理就是先保存一个数组(如, 200 个点),用来存放一个屏幕大小的心跳值,第一次的时候从左往右绘制,等到绘制到 200 个点的时候,采集新点,先把之前的 0 值移除,后面 append 新值,然后重新从 0 开始绘制,这样基本就可以了

    优化手段可以从复用出发,把 1~200 的保存下来,然后移动到 0~199 上,再绘制 200 的坐标点,理论上是可以优化,但是没有去做过


    hush
        11
    hush  
    OP
       2016-07-20 11:46:41 +08:00
    @inmyfree 在屏幕上沒有點的時候是一个一个绘制出来,和我现在处理方法一致的;到了第二屏:之后的屏幕是不是每次都是画满屏的点,其中保留部分值和添加新点,再按一定的频率刷新。这样走出来的效果像是折线图在移动一样吗?优化方面:(1) 能不能像 SurfaceView 的 lockCanvas 一样只处理部分的点 ; (2) 或者是用 SurfaceView 的双缓存机制,提高绘制效果? 这 2 个方案的可行性哪个会比较大啊?
    hush
        12
    hush  
    OP
       2016-07-20 11:49:25 +08:00
    @inmyfree 另外, append 的方法是在哪里调用的?或者是一个比喻的?
    inmyfree
        13
    inmyfree  
       2016-07-20 12:55:43 +08:00
    @hush 1 , 2 都可以,只是我觉得这个没必要动用 SurfaceView ,直接继承 View 就可以了
    append 的意思就是我只保留 200 个点,每次更新的时候移除第一个点,添加一个新点,这样做一个周期
    调用的时间就是添加一个数据点时调用
    hush
        14
    hush  
    OP
       2016-07-20 13:41:39 +08:00
    @inmyfree 嗯,好的;第二屏之后的绘制就是把整合好的数据直接显示,通过不断的刷新来实现效果。像放电影一样,我要处理每一帧数据。
    andychen20121130
        15
    andychen20121130  
       2016-07-20 14:13:18 +08:00
    哥年前刚脱离苦海,不是说难,而是不用再耗下 去了。
    hush
        16
    hush  
    OP
       2016-07-20 14:25:07 +08:00
    @andychen20121130 哈,你最后是怎么处理的,我现在还要生成个.pdf 的心电报告,,,,我是不是要回头是岸啊
    qile1
        17
    qile1  
       2016-07-20 20:55:08 +08:00 via Android
    你们能给推荐一个有偿的网络版的心电系统,急需?
    非常感谢,短信我:186 四期二三二九一六
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1603 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 16:30 · PVG 00:30 · LAX 08:30 · JFK 11:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.