Kaynağa Gözat

1.推流页横屏UI初步调试完成

huangxiaodong 1 yıl önce
ebeveyn
işleme
f7f743bc6e

+ 12 - 0
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -436,6 +436,10 @@
 		6B3E7A762C8960CA00B032C4 /* webRtcPlayerBottomContrView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3E7A742C8960CA00B032C4 /* webRtcPlayerBottomContrView.m */; };
 		6B3E7A772C8960CA00B032C4 /* webRtcPlayerBottomContrView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3E7A732C8960CA00B032C4 /* webRtcPlayerBottomContrView.h */; };
 		6B3E7A782C8960CA00B032C4 /* webRtcPlayerBottomContrView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3E7A742C8960CA00B032C4 /* webRtcPlayerBottomContrView.m */; };
+		6B3E7A7B2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3E7A792C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h */; };
+		6B3E7A7C2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3E7A7A2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m */; };
+		6B3E7A7D2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3E7A792C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h */; };
+		6B3E7A7E2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3E7A7A2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m */; };
 		6B3F96342AD2A15A008E349E /* netWorkManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3F96322AD2A15A008E349E /* netWorkManager.h */; };
 		6B3F96352AD2A15A008E349E /* netWorkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3F96332AD2A15A008E349E /* netWorkManager.m */; };
 		6B3F963A2AD2AD0B008E349E /* newWorkInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3F96392AD2AD0B008E349E /* newWorkInterface.h */; };
@@ -1774,6 +1778,8 @@
 		6B3E7A6D2C89478A00B032C4 /* webRtcPlayerViewController+AdjustBtnFrame.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "webRtcPlayerViewController+AdjustBtnFrame.m"; sourceTree = "<group>"; };
 		6B3E7A732C8960CA00B032C4 /* webRtcPlayerBottomContrView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = webRtcPlayerBottomContrView.h; sourceTree = "<group>"; };
 		6B3E7A742C8960CA00B032C4 /* webRtcPlayerBottomContrView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = webRtcPlayerBottomContrView.m; sourceTree = "<group>"; };
+		6B3E7A792C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "webRtcPlayerViewController+AdjustPlayerViewFrame.h"; sourceTree = "<group>"; };
+		6B3E7A7A2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "webRtcPlayerViewController+AdjustPlayerViewFrame.m"; sourceTree = "<group>"; };
 		6B3F96322AD2A15A008E349E /* netWorkManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netWorkManager.h; sourceTree = "<group>"; };
 		6B3F96332AD2A15A008E349E /* netWorkManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = netWorkManager.m; sourceTree = "<group>"; };
 		6B3F96392AD2AD0B008E349E /* newWorkInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = newWorkInterface.h; sourceTree = "<group>"; };
@@ -3365,6 +3371,8 @@
 				6B86768F2C858CB300F81DFC /* webRtcPlayerViewController.m */,
 				6B3E7A6C2C89478A00B032C4 /* webRtcPlayerViewController+AdjustBtnFrame.h */,
 				6B3E7A6D2C89478A00B032C4 /* webRtcPlayerViewController+AdjustBtnFrame.m */,
+				6B3E7A792C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h */,
+				6B3E7A7A2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m */,
 			);
 			path = webRtc;
 			sourceTree = "<group>";
@@ -4103,6 +4111,7 @@
 				6BC741582C2413B20049BA8D /* webSocketManager+upLoadFile.h in Headers */,
 				6BA08F532C01D05B00A2242D /* CWUploadTask.h in Headers */,
 				6B2C1E682C070ADE00FDCF82 /* ZFLandscapeRotationManager_iOS16.h in Headers */,
+				6B3E7A7B2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h in Headers */,
 				6B9714402BCD00CA00CE0096 /* ComontAlretType2ViewController.h in Headers */,
 				18EC79DC2ABC109F0084836A /* SetPWDSecondViewController.h in Headers */,
 				6B4C0F662C0314BA0070EF2E /* DFPlayerLyricsTableview.h in Headers */,
@@ -4384,6 +4393,7 @@
 				6BC7415A2C2413B20049BA8D /* webSocketManager+upLoadFile.h in Headers */,
 				6BA08F542C01D05B00A2242D /* CWUploadTask.h in Headers */,
 				6B2C1E692C070ADE00FDCF82 /* ZFLandscapeRotationManager_iOS16.h in Headers */,
