文档章节

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

MrBryant24
 MrBryant24
发布于 2014/04/25 16:23
字数 574
阅读 249
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

ios多个target

1.建立3个target,分别为heroone,heroone test,heroone dev;分别为正式环境,test环境,dev环境 2.注意取消掉autocreate以防止名字不对,分别以Duplicate的方式建立另外两个scheme 3.创建...

HeroHY
今天
5
0
php获取客户端IP

php获取客户端IP 首先先阅读关于IP真实性安全的文章:如何正確的取得使用者 IP? 「任何從客戶端取得的資料都是不可信任的!」 HTTP_CLIENT_IP头是有的,但未成标准,不一定服务器都实现。 ...

DrChenXX
昨天
0
0
. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tom...

west_coast
昨天
1
0
刷leetcode第704题-二分查找

今天双十一买的算法书到货了,路上刷到有人说的这个题,借(chao)鉴(xi)一下别人的思路,这个是C++标准库里面的经典方法,思路精巧,优雅好品味 int search(int* nums, int numsSize, in...

锟斤拷烫烫烫
昨天
3
0
【分享实录】BANCOR算法详解及代码实现

1 活动基本信息 1)主题:【区块链技术工坊22期】BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何开发自己的BANCOR去中心...

HiBlock
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部