// // FirstViewController.m // Talk // // Created by xuzs on 22/10/11. // Copyright (c) 2022年 xuzs. All rights reserved. // #import "Call.h" #import "UI.h" #import "Pub.h" #import "Opendoor.h" #import "Sformat.h" #import "Msg.h" #import "AppDelegate.h" @interface Call () @property (nonatomic, strong)UIView *rview,*spkView,*cutView,*hangupView,*openView; @property (nonatomic, strong)UIImageView *playerImage,*spkImage,*cutImage,*hangupImage,*answerImage,*openImage; @property (nonatomic, strong)UIScrollView *scrollView; @property (nonatomic, strong)UIButton *answerView; @property (nonatomic, strong)UILabel *statuLabel; @property (nonatomic, strong)UIAlertController *openAlert; @property (nonatomic, strong)NSTimer *timer; @end @implementation Call - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. [self.navigationController.navigationBar setHidden:YES]; [self setupViews]; [self setUI]; } - (void)setupViews { self.edgesForExtendedLayout = UIRectEdgeNone; self.extendedLayoutIncludesOpaqueBars = NO; self.modalPresentationCapturesStatusBarAppearance = NO; self.automaticallyAdjustsScrollViewInsets = NO; [self.view addSubview:self.rview]; [self.rview addSubview:self.scrollView]; [self.scrollView addSubview:self.playerImage]; [self.rview addSubview:self.statuLabel]; if([_CallTag isEqualToString:@"BECALL"]){ [_statuLabel setText:[[NSString alloc] initWithFormat:@"%@呼叫",@"小小茜子的搬砖"]]; // [_statuLabel setText:[[NSString alloc] initWithFormat:@"%@呼叫",[Opendoor EquNameById:[[Pub getApp].talk getRemoteEqu]]]]; [self.rview addSubview:self.spkView]; [self.spkView addSubview:self.spkImage]; [self.rview addSubview:self.cutView]; [self.cutView addSubview:self.cutImage]; [self.rview addSubview:self.hangupView]; [self.hangupView addSubview:self.hangupImage]; [self.rview addSubview:self.answerView]; [self.answerView addSubview:self.answerImage]; [self.rview addSubview:self.openView]; [self.openView addSubview:self.openImage]; [self.cutView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SaveImg)]]; [self.hangupView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Hangup)]]; [self.answerView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Answer)]]; [self.openView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Open)]]; } else if([_CallTag isEqualToString:@"WATCH"]){ [_statuLabel setText:[[NSString alloc] initWithFormat:@"监视%@",[Opendoor EquNameById:[[Pub getApp].talk getRemoteEqu]]]]; [self.rview addSubview:self.cutView]; [self.cutView addSubview:self.cutImage]; [self.rview addSubview:self.hangupView]; [self.hangupView addSubview:self.hangupImage]; [self.rview addSubview:self.openView]; [self.openView addSubview:self.openImage]; [self.cutView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(SaveImg)]]; [self.hangupView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Hangup)]]; [self.openView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Open)]]; } } - (void)setUI{ [UI SetRView:self.rview Top:@"0" Right:@"0" Bottom:@"0" Left:@"0"]; CGFloat imgwidth = [UI getScreenHeight]*640/480; self.scrollView.contentSize=CGSizeMake(imgwidth, [UI getScreenHeight]); self.playerImage.frame = CGRectMake(0,0,imgwidth, [UI getScreenHeight]); [self.scrollView setContentOffset:CGPointMake((imgwidth-[UI getScreenWidth])/2, 0)]; [UI setFrameInView:self.statuLabel Width:@"100vw" Height:@"20" TranslateX:@"0" TranslateY:@"5vh" InView:nil Position:UITopMid]; if([_CallTag isEqualToString:@"BECALL"]){ [UI setFrameInView:self.spkView Width:@"14vmin" Height:@"14vmin" TranslateX:@"-36vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.spkView]; [UI setFrameInView:self.spkImage Width:@"50%" Height:@"50%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.cutView Width:@"14vmin" Height:@"14vmin" TranslateX:@"-18vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.cutView]; [UI setFrameInView:self.cutImage Width:@"50%" Height:@"50%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.hangupView Width:@"14vmin" Height:@"14vmin" TranslateX:@"0" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.hangupView]; [UI setFrameInView:self.hangupImage Width:@"58%" Height:@"22%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.answerView Width:@"14vmin" Height:@"14vmin" TranslateX:@"18vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.answerView]; [UI setFrameInView:self.answerImage Width:@"40%" Height:@"40%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.openView Width:@"14vmin" Height:@"14vmin" TranslateX:@"36vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.openView]; [UI setFrameInView:self.openImage Width:@"35%" Height:@"40%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; } else if([_CallTag isEqualToString:@"WATCH"]){ [UI setFrameInView:self.cutView Width:@"14vmin" Height:@"14vmin" TranslateX:@"-26vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.cutView]; [UI setFrameInView:self.cutImage Width:@"50%" Height:@"50%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.hangupView Width:@"14vmin" Height:@"14vmin" TranslateX:@"0" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.hangupView]; [UI setFrameInView:self.hangupImage Width:@"58%" Height:@"22%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [UI setFrameInView:self.openView Width:@"14vmin" Height:@"14vmin" TranslateX:@"26vmin" TranslateY:@"10vmin" InView:nil Position:UIBottomMid]; [UI setCornerRadius:self.openView]; [UI setFrameInView:self.openImage Width:@"35%" Height:@"40%" TranslateX:@"0" TranslateY:@"0" InView:nil Position:UICenter]; [[Pub getApp].talk watchByServer]; } } - (void)setTime:(long)time0{ int sec_total = (int)([Sformat timestamp] - time0)/1000; int sec = sec_total % 60; int min = (sec_total-sec)/60; //dispatch_async(dispatch_get_main_queue(), ^{//转到主线程处理 [self.statuLabel setText:[[NSString alloc] initWithFormat:@"%02d:%02d",min,sec]]; //}); } - (void)SaveImg{ long time = [Sformat timestamp]; // // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); // // 构造保存文件的名称 保存成功会返回YES // NSString *filePath = [[paths objectAtIndex:0]stringByAppendingPathComponent: // [NSString stringWithFormat:@"%ld.jpg",time]]; NSString *path = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];// 拼接图⽚名为"currentImage.png"的路径 NSString *filePath = [path stringByAppendingPathComponent:[NSString stringWithFormat:@"%ld.jpg",time]];//获取⽹络请求中的url地址 //保存操作 BOOL result = [UIImageJPEGRepresentation(self.playerImage.image, .9) writeToFile:filePath atomically:YES]; if (result == YES) { [self alert:@"保存截图成功"]; [[Pub getApp].sysinfo SaveRecord:time Type:@"截图" Equ:[[Pub getApp].talk getRemoteEqu] Img:[NSString stringWithFormat:@"%ld.jpg",time] Note:@""]; }else{ [self alert:@"保存截图失败"]; } //https://wenku.baidu.com/view/2ff5463ba000a6c30c22590102020740be1ecd95.html } - (void)Hangup{ NSLog(@"挂机"); if([Pub getApp].talk.status>0){ if([_CallTag isEqualToString:@"BECALL"]){ [[Pub getApp].talk talkEnd]; } else{ [[Pub getApp].talk watchEnd]; } } if([_CallTag isEqualToString:@"WATCH"]){ if([Pub getApp].talk.status==0){ [[Pub getApp].udp stopSend:@"" rr6:152 rr8:1]; } } [self UIClose]; } - (void)UIClose{ [[Pub getApp].talk status_ini]; [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; [Pub getApp].callOut = nil; } - (void)Answer{ if([Pub getApp].talk.status==6){ NSLog(@"接听"); [Pub getApp].TalkSendAudio = false; [[Pub getApp] ring_stop]; [[Pub getApp].talk talkOn]; } else{ [self TouchUp]; } } //接听成功 - (void)AnswerSucc{ NSLog(@"接听Succ"); dispatch_async(dispatch_get_main_queue(), ^{//转到主线程处理 [self.answerImage setImage:[UIImage imageNamed:@"ic_vd_mic_off"]]; [self.answerView addTarget:self action:@selector(TouchDown) forControlEvents:UIControlEventTouchDown]; [self.answerView addTarget:self action:@selector(TouchUp) forControlEvents:UIControlEventTouchUpInside]; [self.answerView addTarget:self action:@selector(TouchUp) forControlEvents:UIControlEventTouchUpOutside]; }); } -(void)TouchDown{ [self.answerImage setImage:[UIImage imageNamed:@"ic_vd_mic_on"]]; [Pub getApp].TalkSendAudio = true; } -(void)TouchUp{ [self.answerImage setImage:[UIImage imageNamed:@"ic_vd_mic_off"]]; [Pub getApp].TalkSendAudio = false; } - (void)Open{ self.openAlert = [Msg OpendoorByPwd:self SelectedHandler:^(int index) { [self alert:@"请输入6位数字密码"]; }]; } - (void)OpenDoorGo:(NSString *)pwd{ if(self.openAlert){ [self.openAlert dismissViewControllerAnimated:YES completion:nil]; [[Pub getApp].talk openDoor:pwd]; } } - (void)RefImg:(NSData *)data{ UIImage *image = [UIImage imageWithData: data]; //self.playerImage = [[UIImageView alloc] initWithImage:image]; [self.playerImage setImage:image]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark Property Accessors - (UIView *)rview { if (!_rview) { _rview = [[UIView alloc] init]; _rview.backgroundColor = [UIColor colorWithRed:0/255. green:0/255. blue:0/255. alpha:1]; } return _rview; } - (UILabel *)statuLabel { if (!_statuLabel) { _statuLabel = [[UILabel alloc] init]; _statuLabel.font = [UIFont systemFontOfSize:18.0f]; _statuLabel.textColor = [UIColor whiteColor]; _statuLabel.textAlignment = NSTextAlignmentCenter; _statuLabel.text = NSLocalizedString(@"", nil); } return _statuLabel; } //免提 - (UIView *)spkView { if (!_spkView) { _spkView = [[UIView alloc] init]; _spkView.backgroundColor = [UI colorWithHex:0x999999 alpha: .8]; } return _spkView; } - (UIImageView *)spkImage { if (!_spkImage) { _spkImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hf"]]; } return _spkImage; } //截图 - (UIView *)cutView { if (!_cutView) { _cutView = [[UIView alloc] init]; _cutView.backgroundColor = [UI colorWithHex:0x999999 alpha: .8]; } return _cutView; } - (UIImageView *)cutImage { if (!_cutImage) { _cutImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"save_photo"]]; } return _cutImage; } //挂机 - (UIView *)hangupView { if (!_hangupView) { _hangupView = [[UIView alloc] init]; _hangupView.backgroundColor = [UI colorWithHex:0xff0000 alpha: .8]; } return _hangupView; } - (UIImageView *)hangupImage { if (!_hangupImage) { _hangupImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hangup"]]; } return _hangupImage; } //接听 - (UIButton *)answerView { if (!_answerView) { _answerView = [[UIButton alloc] init]; _answerView.backgroundColor = [UI colorWithHex:0x2f6da8 alpha: .8]; } return _answerView; } - (UIImageView *)answerImage { if (!_answerImage) { _answerImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"call_call_on"]]; } return _answerImage; } //开门 - (UIView *)openView { if (!_openView) { _openView = [[UIView alloc] init]; _openView.backgroundColor = [UI colorWithHex:0x999999 alpha: .8]; } return _openView; } - (UIImageView *)openImage { if (!_openImage) { _openImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"unlock_on2"]]; } return _openImage; } //播放画面 - (UIScrollView *)scrollView{ if(!_scrollView){ _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, [UI getScreenWidth], [UI getScreenHeight])]; _scrollView.pagingEnabled = NO; _scrollView.showsHorizontalScrollIndicator = YES; _scrollView.showsVerticalScrollIndicator = NO; _scrollView.delegate = self; } return _scrollView; } - (UIImageView *)playerImage { if (!_playerImage) { //_playerImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"test.jpg"]]; _playerImage = [[UIImageView alloc] init]; } return _playerImage; } @end