+				6B3E7A7D2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.h in Headers */,
 				6B9714412BCD00CA00CE0096 /* ComontAlretType2ViewController.h in Headers */,
 				6BD506EB2B9576A4006E7CB0 /* SetPWDSecondViewController.h in Headers */,
 				6B4C0F672C0314BA0070EF2E /* DFPlayerLyricsTableview.h in Headers */,
@@ -4980,6 +4990,7 @@
 				6BF558CD2C45394F00701854 /* audioPlayListViewCell.m in Sources */,
 				6B9354912BF30A8C00AA8D31 /* editTypeBottomView.m in Sources */,
 				6BD5074B2B9576A4006E7CB0 /* couldPhoneFileListModel.m in Sources */,
+				6B3E7A7E2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m in Sources */,
 				6BD5074C2B9576A4006E7CB0 /* AFNetworkActivityIndicatorManager.m in Sources */,
 				6BD5074D2B9576A4006E7CB0 /* downloadThumbnailManager.m in Sources */,
 				6BD5074E2B9576A4006E7CB0 /* couldPhoneBaseInfoModel.m in Sources */,
@@ -5343,6 +5354,7 @@
 				6BF558CB2C45394F00701854 /* audioPlayListViewCell.m in Sources */,
 				6B93548E2BF30A8C00AA8D31 /* editTypeBottomView.m in Sources */,
 				6B5D40282B4BC402000965CF /* couldPhoneFileListModel.m in Sources */,
+				6B3E7A7C2C89AD5500B032C4 /* webRtcPlayerViewController+AdjustPlayerViewFrame.m in Sources */,
 				183AE64E2A8A2CF000B11CB0 /* AFNetworkActivityIndicatorManager.m in Sources */,
 				6B5D40382B4BEEF8000965CF /* downloadThumbnailManager.m in Sources */,
 				6B7272582B0DAF7600C03F87 /* couldPhoneBaseInfoModel.m in Sources */,

+ 1 - 3
创维盒子/双子星云手机/webRtc/WebRTC.framework/Headers/AMediaStream.h

@@ -21,9 +21,7 @@ RTC_OBJC_EXPORT
 
 -(void)onChannelDataFromPeerName:(NSString*)peerName buffer:(RTC_OBJC_TYPE(RTCDataBuffer) *)buffer;
 
--(void)onIceConnectedFromPeerName:(NSString*)peerName ;
-
--(void)onIceDisconnectedFromPeerName:(NSString*)peerName;
+-(void)onChangeConnectionStateFromPeerName:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state;
 
 -(void)onFrameResolutionChangedFromPeerName:(NSString*)peerName videoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation;
 

BIN
创维盒子/双子星云手机/webRtc/WebRTC.framework/WebRTC


+ 2 - 2
创维盒子/双子星云手机/webRtc/WebRTC.framework/_CodeSignature/CodeResources

@@ -6,7 +6,7 @@
 	<dict>
 		<key>Headers/AMediaStream.h</key>
 		<data>
-		P/tG0XKQkej1J1xhK4D2sS7/9YU=
+		8VcGaqj4cgyB84UGn+F5zw65WzM=
 		</data>
 		<key>Headers/ANatsSignalChannel.h</key>
 		<data>
@@ -387,7 +387,7 @@
 		<dict>
 			<key>hash2</key>
 			<data>
-			wDwING3aaj/paX2tvDh7kvVkiQF6Is6zttNQrNsKO1Y=
+			7uHQGw/hf6e4mwN15wK8EC15HOuvbAHPIs3E+ogntHQ=
 			</data>
 		</dict>
 		<key>Headers/ANatsSignalChannel.h</key>

+ 2 - 1
创维盒子/双子星云手机/webRtc/view/webRtcPlayerBottomContrView.h

@@ -12,7 +12,8 @@ NS_ASSUME_NONNULL_BEGIN
 @interface webRtcPlayerBottomContrView : UIView
 @property (nonatomic,copy) void (^didClickButtonFun)(NSInteger tag);
 
