CBCentralManager Class 的相关分析
Overview
CBCentralManager
objects are used to manage discovered or connected remote peripheral devices (represented by CBPeripheral
objects),
including scanning for, discovering, and connecting to advertising peripherals.
CBCentralManager
对象负责管理外设的发现或连接,包括扫描、发现、连接正在广播的外设。
Before you call CBCentralManager
methods, the state of the central manager object must be powered on, as indicated by theCBCentralManagerStatePoweredOn
constant.
This state indicates that the central device (your iPhone or iPad, for instance) supports Bluetooth low energy and that Bluetooth is on and available to use.
CBCentralManager
方法前,我们必须查看中央管理器的状态是否为打开状态(CBCentralManagerStatePoweredOn)。如果是该状态,表明该中心设备(你的iphone或者ipad)是支持蓝牙低功耗4.0的。Tasks 任务
Initializing a Central Manager 初始化中央管理器
– initWithDelegate:queue:
– initWithDelegate:queue:options:
- - (id)initWithDelegate:(id<CBCentralManagerDelegate>)delegate queue:(dispatch_queue_t)queue options:(NSDictionary *)options
- 方法说明:delegate代理:接受中心事件 queue:指明在哪个队列处理事件,为nil时表示在主线程处理
- options:有一下两个选择
NSString *const CBCentralManagerOptionShowPowerAlertKey;用该参量出事中央管理器时,当蓝牙开关未打开时会弹出警告框。
NSString *const CBCentralManagerOptionRestoreIdentifierKey;该参量包含一个指定中央管理器的uid
Establishing or Canceling Connections with Peripherals 连接外设 或者 取消外设连接
– connectPeripheral:options:
- - (void)connectPeripheral:(CBPeripheral *)peripheral options:(NSDictionary *)options
- 参数说明:
- peripheral:中央管理器想要连接的外设对象
- options:
还没搞明白NSString *const CBConnectPeripheralOptionNotifyOnConnectionKey;
NSString *const CBConnectPeripheralOptionNotifyOnDisconnectionKey;
NSString *const CBConnectPeripheralOptionNotifyOnNotificationKey;讨论:当连接外设成功时要调用在委托对象中实现的方法:
centralManager:didConnectPeripheral:
- 当连接外设失败时要调用在委托对象中实现的方法:
centralManager:didFailToConnectPeripheral:error:
– cancelPeripheralConnection:
- - (void)cancelPeripheralConnection:(CBPeripheral *)peripheral
- 取消外设连接
- 该方法调用后会触发委托中的方法:centralManager:didDisconnectPeripheral:error:
Retrieving Lists of Peripherals 整理出外设列表
– retrieveConnectedPeripheralsWithServices:
- - (NSArray *)retrieveConnectedPeripheralsWithServices:(NSArray *)serviceUUIDs
- 参数说明:
- serviceUUIDs
表示服务uuids的列表 - 返回值:从连接的设备(可能有多个app连接不同的蓝牙设备)中,根据服务列表,返回这些服务的数组(也就是找到我们指定的服务设备,整理到一个数组中返回)
– retrievePeripheralsWithIdentifiers:
- - (NSArray *)retrievePeripheralsWithIdentifiers:(NSArray *)identifiers
- 和上一个相识,只不过这里是指定的标示符数组
– retrieveConnectedPeripherals
Deprecated
in iOS 7.0- 该方法整理出所有连接到中央设备(比如iphone)的外设,返回一个数组(该数组包含了所有app连接的外设列表)
- 该方法会触发调用委托中的方法
centralManager:didRetrieveConnectedPeripherals:
– retrievePeripherals:
Deprecated
in iOS 7.0
Scanning or Stopping Scans of Peripherals 扫描或者停止扫描外设
– scanForPeripheralsWithServices:options:
- - (void)scanForPeripheralsWithServices:(NSArray *)serviceUUIDs options:(NSDictionary *)options
- 参数说明:
- serviceUUIDs:代表该app所感兴趣的服务uuids数组(也就是该app想要连接的外设)
- 每当扫描到一个外设,就会调用委托对象中的方法:
centralManager:didDiscoverPeripheral:advertisementData:RSSI:
– stopScan 停止扫描
Monitoring Properties
state
property- 返回一个central
manager的当前状态, Discussion 讨论
When a central manager object is initially created, the default value of this property is
CBCentralManagerStateUnknown
.当一个中央管理器对象初始化时,他的默认值是CBCentralManagerStateUnknown
As the central manager’s state changes, the central manager updates the value of this property and calls the
centralManagerDidUpdateState:
当中央管理器状态改变时,会调用centralManagerDidUpdateState:委托方法
delegate
propertyCentral Manager State中央管理器状态
Values representing the current state of a central manager object.
typedef enum {
CBCentralManagerStateUnknown = 0, 未知
CBCentralManagerStateResetting, 复位
CBCentralManagerStateUnsupported, 表明设备不支持蓝牙低功耗
CBCentralManagerStateUnauthorized,该应用程序是无权使用蓝牙低功耗。
CBCentralManagerStatePoweredOff, 关闭状态
CBCentralManagerStatePoweredOn, 打开状态
} CBCentralManagerState
Central Manager State
Values representing the current state of a central manager object.
typedef enum {
CBCentralManagerStateUnknown = 0,
CBCentralManagerStateResetting,
CBCentralManagerStateUnsupported,
CBCentralManagerStateUnauthorized,
CBCentralManagerStatePowe
CBCentralManager Class 的相关分析的更多相关文章
- 多视图学习利器----CCA(典型相关分析)及MATLAB实现
Hello,我是你们人见人爱花见花开的小花.又和大家见面了,今天我们来聊一聊多视图学习利器------CCA. 一 典型相关分析的基本思想 当我们研究两个变量x和y之间的相关关系的时候,相关系数(相关 ...
- SPSS数据分析—基于最优尺度变换的典型相关分析
传统的典型相关分析只能考虑变量之间的线性相关情况,且必须为连续变量,而我们依然可以使用最优尺度变换来拓展其应用范围,使其可以分析非线性相关.数据为分类数据等情况,并且不再仅限于两个变量间的分析, 虽然 ...
- SPSS数据分析—典型相关分析
我们已经知道,两个随机变量间的相关关系可以用简单相关系数表示,一个随机变量和多个随机变量的相关关系可以用复相关系数表示,而如果需要研究多个随机变量和多个随机变量间的相关关系,则需要使用典型相关分析. ...
- SPSS数据分析—相关分析
相关系数是衡量变量之间相关程度的度量,也是很多分析的中的当中环节,SPSS做相关分析比较简单,主要是区别如何使用这些相关系数,如果不想定量的分析相关性的话,直接观察散点图也可以. 相关系数有一些需要注 ...
- 中国各城市PM2.5数据间的相关分析
code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...
- Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x ...
- Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
典型相关分析 (一)引入 典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法.他能够揭示出两组变量之间的内在联系. 我们知道,在一 ...
- R语言 典型相关分析
1.关键点 #典型相关分析##典型相关分析是用于分析两组随机变量之间的相关程度的一种统计方法,它能够有效地揭示两组随机变量之间的相互(线性依赖)关系#例如 研究生入学考试成绩与本科阶段一些主要课程成绩 ...
- BZOJ4817 SDOI2017 相关分析
4821: [Sdoi2017]相关分析 Time Limit: 10 Sec Memory Limit: 128 MBSec Special Judge Description Frank对天文 ...
随机推荐
- Git 更安全的强制推送,--force-with-lease
由于 git rebase 命令的存在,强制将提交推送到远端仓库似乎也有些必要.不过都知道 git push --force 是不安全的,这让 git rebase 命令显得有些鸡肋. 本文将推荐 - ...
- 【DUBBO】 Dubbo内核实现之动态编译
转载:http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577483 我们运行的java代码,一般都是编译之后的字节码.Dubbo为了实 ...
- 【Netty】netty学习之nio网络编程的模型
[一]NIO服务器编程结构 [二]Netty3.x服务端线程模型
- LG4475 巧克力王国
题意 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 x 和 y 为其牛奶和可可的含量.由于每个人对于 ...
- C/S模式与B/S模式的详细介绍
网络程序开发的两种计算模式--C/S模式与B/S模式.两种各有千秋,用于不同场合. C/S适用于专人使用,安全性要求较高的系统: B/S适用于交互性比较频繁的场合,容易被人们所接受,倍受用户和软件开发 ...
- Eclipse中创建新的Spring Boot项目
本文转载自:http://blog.csdn.net/clementad/article/details/51334064 简单几步,在Eclipse中创建一个新的spring Boot项目: 1.E ...
- (转)将rdlc报表作为资源嵌套使用
本文转载自:http://www.cnblogs.com/chenxizhang/archive/2009/05/16/1458469.html 如果我们准备在Windows Forms里面使用rdl ...
- java代码-------Runnable的用法
总结:主要是实现Runnable接口就必须重写run()方法,然后需要创建Thread类的对象,再调用start()方法 package com.s.x; public class testRunna ...
- Java 代码块
一.简介 1.普通代码块: 类中方法的方法体 2.构造代码块: 构造块会在创建对象时被调用,每次创建时都会被调用,优先于类构造函数执行. 3.静态代码块: 用static{}包裹起来的代码片段,只会执 ...
- IT运维的定义
IT运维是IT管理的核心和重点部分,也是内容最多.最繁杂的部分,该阶段主要用于IT部门内部日常运营管理,涉及的对象分成两大部分,即IT业务系统和运维人员,该阶段的管理内容又可细分为七个子系统: ...