使Android 2.1上的蓝牙无限期可被发现

时间:2010-07-06 22:12:19

标签: android bluetooth

我正在开展涉及蓝牙和Android操作系统的研究项目。我需要无限期地发现蓝牙,以便项目继续进行。

问题:

  • Android将发现限制为300秒。
  • 由于我的应用程序设计为在后台运行而不会打扰用户,因此我无法每隔300秒让用户重新开启可发现性。
  • 据我所知,没有办法通过Android的GUI增加时间。一些消息来源称这是一个安全功能,其他人称这是一个错误。两者都可能有一点道理......

我正在尝试/尝试过:

  • 我正在尝试编辑cyanogenmod的稳定版本以关闭可发现性计时器(这是可能的;有一个配置文件需要更改一个数字)。这不起作用,因为我对生成的包有验证问题。
  • 在过去的一周里,我下载了cyanogenmod source code,更改了一个相关的课程,希望它可以无限期地发现蓝牙,并试图recompile.这不起作用,因为(a)回购经常被改变,导致一个不稳定的代码库无法编译(或者,可能是我错误地使用它;只是因为在许多情况下它看起来像代码的错误并不意味着我应该责备它我遇到的所有问题!)和(b)repo决定定期“忽略”我(但总是,因为我之前已经获得了代码库!),回复我的同步/连接尝试有:
      

    致命:远程端意外挂断

正如您可能想象的那样,上述两个问题都存在问题,而且处理起来非常令人沮丧 更多信息:

  • 我通过cyanogenmod运行Android 2.1(我相信v5)。这意味着手机也已植根。
  • 我有一个开发者手机,这意味着引导程序已解锁。
  • 我的手机是HTC Magic(32B)。

大问题:

  • 如何在Android上无限期地发现蓝牙?

2 个答案:

答案 0 :(得分:8)

请参阅以下链接: http://developer.android.com/guide/topics/wireless/bluetooth.html#ConnectingDevices

具体而言,下段中的最后一句:

  

启用可发现性
  如果您想让本地设备可被其他设备发现,请使用startActivityForResult(Intent, int)操作意图调用ACTION_REQUEST_DISCOVERABLE。这将通过系统设置发出请求以启用可发现模式(不停止您的应用程序)。默认情况下,设备将在120秒内被发现。您可以通过添加EXTRA_DISCOVERABLE_DURATION Intent extra来定义不同的持续时间。应用可设置的最长持续时间为3600秒,值为0表示设备始终可被发现。

所以,这应该有效:

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

答案 1 :(得分:0)

如果您查看the BluetoothAdapter class

你会发现隐藏的方法:

public void setDiscoverableTimeout(int timeout)

现在你只需要了解如何使用它。您必须执行方法调用才能执行此操作。