-- (void)updateFrameFun;
+//isLan 是否横屏
+- (void)updateFrameFunByIsLan:(BOOL)isLan;
 @end
 
 NS_ASSUME_NONNULL_END

+ 50 - 24
创维盒子/双子星云手机/webRtc/view/webRtcPlayerBottomContrView.m

@@ -57,6 +57,7 @@
     
     /*第三个返回键*/
     UIImage  *backBtnImage = [UIImage imageNamed:@"fanhui_you_icon"];
+    //UIImage  *backBtnImage = [UIImage imageNamed:@"fanhui_you_icon"];
     backBtn = [[UIButton alloc] init];
     backBtn.tag = 3;
     [backBtn setBackgroundColor:[UIColor clearColor]];
@@ -81,35 +82,60 @@
 }
 
 #pragma mark 更新按钮区域
-- (void)updateFrameFun
+- (void)updateFrameFunByIsLan:(BOOL)isLan
 {
-    [mueBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.right.mas_equalTo(-80.f);
-        make.width.and.height.mas_equalTo(40.f);
-        make.top.mas_equalTo(0);
+    if(isLan){
         
-    }];
+        [homeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.centerY.equalTo(self.mas_centerY);
+            make.width.and.height.mas_equalTo(40.f);
+            make.left.mas_equalTo(0);
+        }];
+        
+        [showHomeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.mas_equalTo(10.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.left.mas_equalTo(0);
+        }];
+        
+        [backBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.top.mas_equalTo(80.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.left.mas_equalTo(0);
+        }];
+        
+        [mueBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.bottom.mas_equalTo(-80.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.left.mas_equalTo(0);
+        }];
+    }
+    else{
+        [mueBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.right.mas_equalTo(-80.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.top.mas_equalTo(0);
+        }];
 
-    [homeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.centerX.equalTo(self.mas_centerX);
-        make.width.and.height.mas_equalTo(40.f);
-        make.top.mas_equalTo(0);
-    }];
+        [homeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.centerX.equalTo(self.mas_centerX);
+            make.width.and.height.mas_equalTo(40.f);
+            make.top.mas_equalTo(0);
+        }];
 
-    UIImage  *backBtnImage = [UIImage imageNamed:@"fanhui_you_icon"];
-//        UIImage  *backBtnImage = [UIImage imageNamed:@"fanhui_icon"];
-    [backBtn setImage:backBtnImage forState:(UIControlStateNormal)];
-    [backBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.left.mas_equalTo(80.f);
-        make.width.and.height.mas_equalTo(40.f);
-        make.top.mas_equalTo(0);
-    }];
+        [backBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.left.mas_equalTo(80.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.top.mas_equalTo(0);
+        }];
+        
+        [showHomeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
+            make.right.mas_equalTo(-10.f);
+            make.width.and.height.mas_equalTo(40.f);
+            make.top.mas_equalTo(0);
+        }];
+    }
     
-    [showHomeBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.right.mas_equalTo(-20.f);
-        make.width.and.height.mas_equalTo(40.f);
-        make.top.mas_equalTo(0);
-    }];
     
     //[self getPlayerBottomNavShowOrHidefun];
 }

+ 16 - 12
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController+AdjustBtnFrame.m

