如何检测Android中的BT耳机或有线耳机

时间:2012-11-02 10:57:20

标签: android android-emulator bluetooth android-audiomanager

在我的应用程序中,我想检测Android中的BT耳机或有线耳机。 我从此链接中引用http://developer.android.com/guide/topics/connectivity/bluetooth.html代码。 他们提到只有3.0及以上版本的android才能支持BluetoothHeadset和BluetoothProfile类。这有助于检测BT耳机。现在我想在2.2(froyo)中使用相同的功能。所以,任何人都可以告诉我如何做同样的事情?

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以通过Reflection使用2.2 API中的3.0 API。但这可能会导致您的应用在某些情况下无法正常工作,对于某些设备会出现无法预测的行为等。

如果你还想尝试,请看这里:

How to use BluetoothHeadset class via reflection

简要说明:

名称反射用于描述能够检查同一系统(或其自身)中的其他代码的代码。

例如,假设您在Java中有一个未知类型的对象,并且您希望在其上调用“doSomething”方法(如果存在)。 Java的静态类型系统并不是真的设计为支持这个,除非对象符合已知的接口,但使用反射,你的代码可以查看对象并找出它是否有一个名为'doSomething'的方法,然后调用它如果你愿意的话。

所以,在Java中给你一个代码示例(假设有问题的对象是foo):

Method method = foo.getClass().getMethod("doSomething", null);
method.invoke(foo, null);

在上面的示例中,作者试图检测是否存在某些蓝牙类和方法以使检测工作。如果存在,则使用它们。如果没有,那么您的代码必须通过通知用户或适合您的应用的其他适当机制来处理这种情况。