文档章节

蓝牙通信,通过蓝牙传照片

MrBryant24
 MrBryant24
发布于 2014/04/25 16:23
字数 574
阅读 244
收藏 0
点赞 0
评论 0

#蓝牙通信


<b>

  • GameKit(P2P)
  • ShowHand玩游戏

#实现

连接对端

	-(void)connectPeer
	{
	// 1. 实例化一个对端选择视图控制器
	GKPeerPickerController *picker = [[GKPeerPickerController alloc]init];

	// 2. 设置代理
	[picker setDelegate:self];

	// 3. 显示视图控制器
	[picker show];
	}

###对端选择器代理方法 ###完成对端连接

	- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session
	{
	NSLog(@"连接已经建立");
	// session回话,一个完整的连接过程
	_gkSession = session;

	// 设置数据处理对象,类似于delegate
	[_gkSession setDataReceiveHandler:self withContext:nil];
	// 关闭选择器
		[picker dismiss];
	}	

发送照片

	- (void)sendPhoto
	{ // 利用session发送数据
	
	NSData *imageData = UIImagePNGRepresentation(_imageButton.imageView.image);
	
	[_gkSession sendDataToAllPeers:imageData withDataMode:GKSendDataReliable error:nil];

	}

如果精通TCP协议、UDP协议

  1. 要发送的数据(二进制的)

  2. 数据发送模式

    • GKSendDataReliable :确保数据发送成功(TCP协议,对网络压力大)
    • GKSendDataUnReliable :只管发送不管成功(UDP协议,对数据完整性要求不高,对网络压力下)