@@ -36,22 +36,26 @@
 //    HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(centerPoint));
     
     if (self.mediaStream.hw_w > self.mediaStream.hw_h){//横屏
-        CGFloat centerY = self.mediaStream.hw_h*0.5;
-        CGFloat value1Y =  centerY - centerPoint.y;
+       
+        CGFloat screen_W = SCREEN_W>SCREEN_H?SCREEN_W:SCREEN_H;/*实际较大的数字*/
+        CGFloat screen_H = (SCREEN_W<SCREEN_H?SCREEN_W:SCREEN_H);/*实际较小的数字*/
+        
+        CGFloat centerY = screen_W*0.5;
+        CGFloat value1Y =  centerY - centerPoint.x;
         //CGFloat adaptValue =  (SCREEN_W - mPlayerView.glkshowImageView.hw_h)*0.5; // 补偿刘海屏上下黑边
         
         if (value1Y >= 0) { // 左边
-            HLog(@"云手机推流界面 靠上边");
-            self.controlBtn.hw_y = - W_H + margin;
+            HLog(@"云手机推流界面 靠边");
+            self.controlBtn.hw_x = - W_H + margin + safeArea;
         }else { // 右边
-            HLog(@"云手机推流界面 靠边");
-            self.controlBtn.hw_y = SCREEN_H - margin;
+            HLog(@"云手机推流界面 靠边");
+            self.controlBtn.hw_x = screen_W - margin;
         }
         
-        if (self.controlBtn.hw_x < margin){
-            self.controlBtn.hw_x = margin;
-        }else if (self.controlBtn.hw_x > self.mediaStream.hw_w - margin - W_H){
-            self.controlBtn.hw_x = self.mediaStream.hw_w - margin - W_H;
+        if (centerPoint.y < 0){
+            self.controlBtn.hw_y = 0;
+        }else if (self.controlBtn.hw_y > screen_H){
+            self.controlBtn.hw_y = screen_H - W_H;
         }
         
     }else{//竖屏
@@ -91,7 +95,7 @@
 //        }
     }
 
-
+    didAdjusBtnType = YES;
     HLog(@"云手机推流界面 控制按钮中点%@",NSStringFromCGPoint(self.controlBtn.center));
 }
 
@@ -104,7 +108,7 @@
         self.adjustTime = 0;
     }
     
-    if (self.adjustTime == 0) {
+    if (self.adjustTime == 0 && !didAdjusBtnType) {
 //        HLog(@"云手机圆形浮标自动隐藏倒计时 3s倒计时结束");
         [self adjustPlayerViewControlBtnFrame1];
     }else {

+ 20 - 0
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController+AdjustPlayerViewFrame.h

@@ -0,0 +1,20 @@
+//
+//  webRtcPlayerViewController+AdjustPlayerViewFrame.h
+//  双子星云手机
+//
+//  Created by xd h on 2024/9/5.
+//
+
+#import "webRtcPlayerViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface webRtcPlayerViewController (AdjustPlayerViewFrame)
+
+//设置竖屏UI 
+- (void)setPoMas_makeWithImageRate:(CGFloat)w_h_rate;
+//设置横屏屏UI 
+- (void)setLanMas_makeWithImageRate:(CGFloat)w_h_rate;
+@end
+
+NS_ASSUME_NONNULL_END

+ 109 - 0
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController+AdjustPlayerViewFrame.m

@@ -0,0 +1,109 @@
+//
+//  webRtcPlayerViewController+AdjustPlayerViewFrame.m
+//  双子星云手机
+//
+//  Created by xd h on 2024/9/5.
+//
+
+#import "webRtcPlayerViewController+AdjustPlayerViewFrame.h"
+
+@implementation webRtcPlayerViewController (AdjustPlayerViewFrame)
+
+- (void)setPoMas_makeWithImageRate:(CGFloat)w_h_rate{
+    /*播放视图*/
+//    touchCommondView.isLan = NO;
+    lastVideoWHRate = w_h_rate;
+    BOOL fullScreenShow = [HWDataManager getBoolWithKey:Consn_player_full_screen_show];
+
+    [self.mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
+        CGFloat scr_W = SCREEN_W;
+        CGFloat scr_H = SCREEN_H;
+        if (SCREEN_W > SCREEN_H){
+            scr_W = SCREEN_H;
+            scr_H = SCREEN_W;
+        }
+        if ((scr_H - scr_W/w_h_rate - 40.f)/2.f < 0){
+            if(fullScreenShow){
+                make.height.mas_equalTo(scr_H);
+                make.width.mas_equalTo(scr_W);
+            }
+            else{
+                make.height.mas_equalTo(scr_H - 40.f);
+                make.width.mas_equalTo((scr_H - 40.f)*w_h_rate);
+            }
+
+            make.centerX.equalTo(self.view.mas_centerX);
+            make.top.mas_equalTo(0);
+        }
+        else{
+            make.left.mas_equalTo(0.f);
+            make.right.mas_equalTo(0.f);
+            if(fullScreenShow){
+                make.height.mas_equalTo(scr_H);
+                make.top.mas_equalTo(0.f);
+            }
+            else{
+                make.height.mas_equalTo(scr_W/w_h_rate);
+                make.top.mas_equalTo((scr_H - scr_W/w_h_rate - 40.f)/2.f);
+            }
+        }
+    }];
+    
+    
+    [self.bottomContrView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.height.mas_equalTo(40.f);
+        make.right.equalTo(self.mediaStream.mas_right);
+        if(fullScreenShow){
+            make.bottom.mas_equalTo(0);
+        }
+        else{
+            make.top.equalTo(self.mediaStream.mas_bottom);
+        }
+        make.left.equalTo(self.mediaStream.mas_left);
+    }];
+
+    [self.bottomContrView updateFrameFunByIsLan:NO];
+}
+
+/**
+ * @brief 设置横屏模式UI布局
+ *
+ * @param  w_h_rate 宽高比
+
+ */
+- (void)setLanMas_makeWithImageRate:(CGFloat)w_h_rate{
+    
+    lastVideoWHRate = w_h_rate;
+    BOOL fullScreenShow = [HWDataManager getBoolWithKey:Consn_player_full_screen_show];
+    
+    CGFloat h_forPhoneBottomView = 40.0;
+    CGFloat h_forPhoneTop = 0;
+    if (IPHONE_X){
+        h_forPhoneTop = 44.f;
+    }
+    CGFloat des_W = SCREEN_W<SCREEN_H?SCREEN_W:SCREEN_H;/*实际较小的数字*/
+    CGFloat des_H = (SCREEN_W>SCREEN_H?SCREEN_W:SCREEN_H) - h_forPhoneTop;/*实际较大的数字*/
+    
+    [self.mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.bottom.mas_equalTo(0.f);
+        make.width.mas_equalTo(des_W*w_h_rate);
+        make.left.mas_equalTo(h_forPhoneTop + (des_H - h_forPhoneBottomView - des_W*w_h_rate)/2.f);
+        make.top.mas_equalTo(0);
+    }];
+    
+    [self.bottomContrView mas_remakeConstraints:^(MASConstraintMaker *make) {
+        make.width.mas_equalTo(h_forPhoneBottomView);
+        make.left.equalTo(self.mediaStream.mas_right);
+        if(fullScreenShow){
+            make.right.mas_equalTo(0);
+        }
+        else{
+            make.top.mas_equalTo(0);
+        }
+        make.bottom.mas_equalTo(0);
+    }];
+
+    [self.bottomContrView updateFrameFunByIsLan:YES];
+}
+
+@end

