Android 框架为 HFP 提供了很好的支持。
- AG角色:蓝牙耳机。大多数手机充当AG角色,手机应用会调用BluetoothHeadset API充当AG角色。默认情况下启用此配置文件。
- HF 角色:BluetoothHeadsetClient。此 API 已隐藏,第三方应用无法使用。对于大多数手机,没有任何应用程序可以作为 HF 角色处理。所以你需要开发一个APP来做到这一点。和安卓汽车一样,它可以充当HF角色来连接手机。AOSP CarSystemUI有一个例子。默认情况下禁用此配置文件。您应该通过覆盖profile_supported_hfpclient来启用此配置文件。
至于如何扮演 HF 角色:
- 连接到 HFP 配置文件,获取 BluetoothHeadsetClient:
private BluetoothHeadsetClient mBluetoothHeadsetClient;
private final ServiceListener mHfpServiceListener = new ServiceListener() {
@Override
public void onServiceConnected(int profile, BluetoothProfile proxy) {
if (profile == BluetoothProfile.HEADSET_CLIENT) {
mBluetoothHeadsetClient = (BluetoothHeadsetClient) proxy;
}
}
@Override
public void onServiceDisconnected(int profile) {
if (profile == BluetoothProfile.HEADSET_CLIENT) {
mBluetoothHeadsetClient = null;
}
}
};
mAdapter.getProfileProxy(context.getApplicationContext(), mHfpServiceListener,
BluetoothProfile.HEADSET_CLIENT);
mBluetoothHeadsetClient.connect(remoteDevice)
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothHeadsetClient.ACTION_CONNECTION_STATE_CHANGED);
filter.addAction(BluetoothHeadsetClient.ACTION_AG_EVENT);
mContext.registerReceiver(this, filter);
filter.addAction(BluetoothHeadsetClient.ACTION_CALL_CHANGED);
mContext.registerReceiver(this, filter);
mBluetoothHeadsetClient.dail
mBluetoothHeadsetClient.acceptCall
mBluetoothHeadsetClient.sendVendorAtCommand
Android 提供高级 API,您无需发送 AT 命令即可接受调用。