###接受照片

  • 数据接受处理方法,此方法需要从文档中粘贴出来,此智能提示没有

    - (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context
    { NSLog(@"数据接收");
    // 将NSData转换成UIImage,之所以能转换成UIImage是因为我们发送的就是UIImage
    UIImage *image = [UIImage imageWithData:data];
    
    //然后可以得到image对象
    //接着可以去存储或者显示在ImageView
    }
    

简单回顾

##图片选择器

  • 选择照片

<pre> - (void)selectPhoto { // 1. 首先判断照片源是否可用 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { // 0)实例化控制器 UIImagePickerController *picker = [[UIImagePickerController alloc]init]; // 1)设置照片源 [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; // 2) 设置允许修改 [picker setAllowsEditing:YES]; // 3) 设置代理 [picker setDelegate:self]; // 4) 显示控制器 [self presentViewController:picker animated:YES completion:nil]; } else { NSLog(@"照片源不可用"); } } </pre>

###ImagePicker代理方法

<pre> - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { UIImage *image = info[@"UIImagePickerControllerEditedImage"]; [_imageButton setImage:image forState:UIControlStateNormal]; // 关闭照片选择器 [self dismissViewControllerAnimated:YES completion:nil]; // 需要将照片保存至应用程序沙箱,由于涉及到数据存储,同时与界面无关 // 可以使用多线程来保存图像 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // 保存图像 // 1. 去图像路径 NSArray *docs = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *imagePath = [docs[0] stringByAppendingPathComponent:@"abc.png"]; // 2. 转换成NSData保存 NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:imagePath atomically:YES]; }); } </pre>

© 著作权归作者所有

共有 人打赏支持
MrBryant24
粉丝 1
博文 7
码字总数 3289
作品 0
广州
程序员
[蓝牙] 1、蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)

声明:这篇文章是楼主beautifulzzzz学习网上关于蓝牙的相关知识的笔记,其中比较多的受益于xubin341719的蓝牙系列文章,同时还有其他网上作者的资料。由于有些文章只做参考或统计不足,如涉及...

史迪奇2号
2017/06/11
0
0
集成蓝牙4.0的控制开发板--Bluno

DFRobot为你呈上Bluno,一款集成了蓝牙4。0通信模块的Arduino UNO开发板。通过我们开发的Android和IOS手机应用,你可以快速开发出一款与手机通信的硬件设备。正如现在非常火爆的可穿戴式手机...

红薯
2013/11/28
5.4K
2
Wi-Fi与蓝牙4.0对决:一场无硝烟战争。

随着蓝牙4.0版本的出炉,一场无声无息的战争即将打响。在无线网络技术中,Wi-Fi和蓝牙的应用场景都十分广阔,无论少了谁都会给人们的日常工作和生活带来诸多不便。这两种技术标准都允许用户在...

相濡以沫
2010/10/31
1K
1
手把手教你智能硬件开发(四) 蓝牙传输

第4节 蓝牙传输 智能硬件基本上都需要和手机相连,然后让手机控制这些硬件的工作。相连的方式不外乎以下三种, 数据线有线连接,通过一根数据线把智能硬件和手机连接起来。采用这种方式,需要...

anddlecn
2016/09/07
0
0
STM32小白入门(第八天)-------低功耗蓝牙模块

蓝牙是现在智能生态下运用的最多的,比如智能手环,智能手表,智能家居也离不开它的身影。 我用的是,CC2541低功率蓝牙模块4.0 BLE 串口 带底板直排针 无线蓝牙模块 蓝牙是无线短距离传输的一...

licent9420
03/21
0
0
低功耗蓝牙心率监测仪解决方案

低功耗蓝牙带来的热潮,影响着智能设备的兴起与创新,并向着物联网领域延伸。我们知道,现在移动设备上使用的蓝牙大多是低功耗蓝牙,低功耗蓝牙(BLE)相较于传统蓝牙,BLE技术除了低功耗特性...

昇润科技
2017/11/28
0
0
在智能家居中,蓝牙技术你了解多少?本文解答低功耗蓝牙的几个优势

在智能家居中,很多设备都装载了蓝牙模块,比如智能锁、风扇、窗帘等,往大一点说这就是物联网,是通过无线模块和互联网连接推动的,也就是说物与物,或是人与物之间的数据传输都必须配备无线...

昇润科技
2017/11/20
0
0
用树莓派玩转蓝牙

蓝牙是一个使用广泛的无线通信协议,这两年又随着物联网概念进一步推广。我将介绍蓝牙协议,特别是低功耗蓝牙,并用树莓派来实践。树莓派3中内置了蓝牙模块。树莓派通过UART接口和该模块通信...

余凯力
2017/06/19
0
0
iOS中蓝牙的实现方案

iOS中提供了4个框架用于实现蓝牙连接 GameKit.framework(用法简单) 只能用于iOS设备之间的连接,多用于游戏(比如五子棋对战),从iOS7开始过期 MultipeerConnectivity.framework 只能用于...

5vinsEnt
2016/06/16
65
0
让笔者教你如何选型蓝牙模块,这五个因素值得你收藏

蓝牙作为一种短距离无线通信技术,是无线数据传输、无线语音传输最成熟的解决方案,目前已经得到广泛的应用,如智能家居、医疗设备、无线监控、汽车电子等等。由于蓝牙技术已十分成熟且价格很...

昇润科技
2017/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

TensorFlow 作用域与操作符的受限范围

variable_scope 影响变量和操作符 name_scope 只影响操作符 with tf.name_scope(""),使用空字符串将作用域返回到顶层 tf.variable_scope("") 相当于添加一个空层 import tensorflow as tf...

阿豪boy
8分钟前
0
0
Java面试基础篇——第六篇:常见Map类的区别

常见的map类有: HashMap, ConcurrentHashMap (Jdk1.8) , LinkedHashMap, TreeMap, Hashtable。 其中我们最常用的莫过于HashMap, 和并发情况下使用的ConcurrentHashMap了,它们的主要区别就在...

developlee的潇洒人生
10分钟前
0
0
崛起于Springboot2.X之前端模版freemaker(23)

1、配置文件 spring: freemarker: allow-request-override: false cache: true check-template-location: true charset: UTF-8 content-type: text/html ......

木九天
26分钟前
1
0
spring-boot:run启动时,指定spring.profiles.active

Maven启动指定Profile通过-P,如mvn spring-boot:run -Ptest,但这是Maven的Profile。 如果要指定spring-boot的spring.profiles.active,则必须使用mvn spring-boot:run -Drun.profiles=test......

夜黑人模糊灬
28分钟前
0
0
大数据分析挖掘技术学习:Python文本分类

引言 文本分类作为自然语言处理任务之一,被广泛应用于解决各种商业领域的问题。文本分类的目的是将 文本/文档 自动地归类为一种或多种预定义的类别。常见的文本分类应用如下: • 理解社交媒...

加米谷大数据
33分钟前
0
0
istio-0.8 指标监控,prometheus,grafana

配置: https://istio.io/docs/tasks/telemetry/metrics-logs/ https://istio.io/docs/tasks/telemetry/tcp-metrics/ envoy拦截请求>上报mixer>对接prometheus>grafana 效果截图: promethe......

xiaomin0322
35分钟前
0
0
公众号推荐

阿里技术 书籍:《不止代码》

courtzjl
38分钟前
0
0
关于改进工作效率

1.给不同的业务线建立需求群,所有的数据需求都在群里面提。 2.对于特别难搞定的事情,到对应的技术哪去做,有问题随时沟通。 3.定期给工作总结形成方法论。 4.学习新的技术,尝试用新的方法...

Avner
45分钟前
0
0
关于thinkphp 框架开启路径重写,无法获取Authorization Header

今天遇到在thinkphp框架中获取不到header头里边的 Authorization ,后来在.htaccess里面加多一项解决,记录下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Rewrite......

殘留回憶
48分钟前
0
0
centos 使用yum安装nginx后如何添加模块 10

centos 使用yum安装nginx后如何添加模块 10 centos6.2版本,使用yum来安装了nginx,但是最近需要重新添加模块,所以就傻了,询问下有人知道怎么重新添加模块吗? PS:俺是新手,需要高手救助...

linjin200
51分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部