[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!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...