博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS 蓝牙 技术
阅读量:5009 次
发布时间:2019-06-12

本文共 2654 字,大约阅读时间需要 8 分钟。

//

//  ViewController.m

//  08-蓝牙 GameKit

//

//  Created by Romeo on 15/9/26.

//  Copyright © 2015年 itheima. All rights reserved.

//

 

#import "ViewController.h"

#import <GameKit/GameKit.h>

 

@interface ViewController ()<UINavigationControllerDelegate, UIImagePickerControllerDelegate, GKPeerPickerControllerDelegate>

@property (weak, nonatomic) IBOutlet UIImageView *imageView;

 

/** 会话对象 管理数据的接受和发送 */

@property (nonatomic, strong) GKSession *session;

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

}

 

 

 

 

#pragma mark - 连接设备

 

- (IBAction)connectDeviceClick:(id)sender {

    //1. 创建连接控制器

    GKPeerPickerController *picker = [GKPeerPickerController new];

    

    //2. 设置代理

    picker.delegate = self;

    

    //3. 显示连接控制器  show

    [picker show];

}

 

#pragma mark PeerPickerController 代理方法

//当连接到设备时会调用

//peerID : 另外一台设备 ID

//session: 会话对象(管理数据发送和接受)

- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session

{

    //1. 保留 Session (发送数据不在此方法)

    self.session = session;

    

    //2. 接受到数据应该做些处理 --> 设置句柄 --> 相当于设置代理. 一旦实现此方法, 必须配合另一个方法

    [self.session setDataReceiveHandler:self withContext:nil];

    

    //3. 消失控制器

    [picker dismiss];

}

 

#pragma mark setDataReceiveHandler必须要实现的方法

// 接受到数据才会调用此方法

- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context

{

    // 当前程序接受另外一个程序发过来的 image

    // 应该显示 image 到控制器上

    

    //1. 接受到的数据转换成 image

    UIImage *image = [[UIImage alloc] initWithData:data];

    

    //2. 让 image显示到图形上

    self.imageView.image = image;

}

 

#pragma mark - 发送照片

 

- (IBAction)sendImageClick:(id)sender {

    

    // 需要获取图像来发送数据

    

    //1. 获取图像

    NSData *data = UIImageJPEGRepresentation(self.imageView.image, 0.5);

    

    //2. 需要 session 类来发送数据

    //GKSendDataReliable     数据可到达   --> 如果数据没有发送成功, 会继续发送

    //GKSendDataUnreliable   数据不可到达 --> 数据发送失败, 不会继续发送

    [self.session sendDataToAllPeers:data withDataMode:GKSendDataReliable error: nil];

    

}

 

 

 

#pragma mark - 选择照片

 

- (IBAction)selectImageClick:(id)sender {

    UIImagePickerController *picker = [UIImagePickerController new];

    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    picker.delegate = self;

    [self presentViewController:picker animated:YES completion:nil];

}

 

#pragma mark 选择照片代理方法

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info

{

    //1. 获取选中的图片

    UIImage *image = info[UIImagePickerControllerOriginalImage];

    NSLog(@"imag: %@",image);

    

    //2. 显示照片

    self.imageView.image = image;

    

    //3. 消失控制器

    [picker dismissViewControllerAnimated:YES completion:nil];

}

 

@end

 

转载于:https://www.cnblogs.com/cfl911014/p/5276375.html

你可能感兴趣的文章
C:大数相加
查看>>
160. Intersection of Two Linked Lists
查看>>
人生苦短,我用python-- Day11
查看>>
JAVA Bean
查看>>
ehcache memcache redis 三大缓存男高音_转
查看>>
curd_3
查看>>
百度地图API示例之设置地图显示范围
查看>>
Java构造方法、重载及垃圾回收
查看>>
.Net Core AES加密解密
查看>>
Spring Quartz实现任务调度
查看>>
python | 桶排序、冒泡排序、选择排序、去重
查看>>
两个Html页面之间值得传递
查看>>
EasyUI datagrid 的多条件查询
查看>>
Mac升级bash到最新版本
查看>>
利用vagrant打包系统--制作自己的box
查看>>
美女与硬币问题
查看>>
计算几何算法概览 (转)
查看>>
Notepad++的ftp远程编辑功能
查看>>
数据库多对多关联表(Python&MySQL)
查看>>
[实变函数]1.2 集合的运算
查看>>