+ 6 - 1
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController.h

@@ -10,18 +10,23 @@
 #import <WebRTC/RTCMacros.h>
 #import "UIView+HWCategory.h"
 #import "webRtcMsgModel.h"
+#import "webRtcPlayerBottomContrView.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
 @interface webRtcPlayerViewController : BaseViewController
 {
      CGRect startFrame;//悬浮标拖拽用
+    CGFloat lastVideoWHRate;//上传的流宽高比
+    BOOL isLan;//是否是横屏状态
+    BOOL didAdjusBtnType;//是否设置过悬浮图标靠边了
 }
 @property (nonatomic, strong) AMediaStream *mediaStream;
 @property(nonatomic,strong)UIButton    *controlBtn;
+@property(nonatomic,strong)webRtcPlayerBottomContrView    *bottomContrView;//底部按钮 选项 home 返回
 
 @property (nonatomic,strong) webRtcMsgModel * webRtcMsgMod;
-
+@property(nonatomic,assign) BOOL isCodeSuspendAudioType;//手动暂停播放音乐
 @end
 
 NS_ASSUME_NONNULL_END

+ 173 - 99
创维盒子/双子星云手机/webRtc/webRtcPlayerViewController.m

@@ -7,15 +7,18 @@
 
 #import "webRtcPlayerViewController.h"
 #import "webRtcPlayerViewController+AdjustBtnFrame.h"
-#import "webRtcPlayerBottomContrView.h"
+#import "webRtcPlayerViewController+AdjustPlayerViewFrame.h"
+
+
+#import "UIInterface+HXRotation.h"
+#import "playerSetView.h"
 
 @interface webRtcPlayerViewController ()<MediaStreamClientEventsDelegate>
 {
     BOOL outputVolumeKVO;/*标记声音监听通知*/
 }
 @property (nonatomic, copy)   NSTimer      *playerSecondTimer; // 定时器-控制按钮
