Android 蓝牙4.0代码解析

0,通俗易懂  粗暴的解释Android与蓝牙Ble之间的通信 - android小草 - 博客园

1,Activiy的生命周期

Activity生命周期

2,Android中的onActivityResult和setResult方法,Intent的使用 :

【已解决】Android的蓝牙实例代码中找不到REQUEST_ENABLE_BT  看完下面的内容就理解这儿了。Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);

//ACTION_REQUEST_ENABLE:Show a system activity that allows the user to turn on Bluetooth.

startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);

//REQUEST_ENABLE_BT:requestCode自己定义,>0即可,解释见下面

在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult。

requestCode 和 resultCode都是返回提出请求的MainActivity结果处理函数onActivityResult()使用的标识,只是requestCode 主要用来标识是MainActivity也就是请求Activity发出的哪个请求,而resultCode则是标识哪个Activity处理并返回的请求。

Intent intent = new Intent(本窗体.this, 跳转的目的窗体.class);

<1>startActivityForResult(Intent intent, int requestCode);

第一个参数:一个Intent对象

第二个参数:如果> = 0,当Activity结束时requestCode将归还在onActivityResult()中。以便确定返回的数据是从哪个Activity中返回

代码写在旧窗体,在旧窗体里new 2个Intent(目的窗体时2个不同的新窗体),requestCode用来区分是向哪个新窗体传消息,当离开旧窗体切换到新窗体时消息显示在新窗体中。新窗体通过Intent EarthIntent = getIntent();String EarthMessage = EarthIntent.getStringExtra("FromEarth");textView.setText(EarthMessage);3句把信息显示在新窗体。

<2>setResult(int resultCode, Intent data)

调用这个方法把Activity想要返回的数据返回到父Activity

第一个参数:当Activity结束时resultCode将归还在onActivityResult()中,一般为RESULT_CANCELED , RESULT_OK。

第二个参数:一个Intent对象,返回给父Activity的数据。

代码写在新窗体,在新窗体里new 1个Intent(目的窗体是旧窗体),把返回信息存入Intent对象,setResult把通过这个Intent对象把信息传给旧窗体。

<3>onActivityResult(int requestCode, int resultCode, Intent data)

第一个参数:这个整数requestCode提供给onActivityResult,是以便确认返回的数据是从哪个Activity返回的。

这个requestCode和startActivityForResult中的requestCode相对应。

第二个参数:这整数resultCode是由子Activity通过其setResult()方法返回。

第三个参数:一个Intent对象,带有返回的数据。

总结:旧窗体通过startActivityForResult(intent, requestCode)方法的requestCode来标识信息(intent中)传给2个不同的新窗体,信息在新窗体中显示;新窗体在自己的窗体类中用setResult(RESULT_OK, intent)方法把信息(intent中)传回旧窗体,旧窗体怎么知道是哪个新窗体的信息哪?在回掉函数onActivityResult(int requestCode, int resultCode, Intent data)中根据requestCode取不同的新窗体传过来的信息进行显示。

Android进阶2之Activity之间数据交流(onActivityResult的用法) - 落日小屋 - 博客频道 - CSDN.NET  例子更形象、清晰

总结:调用startActivityForResult,onActivityResult无响应的问题_雨点点_新浪博客

3,BindService和Started Service都是Service,有什么地方不一样呢:

(1). Started Service中使用StartService()方法来进行方法的调用,调用者和服务之间没有联系,即使调用者退出了,服务依然在进行【onCreate()-  >onStartCommand()->startService()->onDestroy()】,注意其中没有onStart(),主要是被onStartCommand()方法给取代了,onStart方法不推荐使用了。

(2). BindService中使用bindService()方法来绑定服务,调用者和绑定者绑在一起,调用者一旦退出服务也就终止了【onCreate()->onBind()->onUnbind()->onDestroy()】。

深入理解Android的startservice和bindservice - Andye - 博客园

Android中BindService方式使用的理解(转) - Hi

Service的onServiceConnected没有被调用 - android开发实例 - 博客园

bindService是异步调用和Service进行绑定, 如果绑定成功, 则会调用ServiceConnection的onServiceConnected。当调用bindService方法后就会回调Activity的onServiceConnected,在这个方法中会向Activity中传递一个IBinder的实例,Acitity需要保存这个实例。在Service中需要创建一个实现IBinder的内部类(这个内部类不一定在Service中实现,但必须在Service中创建它)。在OnBind()方法中需返回一个IBinder实例,不然onServiceConnected方法不会调用。

4,广播

Android应用程序发送广播(sendBroadcast)的过程分析 - 老罗的Android之旅 - 博客频道 - CSDN.NET

使用registerReceiver注册BroadcastReceiver - 习以常 - 博客园

Android BroadcastReceiver介绍 - yinkai1205的专栏 - 博客频道 - CSDN.NET

Android应用程序注册广播接收器(registerReceiver)的过程分析 - 老罗的Android之旅 - 博客频道 - CSDN.NET

5,回调函数

弄明白Android 接口回调机制 - Android移动开发技术文章_手机开发 - 红黑联盟

android回调函数总结 - elleniou - 博客园

Android学习

谈谈我对Java中CallBack的理解 - CodingMyWorld - 博客园

Service 回调 Activity的方法。 - win2k3net的专栏 - 博客频道 - CSDN.NET

6,Android更新UI的两种方法——handler与runOnUiThread()

Android更新UI的两种方法――handler与runOnUiThread() - 泡在网上的日子

Android:UI更新方法四:在Worker Thread中runOnUiThread直接刷新UI - 混迹于移动互联网和手机行业 - 博客频道 - CSDN.NET

android多线程与界面交互以及runOnUiThread简单应用_灰度空间_新浪博客

7,

实现展开列ExpandableListView的三种方式之SimpleExpandableListAdapter实例 - 剑萧舞蝶的专栏 - 博客频道 - CSDN.NET

8,Characteristic的读写操作

android BluetoothLE 多个 setCharacteristicNotification writeCharacteristic 失效 - 即将踏上社会的人 - 博客园


onCharacteristicChanged 回调问题 - 蓝牙Bluetooth 技术 - 德州仪器在线技术支持社区

用setCharacteristicNotification之前确认Characteristic 属性中是否具备notification功能,如果有还要确认是否禁用了此功能

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容