文档章节

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

MrBryant24
 MrBryant24
发布于 2014/04/25 16:23
字数 574
阅读 250
收藏 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
Wi-Fi与蓝牙4.0对决:一场无硝烟战争。

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

相濡以沫
2010/10/30
1K
1
STM32小白入门(第八天)-------低功耗蓝牙模块

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

licent9420
2018/03/21
0
0
手把手教你智能硬件开发(四) 蓝牙传输

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

anddlecn
2016/09/07
0
0
低功耗蓝牙心率监测仪解决方案

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

昇润科技
2017/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

把iOS中block代码异步执行通过信号量变成同步执行

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); [self downZipFile:^(BOOL downSucceed) { dispatch_semaphore_signal(semaphore); }]; dispatch_semaphor......

壹峰
11分钟前
0
0
excel函数使用

拼接多个字段 =CONCATENATE(B2,C2,D2,E2) 通过函数把一个sheet里面的字段搂到另一个sheet F2 唯一匹配另一个sheet的字段。 www 另一个sheet的名称 H:I www这个sheet里面从H行到I行。 2 从第几...

贾峰uk
13分钟前
0
0
SpringBoot 集成 DBUnit 、database-rider与H2数据库进行单元测试

单元测试 什么是单元测试 参考维基百科: 单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在...

Tree
14分钟前
0
0
java基础知识目录

java 注解

细节探索者
16分钟前
0
0
第一个网络爬虫

准备工作 http请求头概念 1、Accept :请求报头域,用于指定客户端可接受哪些类型的信息。 2、Accept-Language :指定客户端可接受的语言类型。 3、Accept-Encoding :指定客户端可接受的内容...

轻轻的往前走
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部