-@property (nonatomic, assign) NSInteger          concentTime; // 拉流数据 渲染更新时间戳 /**30s后 渲染时间戳无更新 自动断开链接*/
-@property(nonatomic,strong)webRtcPlayerBottomContrView    *bottomContrView;//底部按钮 选项 home 返回
+
 @end
 
 @implementation webRtcPlayerViewController
@@ -29,6 +32,12 @@
     [self.navigationBar setHidden:YES];
     [self.navBarBGView setHidden:YES];
     [self.view setBackgroundColor:[UIColor blackColor]];
+    
+    if([DFPlayer sharedPlayer].state == DFPlayerStateBuffering
+       ||[DFPlayer sharedPlayer].state == DFPlayerStatePlaying){
+        _isCodeSuspendAudioType = YES;
+        [[DFPlayer sharedPlayer] df_pause];
+    }
    
 }
 
@@ -46,6 +55,7 @@
     [super viewDidAppear:animated];
     [self noEnablePanRightBack];
     [self addKVOObserverFun];
+    ksharedAppDelegate.supportScreenRotateType = YES;
 }
 
 - (void)viewDidDisappear:(BOOL)animated{
@@ -54,6 +64,7 @@
     [_mediaStream disconnect];
     [self enablePanRightBack];
     [self removeKVOObserverFun];
+    ksharedAppDelegate.supportScreenRotateType = NO;
 }
 
 - (void)setWebRtcMsgMod:(webRtcMsgModel *)webRtcMsgMod
@@ -76,6 +87,20 @@
         make.top.mas_equalTo(0.f);
     }];
     
+    [self linkWebRtcFun];
+    
+    [self initBaseUIFun];
+    [self setTimerCountDown];
+    
+    CGFloat curRate = 1080.0/1920.0;
+    [self setPoMas_makeWithImageRate:curRate];
+    [self showNewIndicatorWithCanBack:YES canTouch:NO];
+    
+}
+
+#pragma mark 链接webrtc
+- (void)linkWebRtcFun
+{
     //链接用
     NSString *signallingUrl = [[NSString alloc] initWithFormat:@"%@:%@",_webRtcMsgMod.data.signalling.domainName,_webRtcMsgMod.data.signalling.port];
     NSURL *url = [NSURL URLWithString:signallingUrl];
@@ -107,14 +132,12 @@
                           token:@"vclusters"];
     
     HLog(@"result:%ld",result)
-    
-    [self initBaseUIFun];
-    [self setTimerCountDown];
-    
-    CGFloat curRate = 1080.0/1920.0;
-    [self setPoMas_makeWithImageRate:curRate];
-    [self showNewIndicatorWithCanBack:YES canTouch:NO];
-    
+}
+
+#pragma mark 重连
+- (void)relinkWebRtcFun
+{
+    [self linkWebRtcFun];
 }
 
 #pragma mark 初始化其他UI
@@ -176,7 +199,7 @@
     
     // 初始化值计时数据
     //self.adjustTime = 1;
-    self.concentTime = [iTools getNowTimeStamp];
+    //self.concentTime = [iTools getNowTimeStamp];
  
     _playerSecondTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerChange) userInfo:nil repeats:YES];
     [[NSRunLoop currentRunLoop] addTimer:_playerSecondTimer forMode:NSRunLoopCommonModes];
