- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有谁知道如何在使用任意声明的服务名称时在 API 级别 2.3.3 的 2 台 Android 设备之间创建不安全的 RFCOMM 连接?(不是随机的或更改的服务名称,只是一个服务名称我自己定义)
我正在尝试在 2 个 Android 设备之间创建不安全的 Rfcomm 连接:Droid X2 和 Asus Transformer。我假设这两种设备都具有 Android 2.3.3 级别的功能,以实际获得使用不安全 Rfcomm 的能力。
当我尝试按照描述创建蓝牙连接时 here ,使用现在公开的 createInsecureRfcommSocketToServiceRecord() 和 listenUsingInsecureRfcommWithServiceRecord(SERVICE, UUID),我得到一个报告:
java.io.IOException: Service discovery failed
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:377)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:201)
at com.s4d.bluenomad.DeviceConnections$ClientThread.run(DeviceConnections.java:406)
我找到了一个 related question创建普通连接的人收到此错误并使用反射调用私有(private)方法。但是,我不知道什么私有(private)方法现在对应于启动“不安全”连接。我尝试使用该相关问题中提出的解决方案,但 Android 要求我配对设备,这正是我需要避免的。我确实需要不安全的方法。
我什至尝试了概述的官方和黑客解决方案的组合 here
创建 ServerThread 以监听连接
Log.i(TAG, "Constructing a ServerThread");
// Use a temporary object that is later assigned to serverSocket,
// because serverSocket is final
BluetoothServerSocket tmp = null;
try {
// MY_UUID is the app's UUID string, also used by the client code
tmp = btAdapter.listenUsingInsecureRfcommWithServiceRecord(SERVICE_NAME, SERVICE_UUID);
Log.i(TAG,"Started listening on insecure RFCOMM channel for service requests for: " + SERVICE_NAME);
} catch (IOException e) { }
serverSocket = tmp;
ServerThread 监听连接
BluetoothSocket socket;
while(true)
{
try
{
socket = serverSocket.accept();
}
catch( IOException e)
{
break;
}
if( socket != null )
{
Log.i(TAG, "Received new socket connection requesting service: " + SERVICE_NAME);
}
else
{
Log.i(TAG, "Socket connection attempted, but socket received is NULL.");
}
}
创建 ClientThread 以启动连接
Log.i(TAG, "Constructing a ClientThread");
BluetoothSocket tmp = null;
try {
// MY_UUID is the app's UUID string, also used by the server code
tmp = device.createInsecureRfcommSocketToServiceRecord(SERVICE_UUID);
Log.i(TAG,"Created client socket on insecure RFCOMM channel for service requests for: " + SERVICE_NAME);
}
catch (IOException e)
{
Log.i(TAG, "Failed to createInsecureRfcommSocket() against MAC: " + device.getAddress());
}
clientSocket = tmp;
ClientThread 连接到服务器
try
{
clientSocket.connect();
}
catch( final IOException e)
{
DeviceConnections.this.runOnUiThread(new Runnable()
{
@Override
public void run()
{
console.append("Client unable to connect to service.");
Log.i(TAG, "Client socket unable to connect() to: " + clientSocket.getRemoteDevice().getAddress());
e.printStackTrace();
}
});
}
我确实得到了日志输出“客户端套接字无法连接()到:[MY_MAC_ADDRESS]”,然后我得到了“服务发现失败”异常的堆栈跟踪。
最佳答案
看来问题是在我打电话之前
clientSocket.connect()
我需要打电话
btAdapter.cancelDiscovery()
我曾在文档中看到过此问题,但它被列为“性能”问题 - 在我的案例中,这似乎实际上是一个“功能”问题。添加取消发现调用后,套接字连接立即生效。
关于android - 来自 Android 蓝牙不安全 Rfcomm 的 "Service discovery failed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8515572/
我刚刚去了 Bluemix,看到有一个名为 Discovery 的新实验服务。显然,它可以提取 PDF、Word 文档和 HTML 页面以及其他文件类型。 该服务与文档转换 (DC) 有何区别?以前,
我刚刚去了 Bluemix,看到有一个名为 Discovery 的新实验服务。显然,它可以提取 PDF、Word 文档和 HTML 页面以及其他文件类型。 该服务与文档转换 (DC) 有何区别?以前,
Closed. This question is off-topic。它当前不接受答案。 想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。 已关闭8
我试图让 usart 在我的 stm32f0-discovery 上工作,但现在我发现关于这个的文档有点“缺乏”,所以有没有人有任何 usart 为 stm32f050 工作的例子? 谢谢。 巴特特尼
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
如果我能在我的项目中实现长按和短按按钮,它会派上用场。我正在使用 STM32F4 探索套件并在 C 中对其进行编程。我准备了一个引脚作为外部输入,我修改了中断处理程序。 架构: 我暂时将其设置为在下降
我让 Prometheus 在 AWS 上的 K8 中运行,并使用服务发现来获取有关我的基础设施的信息。 我已经能够使用服务发现来检索指标和节点的目标标签,但是我显示的是 0/17 个事件目标 pod
我让 Prometheus 在 AWS 上的 K8 中运行,并使用服务发现来获取有关我的基础设施的信息。 我已经能够使用服务发现来检索指标和节点的目标标签,但是我显示的是 0/17 个事件目标 pod
在 CloudFoundry 中,您可以通过在发现服务中注册其他微服务并按其名称查询它们来访问它们。但是您也可以设置一个路由(“子域”),您可以从中调用该服务,这似乎更容易处理。在这两种情况下都可以使
我是 Stack Exchange 社区的新手。我正在尝试在两个线程之间共享字符串的值。部分代码如下所示。 waveplayer.c 和 main.c 的内容均声明为线程。并且字符串buffer1需要
我是 Android 编程的新手。我想制作一个包含蓝牙发现功能的库(一个 JAR 文件)。 既然是库,里面的方法应该是顺序方法(启动蓝牙发现,等待一段时间,返回结果)。 我在下面做了一个代码,但它不起
我将 elastichsearch 部署到我的 AWS EKS 以进行日志记录,使用 stable/elasticsearch 图表,使用以下命令: helm install stable/elast
我最近购买了一个 STM32 Value line 探索套件,用于与 STM32 设备配合使用。我现在正在做一个需要看门狗的项目。在STM32中称为IWDG。但我的问题是当触发看门狗时我需要一个 IS
在下面的代码中,我可以看到定时器工作正常,因为 LED 一直在闪烁。但是 count 变量的值在第二个 while 内永远不会改变。 我不知道可能会出现什么问题? // count variable
在 IAR 编译器上开发 STM32L151xx。 我正在尝试获取 EXTI 中断但无处可去,这是我的代码,它基本上直接来自示例代码但无法正常工作, EXTI_InitTypeDef EXTI_I
我刚刚在 Apple 的网站上发现了 Widget Builder [ https://widgets.itunes.apple.com/builder/]我正在尝试在我雇主的网站上实现它。它基本上是
前言 在之前的 Laravel 版本中,安装包通常需要几个步骤,例如添加服务提供器到 app 配置文件并注册相关的 facades。现在,从 Laravel 5.5 开始,Laravel 可以自动
这个服务现在用到是非常少的,小编建议大家改为手动使用,这样当我们需要使用它的时候也能使用它,如果你电脑发现这个服务对应的svchost.exe进程使用的CPU非常,可以关闭它,但是不建议直接永久禁用
本文整理了Java中com.netflix.discovery.converters.XmlXStream类的一些代码示例,展示了XmlXStream类的具体用法。这些代码示例主要来源于Github/
本文整理了Java中org.openid4java.discovery.yadis.YadisResolver类的一些代码示例,展示了YadisResolver类的具体用法。这些代码示例主要来源于Gi
我是一名优秀的程序员,十分优秀!