文档章节

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

MrBryant24
 MrBryant24
发布于 2014/04/25 16:23
字数 574
阅读 261
收藏 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
广州
程序员
私信 提问
加载中
请先登录后再评论。
android下载加速器--axeldroid

axel 是一个linux上的轻量级下载加速器,http://axel.alioth.debian.org/ axeldroid 是将axel移植到android上,并且经过优化,实现了axel的大部分功能,可以指定下载连接数,定时刷新下载进度...

yiitz
2012/12/20
1.9K
1
HTML动态嵌入Flash--embedSWF

embedSWF 是一个轻量的HTML动态嵌入Flash的方案。gzip之前,仅3kb大小!比swfobject要小很多。 简洁的API,所有object和embed标记支持的参数都通过一个options传递。甚至支持在options中传递...

JonyZhang
2013/05/01
5K
2
Android 快速开发框架--ThinkAndroid

ThinkAndroid简介 ThinkAndroid是一个免费的开源的、简易的、遵循Apache2开源协议发布的Android开发框架,其开发宗旨是简单、快速的进行Android应用程序的开发,包含Androidmvc、简易sqlite ...

white-cat
2013/05/05
6.8W
6
DephtInition

使用微软Kinect平台进行3D扫描是一种常见方法,如今计算机工程师吉安卡洛已经找到了一种新的方式:使用对焦堆叠。这个概念被称为焦点深度,通常使 用在显微镜中。吉安卡洛将其进行了简化,设...

troika
2013/06/30
2K
1
AFNetworking+Nginx+HTTPS自签名服务器安全通信

这个关于AFNetworking的HTTPS安全通信的问题,很多没有过第一次经验的以及甚至有过一次经验的都会有点不确定。其实很简单: A.对于后台服务器所配置动证书如果是经过CA机构认证颁发的,那么用...

大茶园丁
2015/11/27
3.3K
20

没有更多内容

加载失败,请刷新页面

加载更多

这些 Java 8 官方挖的坑,你踩过几个?

Java技术栈 www.javastack.cn 关注阅读更多优质文章 导读:系统启动异常日志竟然被JDK吞噬无法定位?同样的加密方法,竟然出现部分数据解密失败?往List里面添加数据竟然提示不支持?日期明明...

Java技术栈
06/09
0
0
Python再夺冠,上古语言COBOL大流行,IEEE Spectrum 2020年度编程语言排行榜出炉!

整理 | 屠敏 出品 | CSDN 博客 领域驱动技术,技术鞭策领域。 近日,IEEE Spectrum 最新发布了 2020 年年度编程语言排行榜。IEEE Spectrum 编程语言排行榜一年发布一次,截止到今年,该排行榜...

软件绿色联盟
今天
0
0
uni-app中使用computed计算属性

computed的理解 computed里面的属性不能在data属性中出现,用来监控computed中自定义的变量 data() {return {url:"",mode:"SD",enableCamera:true,position:"front",beau......

剑龙御武
18分钟前
8
0
阿里政企云体验技术团队招聘

我们是谁 大家好,我们是「「阿里巴巴政企云体验技术」」团队,致力于打造 BG(面向政府和企业)行业背景下顶尖的体验技术,希望通过体验技术赋能我们的客户、产品以及合作伙伴。同时我们也是...

前端Sneaker
今天
0
0
OSI开放式互联参考七层模型网络协议神图!!!

本文分享自微信公众号 - 网络工程师IT技术之家(IT2020_)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

18855556625
02/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部