Android每秒或更短时间向obd发送命令以获取实时数据

Android每秒或更短时间向obd发送命令以获取实时数据,android,bluetooth,obd-ii,Android,Bluetooth,Obd Ii,目前,我的应用程序有一个聊天功能,可以通过蓝牙与车内的车载诊断端口进行通信 现在我想升级我的项目以获得实时信息,所以我想创建一个方法,该方法使用命令列表重复某些数组,并每秒或500毫秒重复sendMessage(消息)(用于实时数据) 有什么好办法吗 我用4EditText显示数据的活动和一个带有“开始扫描”的按钮,如果按下它,它将变成“停止扫描”,并中断无限循环的命令 同时,我需要收回数据并在EditText中显示结果 编辑 或者只需使用AlarmManager 编辑2 此代码无法正常工作,因

目前,我的应用程序有一个聊天功能,可以通过蓝牙与车内的车载诊断端口进行通信

现在我想升级我的项目以获得实时信息,所以我想创建一个方法,该方法使用命令列表重复某些数组,并每秒或500毫秒重复sendMessage(消息)(用于实时数据)

有什么好办法吗

我用4
EditText
显示数据的活动和一个带有“开始扫描”的
按钮,如果按下它,它将变成“停止扫描”,并中断无限循环的命令

同时,我需要收回数据并在
EditText
中显示结果

编辑 或者只需使用
AlarmManager

编辑2 此代码无法正常工作,因为仅在5秒后发送第一条消息,第二条消息丢失。。。 如何将所有命令发送到ArrayList中,每t毫秒一次发送一个命令

public void repeatCommand(){


        for (final String command : commandArray){

            final Handler handlerTimed = new Handler();
            handlerTimed.postDelayed(new Runnable() {
                @Override
                public void run() {
                    //Do something after 100ms
                    sendMessage(command);
                }
            }, 5000);


        }

        /*String message = "010C\r";
        sendMessage(message);*/
    }

对不起,我很久没有写android代码了,但我很久以前就有你的案例了

你必须定义一个
服务
,在前台用RETURN\u STICKY启动它,然后用定时器编写一个处理程序,每秒执行你的代码(或者你喜欢的)。然后,您可以广播您的结果或您希望如何与您的活动进行沟通并使用它

然后启动服务,并用按钮停止

附言: 1.据我所知,在这种情况下,
alarmManager
不是一个好主意

  • 不知何故,你必须确保你的
    服务
    不会被android杀死

  • 对不起,我很久没有写android代码了,但我很久以前就有你的案例了

    你必须定义一个
    服务
    ,在前台用RETURN\u STICKY启动它,然后用定时器编写一个处理程序,每秒执行你的代码(或者你喜欢的)。然后,您可以广播您的结果或您希望如何与您的活动进行沟通并使用它

    然后启动服务,并用按钮停止

    附言: 1.据我所知,在这种情况下,
    alarmManager
    不是一个好主意

  • 不知何故,你必须确保你的
    服务
    不会被android杀死

  • 因此,使用该服务,我管理数据交换,当从obd取回数据时,我将结果(可能格式化为人类可读的结果)发送到活动,并通过广播取回数据?有人(或你)可以帮我写一些代码吗?嘿,我现在没有任何代码。明天我会在这里写一些代码。无论如何,正如我所说的,所有OBD通信必须在一个服务中。OBD Servic应该获取OBD数据并进行广播(甚至您可以定义一个接口并在不广播的情况下进行广播!)。然后任何需要这些数据的活动都可以得到广播。关于这一点,我用一些代码更新了问题……但不是像我想的那样工作。因此,我管理数据交换的服务,当从obd取回数据时,我将结果(可能格式化为人类可读的结果)发送到活动,并用广播取回?有人(或你)可以帮我写一些代码吗?嘿,我现在没有任何代码。明天我会在这里写一些代码。无论如何,正如我所说的,所有OBD通信必须在一个服务中。OBD Servic应该获取OBD数据并进行广播(甚至您可以定义一个接口并在不广播的情况下进行广播!)。然后任何需要这些数据的活动都可以得到广播。关于这一点,我用一些代码更新了这个问题…但并没有像我想的那样工作,我不知道!?也许你在寻找每n秒执行一次命令的计时器?我不知道!?也许您正在寻找每n秒执行一次命令的计时器?