为什么80%的码农都做不了架构师?>>>   

#蓝牙通信


<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>

转载于:https://my.oschina.net/nofree/blog/226548

蓝牙通信,通过蓝牙传照片相关推荐

  1. Android -传统蓝牙通信聊天

    概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设备.蓝牙连接.通信等. 详细 代码下载:http://www.demodashi.com/demo/10676.html 原文地址: Andr ...

  2. android pin码 经典蓝牙_Android蓝牙开发—经典蓝牙详细开发流程

    Android蓝牙开发-经典蓝牙详细开发流程 发布时间:2018-07-16 13:41, 浏览次数:637 , 标签: Android Android蓝牙开发前,首先要区分是经典蓝牙开发还是BLE( ...

  3. Android笔记---蓝牙开发经典蓝牙和低功耗蓝牙

    目录 前言 一般开发步骤 相关API介绍 一.通用API 1.BluetoothAdapter 2.BluetoothDevice 二.经典蓝牙(BT)API 1.BluetoothSocket 2. ...

  4. android 输出字节数组,Android蓝牙通信字节数组的数据类型转换 求教!

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 单片机和安卓手机进行蓝牙通信,发送电压数据到手机,恰好每次8位数据(1字节)传给上位机.采用以下代码获得16进制字符输出,以下是蓝牙通信接收并显示数据部分 ...

  5. Qt on Android 蓝牙通信开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...

  6. Android硬件通信之 蓝牙通信

    一,简介 1.1 现在的手机设备基本上都支持蓝牙模块,蓝牙与蓝牙之前可以相互通信,所以只要物联网机器上配有蓝牙模块,就可以用手机蓝牙连接机器蓝牙,从而和机器通信 1.2 蓝牙按协议常见可以分为经典蓝牙 ...

  7. React Native BLE蓝牙通信

    由于项目需要,基于React Native 开发的App要跟BLE蓝牙设备通信. 在js.coach上搜索React Native BLE蓝牙组件,只找到三个组件: react-native-ble- ...

  8. 基于STM32F103C8T6的HC-06蓝牙通信

    文章目录 前言 注意看 ! 一.蓝牙通信流程 二.怎么实现蓝牙通信 1.了解蓝牙模块功能 2.了解蓝牙通信本质 3.进行AT命令调试 4.调试完成,连接通信 三.结尾 前言 注意看 ! 如果朋友们遇到 ...

  9. STM32CubeIDE开发(二十五), 物联网应用之stm32的蓝牙通信设计

    一.蓝牙通信技术 蓝牙技术是一种点对点点对面的网络构架,他可以在限制的范围内以很快的速度传输网络数据,在物联网应用中,支持网状网络的物联网短距离无线通信.目前它还被广泛用于智能可穿戴设备.智能门锁.智 ...

最新文章

  1. 磁盘阵列RAID的分类有哪些?
  2. KMP字符串搜索算法
  3. boost::sort模块实现测试并行稳定排序
  4. 【MFC系列-第23天】CMemoryDC的封装过程
  5. Python机器学习:评价分类结果006precisoion-Recall曲线绘制
  6. 理财里的封闭和半开放是啥意思?
  7. [NOIp2012]开车旅行
  8. Apache服务器+tomcat配置
  9. 一段关于中国人口老龄化的评论
  10. Linux花生壳使用篇
  11. img文件制作linux启动u盘,用syslinux制作简单U盘启动盘教程
  12. python反爬虫策略ppt_关于反爬虫策略
  13. 中线提取算法_基于Guided Filter的地形图中线要素提取算法
  14. html5 css3在线工具,HTML5/CSS3开发辅助工具(TopStyle)
  15. 基于51单片机的自动浇花系统
  16. Matlab-稀疏矩阵
  17. onTouch事件机制
  18. 每日一面 - mysql中,innodb表里,某一条数据删除了之后,这条数据会被真实的擦掉吗,还是删除了关系?
  19. 5G新基建打造数字社会新图景
  20. 三种扫描局域网ip方案

热门文章

  1. Deepin安装SSH服务器
  2. 高恪一键管控之封杀随身wifi与电视盒子_php_sir_新浪博客
  3. 个人建站需要哪些能力?
  4. 计算机网络笔记(王道考研) 第六章:应用层
  5. 点击页面其它地方隐藏该div
  6. 机器学习集成学习进阶Xgboost算法案例分析
  7. 海迅软件板件xml解析及生成
  8. gis等时圈怎么做_画个圈就叫“等时圈”?别逗了!手把手教你做等时圈
  9. 15行Python代码能干嘛?能写一个抖音网页版的简易爬虫(附源码)
  10. 软考高级考试中有五大证书,其中哪个更值得考?