【问题标题】:Android to external bluetooth pollingAndroid到外部蓝牙轮询
【发布时间】:2010-11-09 09:15:24
【问题描述】:

我正在尝试给我的蓝牙加密狗发送脉冲,看看它是否在范围内。 我的 Android 每秒都会向加密狗发送一个 char,然后它会以一个 char 响应。如果没有响应,或者char错误,那么应该断定没有连接。

我能够从 Android 向加密狗(连接到 MCU)发送数据,并且加密狗能够响应。 我所需要的只是一种简单的方法来读取每个字符(收到时)以进行比较。我正在尝试在单独的线程中执行它以使其在自己的循环中运行。

到目前为止,这是我的代码,但我想我可能会离开,所以如果你能给我指点!

void readFromInputStream()
{ 
    Thread readFromInputStream = new Thread()
    {
        public void run()
        {

            String streng = "";

            try
            {
                //just 100 times for now
                for(int i = 0; i < 100; i++)
                {

                     BufferedReader in = new BufferedReader(new InputStreamReader(inStream));

                    if(in.read() == 'z')
                    {
                        //set variable or something
                    }
                    else
                    {
                        //do something else
                    }

                    writeTerminal('z');
                    sleep(1000);

                }

            }
            catch(Exception e)
            {
                Log.e("Threading", e.toString());
            }
            finally
      {
                finish();
      }
        }
    };
    readFromInputStream.start();
    }
}   

但似乎每次我尝试评估某些东西时它都会冻结!

【问题讨论】:

  • 抱歉,手头的问题我帮不上忙,但您可能希望在 Android 上使用轮询时要小心一点 - 您会耗尽电池电量,尤其是每 1 秒轮询一次。跨度>
  • 其实我宁愿避免轮询部分,但我希望断开蓝牙加密狗(不是安卓蓝牙)在尝试写入时会抛出异常,但似乎没有工作,所以我想出了投票解决方案....叹息!
  • 尝试进行设备发现/查询或远程名称请求以检查设备是否在范围内...
  • 听起来很合理,但是设备发现实在是太慢了……除非您可以通过某种方式询问某个设备是否存在,而不是搜索和过滤所有设备!。

标签: android multithreading bluetooth inputstream polling


【解决方案1】:

只需尝试连接到设备,如果连接通过,您就知道它存在,然后立即断开连接。

【讨论】:

  • 但我不是必须切换连接吗?到目前为止,我的解决方案是我发现我可以在异步线程中“发送垃圾邮件”连接。如果另一端没有设备,那么最终(大约 50 个字节后)“管道被破坏”(某种 outputStreamBuffer 溢出)......所以这就是我现在的解决方案。
  • 但是为了重新连接,我需要禁用/启用蓝牙,
  • 或者你认为我可以继续“恢复蓝牙”(即使已连接)然后在那里捕获异常?...如果出现异常则关闭连接?
  • 你能详细说明什么是“恢复蓝牙”吗?另外我想知道为什么您需要轮询设备接近度?只需在您想要的时候连接将确定设备是否存在它将连接,否则它将失败。
猜你喜欢
  • 2011-01-10
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
相关资源
最近更新 更多