我希望我的蓝牙在应用程序运行之前可见。喜欢无限的时间。我完成它后会关掉它。
我不希望它向用户询问可见性的持续时间,如以下方法
Intent discoverableIntent = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
startActivity(discoverableIntent);
请帮忙!
答案 0 :(得分:4)
简短的回答是你做不到;见this bug report。相信我,我和你一样恼火;它使蓝牙上的ad-hoc网络非常困难。在那个帖子上有一些建议说,Honeycomb的限制已经消失,也许会让它成为冰淇淋三明治。目前,除了安装自定义ROM之外,没有办法解决它。
据说,有一些解决方法。由于Android需要在任何蓝牙插槽(服务器或客户端)发送数据之前进行配对,因此您的应用只需尝试连接已配对的设备即可。当然,大多数情况下连接都会失败,但如果配对设备在范围内,则会发生连接。我已经在我的应用程序中实现了它,它似乎工作。我不确定这会如何影响电池寿命,但如果扫描之间有足够的时间,你应该没问题。
我希望Android的未来版本不会有这种不必要的限制,因为它会阻止一些可能有趣的ad-hoc网络应用程序。
答案 1 :(得分:1)
我很困惑,因为在Android Dev Guide上,有以下说法:
[..]默认情况下,设备将在120秒内被发现。 您可以通过添加来定义不同的持续时间 EXTRA_DISCOVERABLE_DURATION意图额外。应用的最长持续时间 可设置为3600秒,,值为0表示设备始终为 可发现即可。低于0或高于3600的任何值都将自动设置 到120秒)。例如,此代码段将持续时间设置为300。[..]
这不是我们正在寻找的功能吗?
答案 2 :(得分:-1)
有一个原因是你无法将蓝牙设置为始终打开 - 电池会快速耗尽。我建议您考虑另一种解决问题的方法。