@@ -191,7 +214,73 @@
 #pragma mark 控制按钮点击事件
 - (void)controlBtnPressed:(UIButton*)but
 {
+    playerSetView *nextVC = [[playerSetView alloc] init];
+    [ksharedAppDelegate.window addSubview:nextVC];
+    
+    [nextVC mas_makeConstraints:^(MASConstraintMaker *make) {
+        make.left.mas_equalTo(0);
+        make.right.mas_equalTo(0);
+        make.top.mas_equalTo(0.f);
+        make.bottom.mas_equalTo(0.f);
+    }];
+    
+    KWeakSelf
     
+    nextVC.didClickButtonFun = ^(NSInteger tag) {
+        switch (tag) {
+            case 10:
+                {//截图
+                   //self->needScreenShotType = YES;
+                }
+                break;
+#pragma mark 重启盒子
+            case 11:
+                {
+                    //[weakSelf didClickRestartFun];
+                }
+                break;
+            case 12:
+                {//退出云机
+                    [weakSelf exitCloudPhoneFun];
+                }
+                break;
+            case 100:
+                {
+//                    BOOL fullscreenType = [HWDataManager getBoolWithKey:Consn_player_full_screen_show];
+//                    if(fullscreenType){
+//                        [weakSelf showOpenTVP2PFun];
+//                    }
+//                    else{
+//                        [weakSelf openTvShowFun];
+//                    }
+                    
+                }
+                break;
+            case 101:
+                {
+//                    self->mPlayerView.controlBtn.userInteractionEnabled = NO;
+//                    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+//                        self->mPlayerView.controlBtn.userInteractionEnabled = YES;
+//                    });
+//                    [weakSelf showCloseTVP2PFun];
+                }
+                break;
+            default:
+                break;
+        }
+    };
+}
+
+#pragma mark 退出云机
+- (void)exitCloudPhoneFun
+{
+    
+    //[self setShowImgAndVoiceTypeFun:NO];
+    if(_isCodeSuspendAudioType){
+        [[DFPlayer sharedPlayer] df_play];
+    }
+    
+    [self.navigationController popViewControllerAnimated:YES];
 }
 
 #pragma mark 底部按钮事件
@@ -260,10 +349,43 @@
     }
 }
 
+#pragma mark 监听到云机的宽高以及屏幕方向
+- (void)handlUIAfterGetCloudPhoneVideoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation
+{
+    CGFloat curRate = (CGFloat)videoWidth/(CGFloat)videoHeight;
+    
+    if(lastVideoWHRate == curRate){
+        return;
+    }
+    
+    didAdjusBtnType = NO;
+    if(rotation == 0){//竖屏
+        //切换到竖屏
+        isLan = NO;
+        [self hx_rotateToInterfaceOrientation:UIInterfaceOrientationPortrait];
+        [self setPoMas_makeWithImageRate:curRate];
+    }
+    else if(rotation == 1){//横屏
+        //切换到横屏屏
+        isLan = YES;
+        [self hx_rotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
+        [self setLanMas_makeWithImageRate:curRate];
+    }
+    
+    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
+        [self extensionAdjustBtnFrameCheckAdjustTime];
+    });
+    
+}
+
 #pragma mark WebRTC 回调 MediaStreamClientEventsDelegate
 #pragma mark - 宽高变化
 -(void)onFrameResolutionChangedFromPeerName:(NSString*)peerName videoWidth:(int)videoWidth videoHeight:(int)videoHeight rotation:(int)rotation {
     HLog(@"peerName:%@---%d---%d--%d",peerName,videoWidth,videoHeight,rotation)
+    
+    mainBlock(^{
+        [self handlUIAfterGetCloudPhoneVideoWidth:videoWidth videoHeight:videoHeight rotation:rotation];
+    });
 }
 
 //code 0 成功 1失败
@@ -272,100 +394,52 @@
     HLog(@"onAuthResultFromPeerName:%@---%d---%@",peerName,code,descriptions)
 }
 
