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功能,如果有还要确认是否禁用了此功能

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏酷玩时刻

Android版-微信APP支付

服务端源码地址:http://git.oschina.net/javen205/weixin_guide 客户端源码地址:https://github.com...

9172
来自专栏流媒体

Android RTMP推流之MediaCodec硬编码一(H.264进行flv封装)

在前面Android平台下使用FFmpeg进行RTMP推流(摄像头推流)的文章中,介绍了如何使用FFmpeg进行H264编码和Rtmp推流。接下来讲分几篇文章来...

8793
来自专栏张善友的专栏

Autofac正式发布2.1版

Nicholas Blumhardt经过了2年多的开发,设计和试验,Autofac发布了第二版,针对1.4版本进行了重组,提供了更好的开发体验,你可以到这里下载...

19910
来自专栏hotqin888的专栏

engineercms利用pdf.js制作连续看图功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1741
来自专栏Java与Android技术栈

用kotlin打印出漂亮的android日志写在最后

Kotlin号称是Android版本的swift,距离它1.0正式版本的推出快一年了。它像swift一样,可以写客户端也可以写服务端。由于公司项目比较繁忙,我一...

1302
来自专栏ASP.NETCore

MVVM绑定多层级数据到TreeView并设置项目展开

昨天在做项目的时候碰到了这个问题,发现通常我们定义的数据不法绑定到控件上,接下来我将讲一下我是怎么解决这个问题的。

1352
来自专栏张善友的专栏

ASP.NET Web API 接口执行时间监控

软件产品常常会出现这样的情况:产品性能因某些无法预料的瓶颈而受到干扰,导致程序的处理效率降低,性能得不到充分的发挥。如何快速有效地找到软件产品的性能瓶颈,则是我...

2768
来自专栏cmazxiaoma的架构师之路

Android多线程+单线程+断点续传+进度条显示下载

5093
来自专栏函数式编程语言及工具

Akka(43): Http:SSE-Server Sent Event - 服务端主推消息

   因为我了解Akka-http的主要目的不是为了有关Web-Server的编程,而是想实现一套系统集成的api,所以也需要考虑由服务端主动向客户端发送指令的...

2699
来自专栏岑玉海

Kettle 添加对应hadoop版本的支持

  在hdp的官网上有一个ETL工具叫做Talend Open Studio,然后我就下了,并且在群里询问了一下,突然间冒出来一群ETL高手,经高人指点认识了一...

5087

扫码关注云+社区

领取腾讯云代金券