想要在应用运行之前始终可以看到Android蓝牙吗?

时间:2011-07-28 09:40:50

标签: android bluetooth

我希望我的蓝牙在应用程序运行之前可见。喜欢无限的时间。我完成它后会关掉它。

我不希望它向用户询问可见性的持续时间,如以下方法

  Intent discoverableIntent = new
  Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
  discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
  startActivity(discoverableIntent);

请帮忙!

3 个答案:

答案 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)

有一个原因是你无法将蓝牙设置为始终打开 - 电池会快速耗尽。我建议您考虑另一种解决问题的方法。