Android 两个Activity实时传输数据并绘图

蓝牙传输数据,接收后处理,然后绘出该点
首先两个Activity A和B,A中接收到数据,B中处理数据并绘图
先创建event 接口

package com.usr.usrs;

public interface Event {
        public void onSomthingHappend(String msg);
}

再创建EventManager类

package com.usr.usrs;

public class EventManager {
    private static Event mEvent;

    public static void setEventListener(Event ms) {
        mEvent = ms;
    }

    public static void raiseEvent(String msg){
        mEvent.onSomthingHappend(msg);
    }


}

上面两个是用来实现A与B数据的传输,然后再A中启动B,通过代码将数据传递EventManager.raiseEvent(ms);
之后在B中

EventManager.setEventListener(event);//绑定事件用来获取传递的数据

并实现接口

private Event event = new Event() {
        @Override
        public void onSomthingHappend(String msg) {
        //这里通过对该方法的重写,对数据进行处理
        int data = Integer.parseInt(msg);//举个例子,将其转换成int型
        addEntry(data)//调用画图函数,画出该点
        }

其中画图函数addEntry,是利用MPAndroidChart进行绘制,参考博客https://blog.csdn.net/zhangphil/article/details/50185115
在函数addEntry()中作了修改,这篇博客中的代码添加数据后缺少了更新图表的代码

        private void addEntry(int f) {

            LineData data = mChart.getData();

            // 每一个LineDataSet代表一条线,每张统计图表可以同时存在若干个统计折线,这些折线像数组一样从0开始下标。
            // 本例只有一个,那么就是第0条折线
            LineDataSet set = (LineDataSet) data.getDataSetByIndex(0);

            // 如果该统计折线图还没有数据集,则创建一条出来,如果有则跳过此处代码。
            if (set == null) {
                set = createLineDataSet();
                data.addDataSet(set);
            }

            // 先添加一个x坐标轴的值
            // 因为是从0开始,data.getXValCount()每次返回的总是全部x坐标轴上总数量,所以不必多此一举的加1

            // 生成随机测试数
            //float f = (float) ((Math.random()) * 20 );

            // set.getEntryCount()获得的是所有统计图表上的数据点总量,
            // 如从0开始一样的数组下标,那么不必多次一举的加1
            Entry entry = new Entry(set.getEntryCount(),f);

            // 往linedata里面添加点。注意:addentry的第二个参数即代表折线的下标索引。
            // 因为本例只有一个统计折线,那么就是第一个,其下标为0.
            // 如果同一张统计图表中存在若干条统计折线,那么必须分清是针对哪一条(依据下标索引)统计折线添加。
            data.addEntry(entry, 0);

            // 像ListView那样的通知数据更新
            mChart.notifyDataSetChanged();

            // 当前统计图表中最多在x轴坐标线上显示的总量
            //mChart.setVisibleXRangeMaximum();
            mChart.invalidate();//更新图表

            // y坐标轴线最大值
            // mChart.setVisibleYRange(30, AxisDependency.LEFT);

            // 将坐标移动到最新
            // 此代码将刷新图表的绘图
            //mChart.moveViewToX(data.getXValCount() - 5);

            // mChart.moveViewTo(data.getXValCount()-7, 55f,
            // AxisDependency.LEFT);
        }

你可能感兴趣的:(Android 两个Activity实时传输数据并绘图)