bluetooth app-jni-hal

本文详细探讨了Android中蓝牙开启的流程,从Settings应用到底层HAL的交互,涉及BluetoothSettings.java、LocalBluetoothAdapter.java、BluetoothAdapter.java等多个关键组件,以及JNI和HAL接口的调用,如initNative函数和btif_dm.c中的adapter_properties_cb回调。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

packages\apps\Settings\src\com\android\settings\bluetooth\BluetoothSettings.java

SwitchBar    BluetoothEnabler   开关

 

frameworks\base\packages\SettingsLib\src\com\android\settingslib\bluetooth\LocalBluetoothAdapter.java

setBluetoothEnabled

 

frameworks\base\core\java\android\bluetooth\BluetoothAdapter.java

enable()

 

frameworks\base\services\core\java\com\android\server\BluetoothManagerService.java

 

packages\apps\Bluetooth\src\com\android\bluetooth\btservice\AdapterService.java

private static class AdapterServiceBinder extends IBluetooth.Stub {

 

 

packages\apps\Bluetooth\jni\com_android_bluetooth_btservice_AdapterService.cpp

static bool initNative(JNIEnv* env, jobject obj) {

    int ret = sBluetoothInterface->init(&sBluetoothCallbacks);

}

 

 

 

static bt_callbacks_t sBluetoothCallbacks = {
    sizeof(sBluetoothCallbacks),
    adapter_state_change_callback,
    adapter_properties_callback,
    remote_device_properties_callback,
    device_found_callback,
    discovery_state_changed_callback,
    pin_request_callback,
    ssp_request_callback,
    bond_state_changed_callback,
    acl_state_changed_callback,
    callback_thread_event,
    dut_mode_recv_callback,
    le_test_mode_recv_callback,
    energy_info_recv_callback,
    NULL
};

sJniAdapterServiceObj  ==  AdapterService.this

sJniCallbacksObj == AdapterService.mJniCallbacks

 

system\bt\btif\include\btif_dm.c

HAL_CBACK(bt_hal_cbacks, adapter_properties_cb, BT_STATUS_SUCCESS, 1, &prop);

.....

 

 

//sBluetoothInterface === system\bt\btif\src\bluetooth.c

BT_HARDWARE_MODULE_ID

static int init(bt_callbacks_t *callbacks) {

   stack_manager_get_interface()->init_stack();

}

 

system/bt/btif/src/stack_manager.c

static const stack_manager_t interface = {
  init_stack,
  start_up_stack_async,
  shut_down_stack_async,
  clean_up_stack,

  get_stack_is_running
};

btif_init_bluetooth();

Android BlueDroid(二):BlueDroid蓝牙开启过程init

http://blog.youkuaiyun.com/xubin341719/article/details/40393285

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值