From b4e1288a9b63eb820e9c9489c56aac4bf6b31067 Mon Sep 17 00:00:00 2001 From: Davin <591807572@qq.com> Date: 星期三, 18 十二月 2024 14:34:16 +0800 Subject: [PATCH] feature 图片资源更新 --- EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m | 828 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 757 insertions(+), 71 deletions(-) diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m index ad5c353..295632f 100644 --- a/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m +++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZLivePlayViewController.m @@ -11,19 +11,21 @@ #import <Photos/Photos.h> #import "EZLivePlayViewController.h" #import "UIViewController+EZBackPop.h" -#import "EZDeviceInfo.h" -#import "EZPlayer.h" +#import <EZOpenSDKFramework/EZDeviceInfo.h> +#import <EZOpenSDKFramework/EZPlayer.h> #import "DDKit.h" #import "Masonry.h" #import "HIKLoadView.h" #import "MBProgressHUD.h" -#import "EZCameraInfo.h" +#import <EZOpenSDKFramework/EZCameraInfo.h> #import <AVFoundation/AVFoundation.h> #import "Toast+UIView.h" -#import "EZStreamPlayer.h" +#import <EZOpenSDKFramework/EZStreamPlayer.h> #import "MBProgressHUD.h" - - +#import <EZOpenSDKFramework/EZPMPlayPrivateTokenInfo.h> +#import "HDLEZAlertInputView.h" +#import "HDLEZOPButton.h" +#import "HDLEZVideoDoorToolView.h" #define MinimumZoomScale 1.0 #define MaximumZoomScale 4.0 @@ -32,10 +34,12 @@ { NSOperation *op; BOOL _isPressed; + BOOL _landscape; // 鏄惁鏃嬭浆 } @property (nonatomic) BOOL isOpenSound; @property (nonatomic) BOOL isPlaying; +@property (nonatomic) BOOL isAnswering; // 姝e湪鎺ュ惉涓� @property (nonatomic, strong) NSTimer *recordTimer; @property (nonatomic) NSTimeInterval seconds; @property (nonatomic, strong) CALayer *orangeLayer; @@ -47,6 +51,9 @@ @property (nonatomic, strong) HIKLoadView *loadingView; @property (nonatomic, weak) IBOutlet UIButton *playerPlayButton; @property (nonatomic, weak) IBOutlet UIView *playerView; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playerViewWHRatio; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playerViewBottomMargin; + @property (nonatomic, weak) IBOutlet UIView *toolBar; @property (nonatomic, weak) IBOutlet UIView *bottomView; @property (nonatomic, weak) IBOutlet UIButton *controlButton; @@ -54,12 +61,16 @@ @property (nonatomic, weak) IBOutlet UIButton *captureButton; @property (nonatomic, weak) IBOutlet UIButton *localRecordButton; @property (nonatomic, weak) IBOutlet UIButton *playButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *playBtnLeftMargin; @property (weak, nonatomic) IBOutlet UIButton *streamPlayBtn; @property (nonatomic, weak) IBOutlet UIButton *voiceButton; @property (nonatomic, weak) IBOutlet UIButton *qualityButton; @property (nonatomic, weak) IBOutlet UIButton *emptyButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *emptyBtnLeftMargin; @property (nonatomic, weak) IBOutlet UIButton *largeButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *largeBtnRightMargin; @property (nonatomic, weak) IBOutlet UIButton *largeBackButton; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *largeBackBtnLeftMargin; @property (nonatomic, weak) IBOutlet UIView *ptzView; @property (nonatomic, weak) IBOutlet UIButton *ptzCloseButton; @property (nonatomic, weak) IBOutlet UIButton *ptzControlButton; @@ -88,7 +99,24 @@ @property (nonatomic, strong) EZCameraInfo *cameraInfo; @property (weak, nonatomic) IBOutlet UILabel *streamTypeLabel; @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollViewTopMargin; @property (weak, nonatomic) IBOutlet UILabel *zoomSizeLabel; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *scrollViewWHRatio; // 婊氬姩瑙嗗浘瀹介珮姣� +@property (nonatomic, strong) HDLEZButton *unlockButton;//寮�閿佹寜閽� + +@property (nonatomic, copy) NSString *streamToken; + +@property (nonatomic, strong) UIView *doorPlayerView;//闂ㄩ攣鎾斁view +@property (nonatomic, assign) CGFloat doorPlayerAspectRatio; // 闂ㄩ攣鎾斁瑙嗗浘瀹介珮姣� + +// 鍛煎彨瑙嗗浘鐩稿叧鎺т欢 +@property (weak, nonatomic) IBOutlet UIView *videoCallOutView; // 鍛煎彨寮规 +@property (weak, nonatomic) IBOutlet UILabel *callOutAlertLabel; // 鎻愮ず璇█ +@property (weak, nonatomic) IBOutlet HDLEZOPButton *hangUpButton; // 鎸傛柇鎸夐挳 +@property (weak, nonatomic) IBOutlet HDLEZOPButton *ignoreButton; // 蹇界暐鎸夐挳 +@property (weak, nonatomic) IBOutlet HDLEZOPButton *answerButton; // 鎺ュ惉鎸夐挳 + +@property (strong, nonatomic) HDLEZVideoDoorToolView *fullSceneToolView; // 鍏ㄥ睆宸ュ叿瑙嗗浘 @end @@ -109,12 +137,237 @@ self.isStartingTalk = NO; self.ptzView.hidden = YES; self.talkView.hidden = YES; + self.isAnswering = NO; + self.videoCallOutView.hidden = YES; + self.doorPlayerAspectRatio = HDLEZ_APP_SCREEN_WIDTH / HDLEZ_APP_SCREEN_HEIGHT; + _landscape = NO; + if (!self.deviceInfo) {//濡傛灉娌℃湁浼燿eviceInfo,闇�涓诲姩鑾峰彇 + [self getDeviceInfo]; + return; + } + + //鍒濆鍖栫浉鍏虫暟鎹� + [self initialData]; + [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:HDLEZHEXCOLOR(0x1B2D4D, 1.),NSFontAttributeName:[UIFont systemFontOfSize:18]}]; + +// self.talkButton.enabled = self.deviceInfo.isSupportTalk; +// self.controlButton.enabled = self.deviceInfo.isSupportPTZ; +// self.captureButton.enabled = NO; +// self.localRecordButton.enabled = NO; +// self.streamPlayBtn.hidden = YES; +// +// if (_url) +// { +// _player = [EZOPENSDK createPlayerWithUrl:_url]; +// } +// else if([self.deviceInfo.deviceType containsString:@"CAS"]) //hub +// { +// _cameraInfo = [[EZCameraInfo alloc]init]; //鍏煎demo涔嬪墠鐨勪笟鍔¢�昏緫锛屾墜鍔ㄥ~鍏呬簡cameraInfo锛屽疄闄呭紑鍙戠洿鎺ヤ紶鍏ュ簭鍒楀彿鍜岄�氶亾鍙风敓鎴怑ZPlayer鍗冲彲 +// _cameraInfo.deviceSerial = _hubCoDevSerial; +// _cameraInfo.cameraNo = _cameraIndex; +// _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; +// } +// else +// { +// _cameraInfo = [self.deviceInfo.cameraInfo dd_objectAtIndex:_cameraIndex]; +// _player = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; +// _talkPlayer = [EZOPENSDK createPlayerWithDeviceSerial:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo]; +// if (_cameraInfo.videoLevel == 2) +// { +// [self.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"楂樻竻") forState:UIControlStateNormal]; +// } +// else if (_cameraInfo.videoLevel == 1) +// { +// [self.qualityButton setTitle:NSLocalizedString(@"device_quality_median", @"鍧囪 ") forState:UIControlStateNormal]; +// } +// else +// { +// [self.qualityButton setTitle:NSLocalizedString(@"device_quality_low",@"娴佺晠") forState:UIControlStateNormal]; +// } +// } +// if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //涓嶆敮鎸佹竻鏅板害鍒囨崲 +// self.qualityButton.hidden = YES; +// } +// +// if (self.deviceInfo.cameraInfo.count > 1) { +// self.title = [NSString stringWithFormat:@"Camera %ld", (long)_cameraInfo.cameraNo]; +// } +// else { +// self.title = _deviceInfo.deviceName; +// } +// self.largeTitleLabel.text = self.title; +// [self hidenWatchFunc]; +// +//#if DEBUG +// if (!_url) +// { +// //鎶撳浘鎺ュ彛婕旂ず浠g爜 +// [EZOPENSDK captureCamera:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo completion:^(NSString *url, NSError *error) { +// NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", _cameraInfo.deviceSerial, (int)_cameraInfo.cameraNo, url, error); +// }]; +// } +//#endif +// +// _player.delegate = self; +// _talkPlayer.delegate = self; +// //鍒ゆ柇璁惧鏄惁鍔犲瘑锛屽姞瀵嗗氨浠巇emo鐨勫唴瀛樹腑鑾峰彇璁惧楠岃瘉鐮佸~鍏ュ埌鎾斁鍣ㄧ殑楠岃瘉鐮佹帴鍙i噷锛屾湰demo鍙鐞嗗唴瀛樺瓨鍌紝鏈湴鎸佷箙鍖栧瓨鍌ㄧ敤鎴疯嚜琛屽畬鎴� +// if (self.deviceInfo.isEncrypt) +// { +// NSString *verifyCode = [[GlobalKit shareKit].deviceVerifyCodeBySerial objectForKey:self.deviceInfo.deviceSerial]; +// [_player setPlayVerifyCode:verifyCode]; +// [_talkPlayer setPlayVerifyCode:verifyCode]; +// } +// [_player setPlayerView:_playerView]; +// BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]]; +// [_player setHDPriority:hdStatus]; +// [_player startRealPlay]; +// +// if(!_loadingView) +// _loadingView = [[HIKLoadView alloc] initWithHIKLoadViewStyle:HIKLoadViewStyleSqureClockWise]; +// [self.view insertSubview:_loadingView aboveSubview:self.playerView]; +// [_loadingView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.width.height.mas_equalTo(@14); +// make.centerX.mas_equalTo(self.playerView.mas_centerX); +// make.centerY.mas_equalTo(self.playerView.mas_centerY); +// }]; +// [self.loadingView startSquareClcokwiseAnimation]; +// +// self.largeBackButton.hidden = YES; +// _isOpenSound = YES; +// +// [self.controlButton dd_centerImageAndTitle]; +// [self.talkButton dd_centerImageAndTitle]; +// [self.captureButton dd_centerImageAndTitle]; +// [self.localRecordButton dd_centerImageAndTitle]; +// +// [self.voiceButton setImage:[UIImage imageNamed:@"preview_unvoice_btn_sel"] forState:UIControlStateHighlighted]; +// [self addLine]; +// +// self.localRecordLabel.layer.borderColor = [UIColor whiteColor].CGColor; +// self.localRecordLabel.layer.cornerRadius = 12.0f; +// self.localRecordLabel.layer.borderWidth = 1.0f; +// self.localRecordLabel.clipsToBounds = YES; +// self.playButton.enabled = NO; +// +// +// self.scrollView.minimumZoomScale = MinimumZoomScale; +// self.scrollView.maximumZoomScale = MaximumZoomScale; +// self.scrollView.backgroundColor = [UIColor clearColor]; +// self.scrollView.delegate = self; +// self.scrollView.showsHorizontalScrollIndicator = NO; +// self.scrollView.showsVerticalScrollIndicator = NO; +// self.scrollView.userInteractionEnabled = YES; +// self.scrollView.multipleTouchEnabled = YES; +// self.scrollView.pagingEnabled = NO; +// +// if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂锛屽彧鏄剧ず楹﹀厠椋庡拰寮�闂ㄦ寜閽� +// self.captureButton.hidden=YES; +// self.localRecordButton.hidden=YES; +// +// [self.controlButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal]; +// } +} + +/*娣诲姞闂ㄩ攣鎾斁view + */ +-(UIView*)doorPlayerView{ + if (!_doorPlayerView) { + _doorPlayerView=[[UIView alloc] init]; + [_playerView addSubview:_doorPlayerView]; + [_doorPlayerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(_playerView.mas_centerX); + make.top.bottom.equalTo(_playerView); + make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(1); + }]; + } + return _doorPlayerView; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if (self.navigationController) { + self.navigationController.navigationBar.hidden = NO; + [self.navigationController setNavigationBarHidden:NO]; + } +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.navigationController.navigationBar.hidden = NO;//2021-02-01 + self.ptzViewContraint.constant = self.bottomView.frame.size.height; + self.talkViewContraint.constant = self.ptzViewContraint.constant; +} + +- (void)viewWillDisappear:(BOOL)animated { +// self.navigationController.navigationBarHidden = YES;//2021-02-01 娣诲姞闅愯棌navigationBarHidden + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil]; + //缁撴潫鏈湴褰曞儚 + if(self.localRecordButton.selected) + { + __weak __typeof(self)weakSelf = self; + [_player stopLocalRecordExt:^(BOOL ret) { + + NSLog(@"%d", ret); + + [weakSelf.recordTimer invalidate]; + weakSelf.recordTimer = nil; + weakSelf.localRecordLabel.hidden = YES; + [weakSelf saveRecordToPhotosAlbum:weakSelf.filePath]; + weakSelf.filePath = nil; + }]; + } + + NSLog(@"viewWillDisappear"); + [super viewWillDisappear:animated]; +} + +- (void)viewDidDisappear:(BOOL)animated +{ + NSLog(@"viewDidDisappear"); + [super viewDidDisappear:animated]; + [_player stopRealPlay]; + if (_talkPlayer) + { + [_talkPlayer stopVoiceTalk]; + } +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/*鑾峰彇璁惧淇℃伅 + */ +-(void)getDeviceInfo{ + __weak __typeof(self)weakSelf = self; + //鑾峰彇璁惧淇℃伅 + [EZOpenSDK getDeviceInfo:self.deviceSerial completion:^(EZDeviceInfo *deviceInfo, NSError *error) { + if(error) + { + NSLog(@"EZ 鏌ヨ璁惧淇℃伅澶辫触:%@",error); + [weakSelf.view makeToast:error.userInfo[@"NSLocalizedDescription"] + duration:1.5 + position:@"center"]; + return; + } + if (deviceInfo) { + self.deviceInfo=deviceInfo; + [self initialData]; + } + }]; +} + +/*鍒濆鍖栫浉鍏虫暟鎹� + */ +-(void)initialData{ self.talkButton.enabled = self.deviceInfo.isSupportTalk; self.controlButton.enabled = self.deviceInfo.isSupportPTZ; self.captureButton.enabled = NO; self.localRecordButton.enabled = NO; self.streamPlayBtn.hidden = YES; +// self.isShowAlert = YES; if (_url) { @@ -147,6 +400,7 @@ } if (_cameraInfo.cameraNo == 0 || [self.deviceInfo.deviceType containsString:@"CAS"]) { //涓嶆敮鎸佹竻鏅板害鍒囨崲 self.qualityButton.hidden = YES; + [self.fullSceneToolView supportVideoLevelChange:NO]; } if (self.deviceInfo.cameraInfo.count > 1) { @@ -162,8 +416,9 @@ if (!_url) { //鎶撳浘鎺ュ彛婕旂ず浠g爜 + __weak __typeof(self)weakSelf = self; [EZOPENSDK captureCamera:_cameraInfo.deviceSerial cameraNo:_cameraInfo.cameraNo completion:^(NSString *url, NSError *error) { - NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", _cameraInfo.deviceSerial, (int)_cameraInfo.cameraNo, url, error); + NSLog(@"[%@] capture cameraNo is [%d] url is %@, error is %@", weakSelf.cameraInfo.deviceSerial, (int)weakSelf.cameraInfo.cameraNo, url, error); }]; } #endif @@ -177,7 +432,11 @@ [_player setPlayVerifyCode:verifyCode]; [_talkPlayer setPlayVerifyCode:verifyCode]; } - [_player setPlayerView:_playerView]; +// if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂 + [_player setPlayerView:self.doorPlayerView]; +// }else{ +// [_player setPlayerView:_playerView]; +// } BOOL hdStatus = [[NSUserDefaults standardUserDefaults] boolForKey:[NSString stringWithFormat:@"EZVideoPlayHardDecodingStatus_%@", self.deviceInfo.deviceSerial]]; [_player setHDPriority:hdStatus]; [_player startRealPlay]; @@ -219,51 +478,98 @@ self.scrollView.userInteractionEnabled = YES; self.scrollView.multipleTouchEnabled = YES; self.scrollView.pagingEnabled = NO; -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - self.ptzViewContraint.constant = self.bottomView.frame.size.height; - self.talkViewContraint.constant = self.ptzViewContraint.constant; -} - -- (void)viewWillDisappear:(BOOL)animated { - [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(hideQualityView) object:nil]; - //缁撴潫鏈湴褰曞儚 - if(self.localRecordButton.selected) - { - [_player stopLocalRecordExt:^(BOOL ret) { - - NSLog(@"%d", ret); - - [_recordTimer invalidate]; - _recordTimer = nil; - self.localRecordLabel.hidden = YES; - [self saveRecordToPhotosAlbum:_filePath]; - _filePath = nil; + + if ([GlobalKit shareKit].deviceType==HDLEZDeviceType_Door) {//涓洪棬閿佹椂锛屾樉绀洪害鍏嬮 +// self.captureButton.hidden=YES; +// self.localRecordButton.hidden=YES; + self.controlButton.hidden=YES; + + //閲嶈鎺у埗鍙版寜閽� + _unlockButton=[[HDLEZButton alloc] init]; + [self.bottomView addSubview:_unlockButton]; + [_unlockButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.bottom.equalTo( self.controlButton); }]; + [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock_disable"] forState:UIControlStateNormal]; + [_unlockButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal]; + [_unlockButton dd_centerImageAndTitle]; + [_unlockButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateNormal]; + _unlockButton.titleLabel.font=[UIFont systemFontOfSize:14]; + [_unlockButton addTarget:self action:@selector(unlockDoor) forControlEvents:UIControlEventTouchUpInside]; + _unlockButton.enabled=NO; +// self.controlButton.enabled=YES; +// [self.controlButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal]; +// [self.controlButton setTitle:NSLocalizedString(@"device_open", @"寮�闂�") forState:UIControlStateNormal]; } - NSLog(@"viewWillDisappear"); - [super viewWillDisappear:animated]; -} - -- (void)viewDidDisappear:(BOOL)animated -{ - NSLog(@"viewDidDisappear"); - [super viewDidDisappear:animated]; - [_player stopRealPlay]; - if (_talkPlayer) - { - [_talkPlayer stopVoiceTalk]; + self.callOutAlertLabel.text = HDLEZLocallizedString(@"device_callout_alert_message"); + [self.hangUpButton setTitle:HDLEZLocallizedString(@"device_callout_hang_up") forState:UIControlStateNormal]; + self.hangUpButton.imagePosition = HDLEZOPButtonImagePositionTop; + self.hangUpButton.spacingBetweenImageAndTitle = 12.; + [self.ignoreButton setTitle:HDLEZLocallizedString(@"device_callout_ignore") forState:UIControlStateNormal]; + self.ignoreButton.imagePosition = HDLEZOPButtonImagePositionTop; + self.ignoreButton.spacingBetweenImageAndTitle = 12.; + [self.answerButton setTitle:HDLEZLocallizedString(@"device_callout_answered") forState:UIControlStateNormal]; + self.answerButton.imagePosition = HDLEZOPButtonImagePositionTop; + self.answerButton.spacingBetweenImageAndTitle = 12.; + + // 闂ㄩ攣鍏ㄥ睆鐘舵�佷笅宸ュ叿鏍� + [self.view addSubview:self.fullSceneToolView]; + __weak __typeof(self)weakSelf = self; + [self.fullSceneToolView ringRingRing:YES]; // 榛樿鏄剧ず鎸傛柇鎸夐挳 + [self.fullSceneToolView configPlayStatus:YES soundOn:YES videoLevel:_cameraInfo.videoLevel toolOperation:^(HDLEZVideoFullSceneOperation operationType) { + [weakSelf doorLockFullSceneOperation:operationType]; + }]; + + // 鎸傛柇寮规 + if (_isShowAlert) { + [self showCallOutAlertView]; + } else { + [self hiddenCallOutAlertView]; } } -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} +/*寮�閿� + */ +-(void)unlockDoor{ + if (![self isSupportOneKeyUnlockDoor]) { // 涓嶆敮鎸佷竴閿紑閿� + [UIView dd_showMessage:@"璇ヨ澶囦笉鏀寔涓�閿紑閿�"]; + return; + } + [HDLEZAlertInputView showInputAlertWithtitle:HDLEZLocallizedString(@"device_please_input_door_password") cancleTitle:HDLEZLocallizedString(@"device_temp_cancle") sureTitle:HDLEZLocallizedString(@"device_temp_sure") keyboardType:UIKeyboardTypeASCIICapableNumberPad cancleBlock:^{ + + } sureBlock:^(NSString * _Nonnull content) { + HDLEZLog(@"鐐瑰嚮浜嗙‘璁わ細%@",content); + [MBProgressHUD showHUDAddedTo:self.view animated:YES]; + __weak __typeof(self)weakSelf = self; + [[EZHttpUtil sharedManager] authLockByHDL:content deviceId:self.deviceId completion:^(ResponseData * _Nonnull responseData) { + if (responseData.success) { + [[EZHttpUtil sharedManager] remoteOpenByHDL:weakSelf.streamToken deviceId:weakSelf.deviceId completion:^(ResponseData * _Nonnull responseData) { + [MBProgressHUD hideHUDForView:weakSelf.view animated:YES]; + if (responseData.success) { + [weakSelf.view makeToast:HDLEZLocallizedString(@"device_open_success") + duration:1.5 + position:@"center"]; + }else{ + [weakSelf.view makeToast:responseData.message + duration:1.5 + position:@"center"]; + } + }]; + }else{ + [MBProgressHUD hideHUDForView:weakSelf.view animated:YES]; + [weakSelf.view makeToast:responseData.message + duration:1.5 + position:@"center"]; + } + }]; + + }]; + + + +} /* #pragma mark - Navigation @@ -291,29 +597,87 @@ } } -- (UIInterfaceOrientationMask)supportedInterfaceOrientations -{ - return UIInterfaceOrientationMaskAllButUpsideDown; +//- (UIInterfaceOrientationMask)supportedInterfaceOrientations +//{ +// return UIInterfaceOrientationMaskAllButUpsideDown; +//} +- (UIInterfaceOrientationMask)supportedInterfaceOrientations { + if (@available(iOS 16.0, *)) { + if (_landscape && !self.isVideoDoorLock) { + //妯睆 + return UIInterfaceOrientationMaskLandscape; + } else { + //绔栧睆 + return UIInterfaceOrientationMaskPortrait; + } + } else { + return UIInterfaceOrientationMaskAllButUpsideDown; + } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + if (self.isVideoDoorLock) return; self.navigationController.navigationBarHidden = NO; self.toolBar.hidden = NO; self.largeBackButton.hidden = YES; self.bottomView.hidden = NO; self.largeTitleLabel.hidden = YES; self.localRecrodContraint.constant = 10; + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.playButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.emptyButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.largeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; +// [self.largeBackButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0]; + self.playBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.playButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.toolBar attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + self.emptyBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.emptyButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.qualityButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + self.largeBtnRightMargin = [NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.largeButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.toolBar layoutIfNeeded]; + [self.playButton layoutIfNeeded]; + [self.emptyButton layoutIfNeeded]; + [self.largeButton layoutIfNeeded]; + }); + if(toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) { self.navigationController.navigationBarHidden = YES; self.localRecrodContraint.constant = 50; - self.toolBar.hidden = YES; +// self.toolBar.hidden = YES; self.largeTitleLabel.hidden = NO; self.largeBackButton.hidden = NO; self.bottomView.hidden = YES; + + CGFloat tureScreenW = HDLEZ_APP_SCREEN_WIDTH > HDLEZ_APP_SCREEN_HEIGHT ? HDLEZ_APP_SCREEN_HEIGHT : HDLEZ_APP_SCREEN_WIDTH; + CGFloat tureScreenH = HDLEZ_APP_SCREEN_WIDTH < HDLEZ_APP_SCREEN_HEIGHT ? HDLEZ_APP_SCREEN_HEIGHT : HDLEZ_APP_SCREEN_WIDTH; + CGFloat marginSpace = 64; + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.toolBar setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.playButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.emptyButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.largeButton setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:tureScreenH/(tureScreenW - 37) constant:0]; + self.playBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.playButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.toolBar attribute:NSLayoutAttributeLeading multiplier:1 constant:marginSpace]; + self.emptyBtnLeftMargin = [NSLayoutConstraint constraintWithItem:self.emptyButton attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.qualityButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:(tureScreenH - tureScreenW - 2 * marginSpace)]; + self.largeBtnRightMargin = [NSLayoutConstraint constraintWithItem:self.toolBar attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.largeButton attribute:NSLayoutAttributeTrailing multiplier:1 constant:marginSpace]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewWHRatio, self.playBtnLeftMargin, self.emptyBtnLeftMargin, self.largeBtnRightMargin]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.toolBar layoutIfNeeded]; + [self.playButton layoutIfNeeded]; + [self.emptyButton layoutIfNeeded]; + [self.largeButton layoutIfNeeded]; + }); } } @@ -366,6 +730,28 @@ } [_emptyButton setTitle:[NSString stringWithFormat:fromatStr,value] forState:UIControlStateNormal]; +} + + +/** + * 鏀跺埌鐨勭敾闈㈤暱瀹藉�� + * + * @param player 鎾斁鍣ㄥ璞� + * @param height 楂樺害 + * @param width 瀹藉害 + */ +- (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width{ + NSLog(@"鐢婚潰闀匡細%ld锛屽锛�%ld",(long)height,(long)width); + CGFloat playerVH=self.playerView.frame.size.height; +// HDLEZLog(@"楂橈細%ld",(long)playerVH); + CGFloat ratio=((CGFloat)width)/((CGFloat)height); + NSLog(@"姣斾緥锛�%f",ratio); +// CGFloat playerVW=playerVH*ratio; + self.doorPlayerAspectRatio = ratio; +// HDLEZLog(@"瀹斤細%ld",(long)playerVW); + [self.doorPlayerView mas_updateConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(_doorPlayerView.mas_height).multipliedBy(ratio); + }]; } @@ -491,6 +877,20 @@ } } +/** 鏅鸿兘闂ㄩ攣寮�闂╰oken */ +- (void)player:(EZPlayer *)player playPrivateTokenInfo:(EZPMPlayPrivateTokenInfo *)tokenInfo { + NSLog(@"寮�闂╰oken--->%@", tokenInfo.token); + self.streamToken=tokenInfo.token; + + if (!_unlockButton.isEnabled) { + if ([self isSupportOneKeyUnlockDoor]) { // 鏀寔涓�閿紑閿� + [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock"] forState:UIControlStateNormal]; + } else { + [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock_disable"] forState:UIControlStateNormal]; + } + _unlockButton.enabled=YES; + } +} #pragma mark - ValidateCode Methods - (void)showSetPassword @@ -551,14 +951,122 @@ - (IBAction)large:(id)sender { - NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; - [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + if (!self.isPlaying)return; // 鏈挱鏀剧姝㈠叏灞忥紝 + self.videoCallOutView.hidden = YES; + if (_landscape == YES) { + [self largeBack:self.largeBackButton]; + return; + } + _landscape = YES; + if (self.isVideoDoorLock) { + self.navigationController.navigationBarHidden = YES; + self.localRecrodContraint.constant = 50; + self.toolBar.hidden = YES; + self.largeTitleLabel.hidden = YES; + self.largeBackButton.hidden = YES; + self.bottomView.hidden = YES; + self.scrollView.backgroundColor = [UIColor blackColor]; + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.playerView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]]; + self.scrollViewTopMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:-[self hdlEZStatusBarHeight]]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:HDLEZ_APP_SCREEN_WIDTH/HDLEZ_APP_SCREEN_HEIGHT constant:0]; + + self.playerViewWHRatio = [NSLayoutConstraint constraintWithItem:self.playerView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeHeight multiplier:self.doorPlayerAspectRatio constant:0]; + CGFloat playerBottomMargin = HDLEZ_APP_SCREEN_HEIGHT - (HDLEZ_APP_SCREEN_WIDTH / self.doorPlayerAspectRatio); + NSLog(@"########鎾斁闂撮殭锛�%lf", playerBottomMargin); + self.playerViewBottomMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:playerBottomMargin]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin, self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.playerView layoutIfNeeded]; + }); + self.fullSceneToolView.hidden = NO; + [self.view bringSubviewToFront:self.fullSceneToolView]; + return; + } + if (@available(iOS 16.0, *)) { + if (self.navigationController) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } + NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects]; + UIWindowScene *ws = (UIWindowScene *)array.firstObject; + UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init]; + geometryPreferences.interfaceOrientations = UIInterfaceOrientationMaskLandscape; + [ws requestGeometryUpdateWithPreferences:geometryPreferences errorHandler:^(NSError * _Nonnull error) { + NSLog(@"iOS 16 Error: %@",error); + }]; + } else { + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.largeButton setImage:[UIImage imageNamed:@"preview_enlarge_full"] forState:UIControlStateNormal]; + [self.largeButton setImage:[UIImage imageNamed:@"preview_enlarge_full_btn_sel"] forState:UIControlStateHighlighted]; + }); } - (IBAction)largeBack:(id)sender { - NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; - [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + _landscape = NO; + if (self.isVideoDoorLock) { + self.navigationController.navigationBarHidden = NO; + self.toolBar.hidden = NO; + self.largeBackButton.hidden = YES; + self.bottomView.hidden = NO; + self.largeTitleLabel.hidden = YES; + self.localRecrodContraint.constant = 10; + self.videoCallOutView.hidden = !self.isShowAlert; + self.scrollView.backgroundColor = [UIColor clearColor]; + + [self.scrollView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [self.playerView setTranslatesAutoresizingMaskIntoConstraints:NO]; + [NSLayoutConstraint deactivateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]]; + self.scrollViewTopMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.topLayoutGuide attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]; + self.scrollViewWHRatio = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.scrollView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0]; + + self.playerViewWHRatio = [NSLayoutConstraint constraintWithItem:self.playerView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeHeight multiplier:16/9. constant:0]; + self.playerViewBottomMargin = [NSLayoutConstraint constraintWithItem:self.scrollView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.playerView attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0]; + [NSLayoutConstraint activateConstraints:@[self.scrollViewTopMargin,self.scrollViewWHRatio, self.playerViewWHRatio, self.playerViewBottomMargin]]; + dispatch_async(dispatch_get_main_queue(), ^{ + [self.scrollView layoutIfNeeded]; + [self.playerView layoutIfNeeded]; + }); + self.fullSceneToolView.hidden = YES; + return; + } + if (@available(iOS 16.0, *)) { + if (self.navigationController) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.navigationController setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } else { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setNeedsUpdateOfSupportedInterfaceOrientations]; + }); + } + NSArray *array = [[[UIApplication sharedApplication] connectedScenes] allObjects]; + UIWindowScene *ws = (UIWindowScene *)array.firstObject; + UIWindowSceneGeometryPreferencesIOS *geometryPreferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init]; + geometryPreferences.interfaceOrientations = UIInterfaceOrientationMaskPortrait; + [ws requestGeometryUpdateWithPreferences:geometryPreferences errorHandler:^(NSError * _Nonnull error) { + NSLog(@"iOS 16 Error: %@",error); + }]; + } else { + NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; + [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; + } + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.largeButton setImage:[UIImage imageNamed:@"preview_enlarge"] forState:UIControlStateNormal]; + [self.largeButton setImage:[UIImage imageNamed:@"preview_enlarge_btn_sel"] forState:UIControlStateHighlighted]; + }); } - (IBAction)capture:(id)sender @@ -624,6 +1132,7 @@ [self.voiceButton setImage:[UIImage imageNamed:@"preview_voice_btn"] forState:UIControlStateNormal]; } _isOpenSound = !_isOpenSound; + [self.fullSceneToolView soundOn:_isOpenSound]; } - (IBAction)playButtonClicked:(id)sender @@ -637,6 +1146,11 @@ self.localRecordButton.enabled = NO; self.captureButton.enabled = NO; self.playerPlayButton.hidden = NO; + + //寮�闂ㄦ寜閽疆鐏帮紝涓嶇粰鐐瑰嚮锛堟殏鍋滅殑鎯呭喌涓嬩笉缁欏紑闂級 + [_unlockButton setImage:[UIImage imageNamed:@"hdl_ez_ic_unlock_disable"] forState:UIControlStateNormal]; + _unlockButton.enabled=NO; + } else { @@ -647,6 +1161,11 @@ [self.loadingView startSquareClcokwiseAnimation]; } _isPlaying = !_isPlaying; + [self.fullSceneToolView playStatus:_isPlaying]; +} + +- (SEL)extracted { + return @selector(hideQualityView); } - (IBAction)qualityButtonClicked:(id)sender @@ -659,7 +1178,7 @@ { self.qualityView.hidden = NO; //鍋滅暀5s浠ュ悗闅愯棌瑙嗛璐ㄩ噺View. - [self performSelector:@selector(hideQualityView) withObject:nil afterDelay:5.0f]; + [self performSelector:[self extracted] withObject:nil afterDelay:5.0f]; } self.qualityButton.selected = !self.qualityButton.selected; } @@ -701,23 +1220,28 @@ if (error) { - [self.view makeToast:[NSString stringWithFormat:@"%@", error.description]]; +// [self.view makeToast:[NSString stringWithFormat:@"%@", error.description]]; + + [self.view makeToast:NSLocalizedString(@"setting_opration_fail", @"鎿嶄綔澶辫触")]; return; } [weakSelf.player stopRealPlay]; - _cameraInfo.videoLevel = type; + weakSelf.cameraInfo.videoLevel = type; if (sender == weakSelf.highButton) { [weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_high", @"楂樻竻") forState:UIControlStateNormal]; + [self.fullSceneToolView videoLevel:2]; } else if (sender == weakSelf.middleButton) { [weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_median", @"鍧囪 ") forState:UIControlStateNormal]; + [self.fullSceneToolView videoLevel:1]; } else { [weakSelf.qualityButton setTitle:NSLocalizedString(@"device_quality_low", @"娴佺晠") forState:UIControlStateNormal]; + [self.fullSceneToolView videoLevel:0]; } if (result) { @@ -837,6 +1361,7 @@ self.speakImageView.alpha = 0; self.talkView.hidden = YES; }]; + self.isAnswering = NO; } - (IBAction)localButtonClicked:(id)sender @@ -844,15 +1369,16 @@ //缁撴潫鏈湴褰曞儚 if(self.localRecordButton.selected) { + __weak __typeof(self)weakSelf = self; [_player stopLocalRecordExt:^(BOOL ret) { NSLog(@"%d", ret); - [_recordTimer invalidate]; - _recordTimer = nil; - self.localRecordLabel.hidden = YES; - [self saveRecordToPhotosAlbum:_filePath]; - _filePath = nil; + [weakSelf.recordTimer invalidate]; + weakSelf.recordTimer = nil; + weakSelf.localRecordLabel.hidden = YES; + [weakSelf saveRecordToPhotosAlbum:weakSelf.filePath]; + weakSelf.filePath = nil; }]; } else @@ -929,6 +1455,47 @@ [self.talkPlayer audioTalkPressed:NO]; } _isPressed = !_isPressed; +} + +- (IBAction)clickCalloutHangupAction:(id)sender { + self.isShowAlert = NO; + [self closeTalkView:self.talkCloseButton]; + if (self.msgId && self.msgId.length > 0) { + [[EZHttpUtil sharedManager] updateAnswerStatusWithMsgId:self.msgId answerStatus:@"no_answer" completion:^(ResponseData * _Nonnull responseData) { + HDLEZLog(@"###########鎸傛柇####锛�%@", [responseData yy_modelToJSONString]); + }]; + } + [self.navigationController popViewControllerAnimated:YES]; +} + +- (IBAction)clickCalloutIgnoreAction:(id)sender { +// [UIView dd_showMessage:@"蹇界暐寮�鍙戜腑..."]; + self.isShowAlert = NO; + self.isAnswering = NO; + [self.navigationController popViewControllerAnimated:YES]; +} + +- (IBAction)clickCalloutAnswerAction:(id)sender { + self.isShowAlert = NO; + self.isAnswering = YES; + [self talkButtonClicked:self.talkButton]; + if (self.msgId && self.msgId.length > 0) { + [[EZHttpUtil sharedManager] updateAnswerStatusWithMsgId:self.msgId answerStatus:@"answer" completion:^(ResponseData * _Nonnull responseData) { + HDLEZLog(@"###########鎺ュ惉####锛�%@", [responseData yy_modelToJSONString]); + }]; + } +} + + +#pragma mark - Publish Methods +/// 灞曠ず鍛煎彨寮规 +- (void)showCallOutAlertView { + self.videoCallOutView.hidden = NO; +} + +/// 闅愯棌鍛煎彨寮规 +- (void)hiddenCallOutAlertView { + self.videoCallOutView.hidden = YES; } #pragma mark - Private Methods @@ -1049,19 +1616,43 @@ [view removeFromSuperview]; } } - CGFloat averageWidth = [UIScreen mainScreen].bounds.size.width/5.0; - UIImageView *lineImageView1 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]]; - lineImageView1.frame = CGRectMake(averageWidth, 7, lineImageView1.frame.size.width, lineImageView1.frame.size.height); +// CGFloat averageWidth = [UIScreen mainScreen].bounds.size.width/5.0; + UIImageView *lineImageView1 = [UIView dd_instanceVerticalLine:20 color:HDLEZHEXCOLOR(0xFFFFFF, 0.16)]; +// lineImageView1.frame = CGRectMake(averageWidth, 7, lineImageView1.frame.size.width, lineImageView1.frame.size.height); [self.toolBar addSubview:lineImageView1]; - UIImageView *lineImageView2 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]]; - lineImageView2.frame = CGRectMake(averageWidth * 2, 7, lineImageView2.frame.size.width, lineImageView2.frame.size.height); + [lineImageView1 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.playButton.mas_right); + make.centerY.mas_equalTo(self.playButton.mas_centerY); + make.width.mas_equalTo(lineImageView1.frame.size.width); + make.height.mas_equalTo(lineImageView1.frame.size.height); + }]; + UIImageView *lineImageView2 = [UIView dd_instanceVerticalLine:20 color:HDLEZHEXCOLOR(0xFFFFFF, 0.16)]; +// lineImageView2.frame = CGRectMake(averageWidth * 2, 7, lineImageView2.frame.size.width, lineImageView2.frame.size.height); [self.toolBar addSubview:lineImageView2]; - UIImageView *lineImageView3 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]]; - lineImageView3.frame = CGRectMake(averageWidth * 3, 7, lineImageView3.frame.size.width, lineImageView3.frame.size.height); + [lineImageView2 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.voiceButton.mas_right); + make.centerY.mas_equalTo(self.voiceButton.mas_centerY); + make.width.mas_equalTo(lineImageView2.frame.size.width); + make.height.mas_equalTo(lineImageView2.frame.size.height); + }]; + UIImageView *lineImageView3 = [UIView dd_instanceVerticalLine:20 color:HDLEZHEXCOLOR(0xFFFFFF, 0.16)]; +// lineImageView3.frame = CGRectMake(averageWidth * 3, 7, lineImageView3.frame.size.width, lineImageView3.frame.size.height); [self.toolBar addSubview:lineImageView3]; - UIImageView *lineImageView4 = [UIView dd_instanceVerticalLine:20 color:[UIColor grayColor]]; - lineImageView4.frame = CGRectMake(averageWidth * 4, 7, lineImageView4.frame.size.width, lineImageView4.frame.size.height); + [lineImageView3 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.qualityButton.mas_right); + make.centerY.mas_equalTo(self.qualityButton.mas_centerY); + make.width.mas_equalTo(lineImageView3.frame.size.width); + make.height.mas_equalTo(lineImageView3.frame.size.height); + }]; + UIImageView *lineImageView4 = [UIView dd_instanceVerticalLine:20 color:HDLEZHEXCOLOR(0xFFFFFF, 0.16)]; +// lineImageView4.frame = CGRectMake(averageWidth * 4, 7, lineImageView4.frame.size.width, lineImageView4.frame.size.height); [self.toolBar addSubview:lineImageView4]; + [lineImageView4 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.mas_equalTo(self.emptyButton.mas_right); + make.centerY.mas_equalTo(self.emptyButton.mas_centerY); + make.width.mas_equalTo(lineImageView4.frame.size.width); + make.height.mas_equalTo(lineImageView4.frame.size.height); + }]; } @@ -1162,5 +1753,100 @@ } } +#pragma mark - PrivateMethod (闂ㄩ攣鍏ㄥ睆鏃剁殑涓�绯诲垪鎿嶄綔) +- (void)doorLockFullSceneOperation:(HDLEZVideoFullSceneOperation)operation { + switch (operation) { + case HDLEZVideoFullSceneOperationOfHangUp: { // 鎸傛柇 + [self largeBack:self.largeButton]; + [self closeTalkView:self.talkCloseButton]; + [self hiddenCallOutAlertView]; + [self.navigationController popViewControllerAnimated:YES]; + } + break; + case HDLEZVideoFullSceneOperationOfPlay: { // 鎾斁 + [self playButtonClicked:self.playButton]; + } + break; + case HDLEZVideoFullSceneOperationOfPause: { // 鏆傚仠 + [self playButtonClicked:self.playButton]; + } + break; + case HDLEZVideoFullSceneOperationOfSound: { // 寮�鍚煶閲� + [self voiceButtonClicked:self.voiceButton]; + } + break; + case HDLEZVideoFullSceneOperationOfSoundOff: { // 闈欓煶 + [self voiceButtonClicked:self.voiceButton]; + } + break; + case HDLEZVideoFullSceneOperationOfSmooth: { // 娴佺晠 + [self qualitySelectedClicked:self.lowButton]; + } + break; + case HDLEZVideoFullSceneOperationOfBalance: { // 鍧囪 + [self qualitySelectedClicked:self.middleButton]; + } + break; + case HDLEZVideoFullSceneOperationOfHDFull: { // 楂樻竻 + [self qualitySelectedClicked:self.highButton]; + } + break; + case HDLEZVideoFullSceneOperationOfExitFull: { // 閫�鍑哄叏灞� + [self largeBack:self.largeButton]; + } + break; + default: + break; + } +} + +- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { + if (!self.fullSceneToolView.hidden) { + [self.fullSceneToolView qualityStatusChanged:YES]; + } +} + +#pragma Setter +- (void)setIsShowAlert:(BOOL)isShowAlert { + _isShowAlert = isShowAlert; + if (_isShowAlert) { + [self showCallOutAlertView]; + } else { + [self hiddenCallOutAlertView]; + } +} + +#pragma mark - Getter +- (HDLEZVideoDoorToolView *)fullSceneToolView { + if (!_fullSceneToolView) { + _fullSceneToolView = [[HDLEZVideoDoorToolView alloc] initWithFrame:CGRectMake(0, HDLEZ_APP_SCREEN_HEIGHT - 280, HDLEZ_APP_SCREEN_WIDTH, 280)]; + _fullSceneToolView.hidden = YES; + } + return _fullSceneToolView; +} + +- (BOOL)prefersHomeIndicatorAutoHidden { + return YES; +} + +- (CGFloat)hdlEZStatusBarHeight { + if (@available(iOS 13.0, *)) { + NSSet *set = [UIApplication sharedApplication].connectedScenes; + UIWindowScene *windowScene = [set anyObject]; + UIStatusBarManager *statusBarManager = windowScene.statusBarManager; + return statusBarManager.statusBarFrame.size.height; + } else { + return [UIApplication sharedApplication].statusBarFrame.size.height; + } +} + +/// 鏄惁鏀寔涓�閿紑閿� +- (BOOL)isSupportOneKeyUnlockDoor { + BOOL isSupport = YES; + if (self.deviceInfo && self.deviceInfo.deviceType && ([self.deviceInfo.deviceType containsString:@"LT20VC"] || [self.deviceInfo.deviceType containsString:@"LT20VC"])) { + isSupport = NO; + } + return isSupport; +} @end -- Gitblit v1.8.0