use*_*854 5 reflection android bluetooth headset
我需要检查OS 2.0  -  2.3中当前连接的BT耳机(不仅仅是配对).在引入蓝牙耳机类的API版本11之前,此类功能不存在.但是在先前的API中已经存在一个名为BluetoothHeadset的类,但它不能公开访问.这是它的文档:http://www.kiwidoc.com/java/l/x/android/android/9/p/android.bluetooth/c/BluetoothHeadset.所以,我试图使用反射来调用"isConnected"方法,但我在反射时非常可怕,而且我收到了一个错误java.lang.IllegalArgumentException: object is not an instance of the class.
我得到了一个使用配对设备的列表BluetoothDevice.getBondedDevices(),我尝试isConnected()在每个设备上使用该方法.这是代码:
public boolean isBtDevConnected(BluetoothDevice btDev){
    boolean connected  = false;
    try {
        Class<?> BTHeadset = Class.forName("android.bluetooth.BluetoothHeadset");
        Method isConnected = BTHeadset.getMethod("isConnected", new Class[] {BluetoothDevice.class});
                connected = isConnected.invoke(BTHeadset, new Object[] {btDev});
            }
        }
    } catch (Exception e) {
        WriteToLog(e);
    }
    return connected;
}
我在调用该方法的行上得到了异常,但我不确定我做错了什么.
BluetoothHeadset是一个代理对象,用于通过IPC控制蓝牙耳机服务。
使用 getProfileProxy(Context, BluetoothProfile.ServiceListener, int) 获取 BluetoothHeadset 代理对象。使用 closeProfileProxy(int, BluetoothProfile) 关闭服务连接。
Android 一次仅支持一只连接的蓝牙耳机。每个方法都受到其适当权限的保护。
来源:http ://developer.android.com/reference/android/bluetooth/BluetoothHeadset.html
| 归档时间: | 
 | 
| 查看次数: | 3841 次 | 
| 最近记录: |