蓝牙通信,通过蓝牙传照片
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
#藍(lán)牙通信
<b>
- GameKit(P2P)
- ShowHand玩游戲
#實(shí)現(xiàn)
連接對(duì)端
-(void)connectPeer{// 1. 實(shí)例化一個(gè)對(duì)端選擇視圖控制器GKPeerPickerController *picker = [[GKPeerPickerController alloc]init];// 2. 設(shè)置代理[picker setDelegate:self];// 3. 顯示視圖控制器[picker show];}###對(duì)端選擇器代理方法 ###完成對(duì)端連接
- (void)peerPickerController:(GKPeerPickerController *)picker didConnectPeer:(NSString *)peerID toSession:(GKSession *)session{NSLog(@"連接已經(jīng)建立");// session回話,一個(gè)完整的連接過(guò)程_gkSession = session;// 設(shè)置數(shù)據(jù)處理對(duì)象,類似于delegate[_gkSession setDataReceiveHandler:self withContext:nil];// 關(guān)閉選擇器[picker dismiss];}發(fā)送照片
- (void)sendPhoto{ // 利用session發(fā)送數(shù)據(jù)NSData *imageData = UIImagePNGRepresentation(_imageButton.imageView.image);[_gkSession sendDataToAllPeers:imageData withDataMode:GKSendDataReliable error:nil];}如果精通TCP協(xié)議、UDP協(xié)議
要發(fā)送的數(shù)據(jù)(二進(jìn)制的)
數(shù)據(jù)發(fā)送模式
- GKSendDataReliable :確保數(shù)據(jù)發(fā)送成功(TCP協(xié)議,對(duì)網(wǎng)絡(luò)壓力大)
- GKSendDataUnReliable :只管發(fā)送不管成功(UDP協(xié)議,對(duì)數(shù)據(jù)完整性要求不高,對(duì)網(wǎng)絡(luò)壓力下)
###接受照片
-
數(shù)據(jù)接受處理方法,此方法需要從文檔中粘貼出來(lái),此智能提示沒(méi)有
- (void)receiveData:(NSData *)data fromPeer:(NSString *)peer inSession: (GKSession *)session context:(void *)context { NSLog(@"數(shù)據(jù)接收"); // 將NSData轉(zhuǎn)換成UIImage,之所以能轉(zhuǎn)換成UIImage是因?yàn)槲覀儼l(fā)送的就是UIImage UIImage *image = [UIImage imageWithData:data];//然后可以得到image對(duì)象 //接著可以去存儲(chǔ)或者顯示在ImageView }
簡(jiǎn)單回顧
##圖片選擇器
- 選擇照片
<pre> - (void)selectPhoto { // 1. 首先判斷照片源是否可用 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { // 0)實(shí)例化控制器 UIImagePickerController *picker = [[UIImagePickerController alloc]init]; // 1)設(shè)置照片源 [picker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; // 2) 設(shè)置允許修改 [picker setAllowsEditing:YES]; // 3) 設(shè)置代理 [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]; // 關(guān)閉照片選擇器 [self dismissViewControllerAnimated:YES completion:nil]; // 需要將照片保存至應(yīng)用程序沙箱,由于涉及到數(shù)據(jù)存儲(chǔ),同時(shí)與界面無(wú)關(guān) // 可以使用多線程來(lái)保存圖像 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. 轉(zhuǎn)換成NSData保存 NSData *imageData = UIImagePNGRepresentation(image); [imageData writeToFile:imagePath atomically:YES]; }); } </pre>
轉(zhuǎn)載于:https://my.oschina.net/nofree/blog/226548
總結(jié)
以上是生活随笔為你收集整理的蓝牙通信,通过蓝牙传照片的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pyhon 安装第一个模块 xlrd
- 下一篇: dna序列分类数学建模matlab,MA