-- (void)dataChannelDidChangeFromPeerName:(NSString*)peerName State:(RTCDataChannelState)state{
-    ;
-}
-
--(void)onIceConnectedFromPeerName:(NSString*)peerName{
-    HLog(@"onIceConnectedFromPeerName:%@",peerName);
-    mainBlock(^{
-        [self removeNewIndicator];
-    });
-}
-
-
--(void)didGetStats:(NSString*)peerName stats:(RTC_OBJC_TYPE(RTCStatisticsReport) *)stats {
-    HLog(@"stats:%@",stats);
-}
-
-- (void)setPoMas_makeWithImageRate:(CGFloat)w_h_rate{
-    /*播放视图*/
-//    touchCommondView.isLan = NO;
-    BOOL fullScreenShow = [HWDataManager getBoolWithKey:Consn_player_full_screen_show];
-
-    [_mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
-        CGFloat scr_W = SCREEN_W;
-        CGFloat scr_H = SCREEN_H;
-        if (SCREEN_W > SCREEN_H){
-            scr_W = SCREEN_H;
-            scr_H = SCREEN_W;
-        }
-        if ((scr_H - scr_W/w_h_rate - 40.f)/2.f < 0){
-            if(fullScreenShow){
-                make.height.mas_equalTo(scr_H);
-                make.width.mas_equalTo(scr_W);
-            }
-            else{
-                make.height.mas_equalTo(scr_H - 40.f);
-                make.width.mas_equalTo((scr_H - 40.f)*w_h_rate);
-            }
-
-            make.centerX.equalTo(self.view.mas_centerX);
-            make.top.mas_equalTo(0);
-        }
-        else{
-            make.left.mas_equalTo(0.f);
-            make.right.mas_equalTo(0.f);
-            if(fullScreenShow){
-                make.height.mas_equalTo(scr_H);
-                make.top.mas_equalTo(0.f);
-            }
-            else{
-                make.height.mas_equalTo(scr_W/w_h_rate);
-                make.top.mas_equalTo((scr_H - scr_W/w_h_rate - 40.f)/2.f);
-            }
+#pragma mark 链接发生变化
+-(void)onChangeConnectionStateFromPeerName:(NSString*)peerName didChangeIceConnectionState:(RTCIceConnectionState)state
+{
+    HLog(@"onChangeConnectionStateFromPeerName: state:%ld",state)
+    switch (state) {
+        case RTCIceConnectionStateConnected:{
+            //链接成功
+            mainBlock(^{
+                [self removeNewIndicator];
+            });
         }
-    }];
+            break;
+        case RTCIceConnectionStateCompleted:
+            //链接完成
+            break;
+        case RTCIceConnectionStateFailed:
+            //链接失败
+            break;
+        case RTCIceConnectionStateDisconnected:
+            //链接断开
+            [self relinkWebRtcFun];
+            break;
+        case RTCIceConnectionStateClosed:
+            //链接关闭
+            break;
+            
+        default:
+            break;
+    }
     
     
-    [_bottomContrView mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.height.mas_equalTo(40.f);
-        make.right.equalTo(_mediaStream.mas_right);
-        if(fullScreenShow){
-            make.bottom.mas_equalTo(0);
-        }
-        else{
-            make.top.equalTo(_mediaStream.mas_bottom);
-        }
-        make.left.equalTo(_mediaStream.mas_left);
-    }];
+}
 
-    [_bottomContrView updateFrameFun];
+- (void)dataChannelDidChangeFromPeerName:(NSString*)peerName State:(RTCDataChannelState)state{
+    ;
 }
 
-/**
- * @brief 设置横屏模式UI布局
- *
- * @param  w_h_rate 宽高比
+//-(void)onIceConnectedFromPeerName:(NSString*)peerName{
+//    HLog(@"onIceConnectedFromPeerName:%@",peerName);
+//    mainBlock(^{
+//        [self removeNewIndicator];
+//    });
+//}
 
- */
-- (void)setLanMas_makeWithImageRate:(CGFloat)w_h_rate{
-    /*需要考虑专业模式*/
 
-    /*暂时只考虑非专业模式无虚拟键布局*/
-    CGFloat h_forPhoneTop = 0;
-    if (IPHONE_X){
-        h_forPhoneTop = 44.f;
-    }
-    CGFloat des_W = SCREEN_W<SCREEN_H?SCREEN_W:SCREEN_H;/*实际较小的数字*/
-    CGFloat des_H = (SCREEN_W>SCREEN_H?SCREEN_W:SCREEN_H) - h_forPhoneTop;/*实际较大的数字*/
-    [_mediaStream mas_remakeConstraints:^(MASConstraintMaker *make) {
-        make.bottom.mas_equalTo(0.f);
-        make.width.mas_equalTo(des_W*w_h_rate);
-        make.left.mas_equalTo(h_forPhoneTop + (des_H - des_W*w_h_rate)/2.f);
-        make.top.mas_equalTo(0);
-    }];
-    
-   
+-(void)didGetStats:(NSString*)peerName stats:(RTC_OBJC_TYPE(RTCStatisticsReport) *)stats {
+    HLog(@"stats:%@",stats);
 }
 @end