[Android源码分析]蓝牙打开分析--苦尽甘来之再次回到jni之上

  次阅读 来源:互联网(转载协议) 2015-09-28 16:00 我要评论(0)

第三章,苦尽甘来之再次回到jni之上

经过了上面两章的分析,我们基本已经对一次的“下乡活动”了解清楚了,下面我们就要详细分析再次回到jni之上的一些操作了。再这之前,我们先来看看这次下乡活动从乡下都带来了什么?

其实很少蛮清晰的,就是带回来了几个property change的event,他们分别是UUIDs,pairable=false,powered=false,class, discoverable=false。我们来看一下,他们对上层都有哪些影响。

eventloop中对property change的处理函数是:

/*package*/ void onPropertyChanged(String[] propValues) {

所以,我们要分析各个propertychange的影响分析这个函数就可以了。下面,我们来具体分析这些property change的影响:

1、UUIDs的处理

[cpp]

} else if (name.equals("Devices") || name.equals("UUIDs")) {

String value = null;

int len = Integer.valueOf(propValues[1]);

if (len > 0) {

StringBuilder str = new StringBuilder();

for (int i = 2; i < propValues.length; i++) {

str.append(propValues[i]);

str.append(",");

}

value = str.toString();

}

//加入到property中,把UUIDs和对应的value保存

adapterProperties.setProperty(name, value);

if (name.equals("UUIDs")) {

//若是uuid,这个函数是很重要的

mBluetoothService.updateBluetoothState(value);

}

1.2 mBluetoothService.updateBluetoothState(value)函数分析

[cpp]

/*package*/ synchronized void updateBluetoothState(String uuids) {

ParcelUuid[] adapterUuids = convertStringToParcelUuid(uuids);

//当uuid都被注册成功之后,就可以发送SERVICE_RECORD_LOADED的msg了

if (mAdapterUuids != null &&

BluetoothUuid.containsAllUuids(adapterUuids, mAdapterUuids)) {

mBluetoothState.sendMessage(BluetoothAdapterStateMachine.SERVICE_RECORD_LOADED);

}

}

所以,UUIDs的property change的最终目的就是发送SERVICE_RECORD_LOADED的msg,这个msg是从warmup到hotoff的关键条件,这个我们在蓝牙的状态机里面有详细分析,不过,我们不妨在这里也再次分析一下:

[cpp]

switch(message.what) {

case SERVICE_RECORD_LOADED:

removeMessages(PREPARE_BLUETOOTH_TIMEOUT);

//转换到hotoff的状态

transitionTo(mHotOff);

break;

到了hotoff状态之后,我们需要继续处理在poweroff状态中传入的turnon continue的msg:

case TURN_ON_CONTINUE:

//这个就是设置powered为true

mBluetoothService.switchConnectable(true);

transitionTo(mSwitching);

break;

//从注释来看,这里是用来设置connectable和pairable的,又要到jni层之下,不过我们直接去看吧,就没有必要再分开分析了。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...