JLChen
2021-04-01 bf7f42bc3b63a0c2cec5a5adfb44feffab47a077
2021-04-01 1.更新
11个文件已添加
9个文件已删除
23个文件已修改
23 文件已重命名
1889 ■■■■ 已修改文件
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/AudioSessionHelper.h 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/AudioSessionHelper.m 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/ESVideo.h 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/ESVideo.m 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/ESVideoPhoneSDk 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo.xcodeproj/project.pbxproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESCallDelegate.h 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESCallDelegate.m 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnIntercomViewController.h 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnIntercomViewController.m 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnMonitorViewController.h 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnMonitorViewController.m 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/OpenViewController.m 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/ESVideoPhoneSDk 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/Headers/ESError.h 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.pbxproj 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.m 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.h 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.m 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.h 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.m 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.m 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/ApiDefinition.cs 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libESVideoOnXamarin.a 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Properties/AssemblyInfo.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/mono_crash.1ffcf07473.0.json 848 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.pbxproj 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/AppDelegate.h 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/AppDelegate.m 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Assets.xcassets/AppIcon.appiconset/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Assets.xcassets/Contents.json 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Base.lproj/LaunchScreen.storyboard 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Base.lproj/Main.storyboard 155 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Info.plist 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/SceneDelegate.h 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/SceneDelegate.m 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/ViewController.h 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/ViewController.mm 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/main.m 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoTests/ESVideoPhoneSDKDemoTests.m 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoTests/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoUITests/ESVideoPhoneSDKDemoUITests.m 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoUITests/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/ESVideoPhoneSDk 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Headers/ESError.h 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Info.plist 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature 补丁 | 查看 | 原始文档 | blame | 历史
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/AudioSessionHelper.h
File was deleted
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/AudioSessionHelper.m
File was deleted
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/ESVideo.h
File was deleted
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/ESVideo.m
File was deleted
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/ESVideoPhoneSDk
Binary files differ
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory
Binary files differ
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements
Binary files differ
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1
Binary files differ
ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature
Binary files differ
On+/ESVideoOn/ESVideoPhoneSDKDemo.xcodeproj/project.pbxproj
@@ -13,6 +13,7 @@
        B95069F025F9C63A00F6FD4F /* OpenViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B95069EA25F9C63A00F6FD4F /* OpenViewController.m */; };
        B95069FC25F9C68D00F6FD4F /* ESOnIntercomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B95069F725F9C68D00F6FD4F /* ESOnIntercomViewController.m */; };
        B95069FD25F9C68D00F6FD4F /* ESOnMonitorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B95069F925F9C68D00F6FD4F /* ESOnMonitorViewController.m */; };
        B95311C0260C1CF20009B3DA /* ESCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B95311BF260C1CF20009B3DA /* ESCallDelegate.m */; };
        C3385925233DAF06006940C3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C3385924233DAF06006940C3 /* AppDelegate.m */; };
        C3385928233DAF06006940C3 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C3385927233DAF06006940C3 /* SceneDelegate.m */; };
        C338592B233DAF06006940C3 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C338592A233DAF06006940C3 /* ViewController.mm */; };
@@ -59,6 +60,8 @@
        B95069F925F9C68D00F6FD4F /* ESOnMonitorViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESOnMonitorViewController.m; sourceTree = "<group>"; };
        B95069FA25F9C68D00F6FD4F /* ESOnIntercomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnIntercomViewController.h; sourceTree = "<group>"; };
        B95069FB25F9C68D00F6FD4F /* ESOnUtlis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnUtlis.h; sourceTree = "<group>"; };
        B95311BE260C1CF20009B3DA /* ESCallDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ESCallDelegate.h; sourceTree = "<group>"; };
        B95311BF260C1CF20009B3DA /* ESCallDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ESCallDelegate.m; sourceTree = "<group>"; };
        C3385920233DAF06006940C3 /* HDLZigBeeESVideoDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HDLZigBeeESVideoDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
        C3385923233DAF06006940C3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
        C3385924233DAF06006940C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -129,6 +132,8 @@
                B95069F925F9C68D00F6FD4F /* ESOnMonitorViewController.m */,
                B95069E525F9C63A00F6FD4F /* OpenViewController.h */,
                B95069EA25F9C63A00F6FD4F /* OpenViewController.m */,
                B95311BE260C1CF20009B3DA /* ESCallDelegate.h */,
                B95311BF260C1CF20009B3DA /* ESCallDelegate.m */,
            );
            path = On;
            sourceTree = "<group>";
@@ -337,6 +342,7 @@
            files = (
                C338592B233DAF06006940C3 /* ViewController.mm in Sources */,
                C3385925233DAF06006940C3 /* AppDelegate.m in Sources */,
                B95311C0260C1CF20009B3DA /* ESCallDelegate.m in Sources */,
                B95069EF25F9C63A00F6FD4F /* CBToast.m in Sources */,
                B95069FC25F9C68D00F6FD4F /* ESOnIntercomViewController.m in Sources */,
                B95069FD25F9C68D00F6FD4F /* ESOnMonitorViewController.m in Sources */,
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESCallDelegate.h
New file
@@ -0,0 +1,37 @@
//
//  ESCallDelegate.h
//  ESVideoPhoneSDKDemo
//
//  Created by 陈嘉乐 on 2021/3/25.
//  Copyright © 2021 eTouchSky. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol ESCallDelegate <NSObject>
//接听回调
-(void)onAnswerAction;
//拒接来电回调
-(void)onRejectCallAction;
//开始成功回调
-(void)onUnlockAction;
//挂断(通话结束)
-(void)onHangUpAction:(int)callDuration;
//通话视频截图上传
-(void)onScreenshotSuccessfulAction:(UIImage *)image;
@end
@interface ESCallDelegate : NSObject
@end
NS_ASSUME_NONNULL_END
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESCallDelegate.m
New file
@@ -0,0 +1,13 @@
//
//  ESCallDelegate.m
//  ESVideoPhoneSDKDemo
//
//  Created by 陈嘉乐 on 2021/3/25.
//  Copyright © 2021 eTouchSky. All rights reserved.
//
#import "ESCallDelegate.h"
@implementation ESCallDelegate
@end
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnIntercomViewController.h
@@ -7,6 +7,7 @@
//
#import <UIKit/UIKit.h>
#import "ESCallDelegate.h"
NS_ASSUME_NONNULL_BEGIN
@@ -17,6 +18,14 @@
@property (nonatomic,strong) NSString               *roomName;
@property (nonatomic,strong) NSString               *deviceName;
#pragma mark ESCallDelegate
/**
 丰林事件代理
 */
@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
#pragma mark 对外接口方法
@end
NS_ASSUME_NONNULL_END
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnIntercomViewController.m
@@ -61,6 +61,7 @@
    BOOL isBackGround;
    BOOL iSVideoNotDetermined;
    BOOL iSAudioNotDetermined;
    BOOL isAnswer;//是否已经点击接听过了
    
    NSString * tipStr;
    NSString * okStr;
@@ -301,6 +302,17 @@
//挂断按钮事件
-(void)hangUpAction{
    //1.回调事件
    if(self.mESCallDelegate != NULL){
        if(isAnswer){
            //如果之前已经接听了,回调是挂断
            [self.mESCallDelegate onHangUpAction:_callTimeout];
        }else{
            //如果之前没接听了,回调是拒接
            [self.mESCallDelegate onRejectCallAction];
        }
    }
    //2.页面关闭
    [self backAction];
}
@@ -352,6 +364,11 @@
    //开始计时
    _callTimeout = 0;
    [self startCountdown];
    isAnswer = YES;
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onAnswerAction];
    }
    
}
@@ -488,8 +505,10 @@
    _openDoorTimeout = 0;
    [self startOpenDoorCountdown];
    [self showUIAlertView:unlockSuccessfullyStr];
    // 开锁成功回调
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onUnlockAction];
    }
}
-(void)setUnlock:(BOOL)ISEnable{
@@ -1110,6 +1129,10 @@
    NSString *message = nil;
    if (!error) {
        message = saveToTheAlbumsStr;
        // 截图成功回调
        if(self.mESCallDelegate != NULL){
            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
        }
    }
    else
    {
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnMonitorViewController.h
@@ -7,6 +7,7 @@
//
#import <UIKit/UIKit.h>
#import "ESCallDelegate.h"
NS_ASSUME_NONNULL_BEGIN
@@ -17,6 +18,13 @@
@property (nonatomic,strong) NSString               *roomName;
@property (nonatomic,strong) NSString               *deviceName;
#pragma mark ESCallDelegate
/**
 丰林事件代理
 */
@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
#pragma mark 对外接口方法
@end
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/ESOnMonitorViewController.m
@@ -299,6 +299,10 @@
    _openDoorTimeout = 0;
    [self startOpenDoorCountdown];
    [self showUIAlertView:unlockSuccessfullyStr];
    // 开锁成功回调
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onUnlockAction];
    }
}
-(void)setUnlock:(BOOL)ISEnable{
On+/ESVideoOn/ESVideoPhoneSDKDemo/On/OpenViewController.m
@@ -36,7 +36,7 @@
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor whiteColor];
    
    [ESVideo.shareInstance initSDK];
//    [ESVideo.shareInstance initSDK];
    // Do any additional setup after loading the view.
    
    [self.view addSubview:self.monitorBtn];
On+/ESVideoOn/ESVideoPhoneSDk.framework/ESVideoPhoneSDk
Binary files differ
On+/ESVideoOn/ESVideoPhoneSDk.framework/Headers/ESError.h
@@ -68,9 +68,13 @@
    LMPAudioPlayErrorBypassVoiceProcessing          = 6,//AudioPlay_打开回声消除功能失败
    LMPAudioPlayErrorAudioUnitInitialize            = 7,//AudioPlay_AudioUnitInitialize失败
};
//音频重采样,会导致不能发送播放音频。
typedef NS_ENUM (NSUInteger, LMPAudioConverterError){
    LMPAudioConverterErrorGetNew                   = 0,//GetNew失败
    LMPAudioConverterErrorRecord                   = 1,//Record失败
};
@interface ESError : NSObject
@end
On+/ESVideoOn/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h
@@ -26,21 +26,26 @@
@property(nonatomic,strong,readonly) UIView* showView;
//中断设置
@property (nonatomic,assign,readwrite) BOOL isInterrupt;
/**
* ESVideoPhone 初始化方法
*
* 初始化P2P,OpenGL,AudioUnit播放。
* @param frame 生成显示视频的CGRect
* @param delegate ESVideoPhoneDelegate代理
* @paramimagecallBack 获取视频截图的block
*
*  @return ESVideoPhone 实例,返回nil表示初始化失败。
*  @return ESVideoPhone 实例,返回nil表示P2P初始化失败。
*/
- (instancetype)initESVideoPhoneWithFrame:(CGRect)frame delegate: (id<ESVideoPhoneDelegate>)del imagecallBack:(ImageCallback)callBack;
//授权后打开音频采集,视频没有权限也可以只音频通话
-(BOOL)initAudioCaptureSession;
//⚠️授权后打开视频采集,音频没有权限建议不要发起通话
-(BOOL)initVideoCaptureSession;
/**
* 呼叫
*
* @param deviceId 门口机设备ID,这个参数会从后台拉取(一般是个数组其中包含该用户权限拥有的所有门口机)
*/
- (void)onCall:(NSString *)deviceId;
/**
* 监控
*
@@ -75,6 +80,10 @@
-(void)openTheDoorWithRoomid: (int)roomId;
//释放资源(delegate释放等)
-(void)freeSubClass;
//免提播放 听筒播放 互相切换  buffer重制为0,否则有些系统,在听筒模式下不能采集 error-50
-(BOOL)resetAudioCaptureIsSpeak:(BOOL)isSpeak;
@end
On+/ESVideoOn/ESVideoPhoneSDk.framework/Info.plist
Binary files differ
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory
Binary files differ
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1
Binary files differ
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources
@@ -6,15 +6,15 @@
    <dict>
        <key>Headers/ESError.h</key>
        <data>
        6x23lohs1gRaX2F7raZcezxZt4A=
        pvjBtkhm2U/Y83vkOrTjVeFC1rc=
        </data>
        <key>Headers/ESVideoPhone.h</key>
        <data>
        PXntC+GjEn5A+q23YZHDZYIGj3k=
        kGvbOvS6cBnVsmUHmyi2E6VgP+8=
        </data>
        <key>Info.plist</key>
        <data>
        pac6jrrTIT3Ur/3XHh3CoCOUlnE=
        Zp/dsh9RYNjl/knrzPgFdMIaTIU=
        </data>
    </dict>
    <key>files2</key>
@@ -23,22 +23,22 @@
        <dict>
            <key>hash</key>
            <data>
            6x23lohs1gRaX2F7raZcezxZt4A=
            pvjBtkhm2U/Y83vkOrTjVeFC1rc=
            </data>
            <key>hash2</key>
            <data>
            y8ReVa9YaZ6fyPjy8EeTl3jbaUadZUYVC0IdLJ/HrgM=
            18Khpfz8wF7kpRYfu0Hu9nXX8ojPhCddZq9AC5/W4P0=
            </data>
        </dict>
        <key>Headers/ESVideoPhone.h</key>
        <dict>
            <key>hash</key>
            <data>
            PXntC+GjEn5A+q23YZHDZYIGj3k=
            kGvbOvS6cBnVsmUHmyi2E6VgP+8=
            </data>
            <key>hash2</key>
            <data>
            MboPVH5djlpgR//Z7UcRBMEeaakW6FWQbZxlkx4KzaM=
            0nI6AIHD+V13SkVwTcbXE/eDC2SJLVTIcX2hiIoRtJg=
            </data>
        </dict>
    </dict>
On+/ESVideoOn/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature
Binary files differ
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin.xcodeproj/project.pbxproj
@@ -16,6 +16,7 @@
        B9506A3625F9EEE900F6FD4F /* ESOnIntercomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B9506A2E25F9EEE900F6FD4F /* ESOnIntercomViewController.m */; platformFilter = ios; };
        B9506A3725F9EEE900F6FD4F /* ESVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = B9506A3125F9EEE900F6FD4F /* ESVideo.m */; platformFilter = ios; };
        B9506A4725F9F0E300F6FD4F /* ESVideoPhoneSDk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */; platformFilter = ios; };
        B95311C6260C23620009B3DA /* ESCallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B95311C4260C23620009B3DA /* ESCallDelegate.m */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -47,6 +48,8 @@
        B9506A3125F9EEE900F6FD4F /* ESVideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESVideo.m; sourceTree = "<group>"; };
        B9506A3225F9EEE900F6FD4F /* ESOnUtlis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESOnUtlis.h; sourceTree = "<group>"; };
        B9506A4625F9F0E300F6FD4F /* ESVideoPhoneSDk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ESVideoPhoneSDk.framework; path = Extern/ESVideoPhoneSDk.framework; sourceTree = "<group>"; };
        B95311C4260C23620009B3DA /* ESCallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESCallDelegate.m; sourceTree = "<group>"; };
        B95311C5260C23620009B3DA /* ESCallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESCallDelegate.h; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -84,6 +87,8 @@
        B9506A1125F9EE3100F6FD4F /* ESVideoOnXamarin */ = {
            isa = PBXGroup;
            children = (
                B95311C5260C23620009B3DA /* ESCallDelegate.h */,
                B95311C4260C23620009B3DA /* ESCallDelegate.m */,
                B9506A2825F9EEE900F6FD4F /* AudioSessionHelper.h */,
                B9506A2D25F9EEE900F6FD4F /* AudioSessionHelper.m */,
                B9506A3025F9EEE900F6FD4F /* CBToast.h */,
@@ -166,6 +171,7 @@
            isa = PBXSourcesBuildPhase;
            buildActionMask = 2147483647;
            files = (
                B95311C6260C23620009B3DA /* ESCallDelegate.m in Sources */,
                B9506A3625F9EEE900F6FD4F /* ESOnIntercomViewController.m in Sources */,
                B9506A3725F9EEE900F6FD4F /* ESVideo.m in Sources */,
                B9506A3325F9EEE900F6FD4F /* CBToast.m in Sources */,
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.h
New file
@@ -0,0 +1,37 @@
//
//  ESCallDelegate.h
//  ESVideoPhoneSDKDemo
//
//  Created by 陈嘉乐 on 2021/3/25.
//  Copyright © 2021 eTouchSky. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@protocol ESCallDelegate <NSObject>
//接听回调
-(void)onAnswerAction;
//拒接来电回调
-(void)onRejectCallAction;
//开始成功回调
-(void)onUnlockAction;
//挂断(通话结束)
-(void)onHangUpAction:(int)callDuration;
//通话视频截图上传
-(void)onScreenshotSuccessfulAction:(UIImage *)image;
@end
@interface ESCallDelegate : NSObject
@end
NS_ASSUME_NONNULL_END
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESCallDelegate.m
New file
@@ -0,0 +1,13 @@
//
//  ESCallDelegate.m
//  ESVideoPhoneSDKDemo
//
//  Created by 陈嘉乐 on 2021/3/25.
//  Copyright © 2021 eTouchSky. All rights reserved.
//
#import "ESCallDelegate.h"
@implementation ESCallDelegate
@end
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.h
@@ -7,6 +7,7 @@
//
#import <UIKit/UIKit.h>
#import "ESCallDelegate.h"
NS_ASSUME_NONNULL_BEGIN
@@ -17,6 +18,14 @@
@property (nonatomic,strong) NSString               *roomName;
@property (nonatomic,strong) NSString               *deviceName;
#pragma mark ESCallDelegate
/**
 丰林事件代理
 */
@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
#pragma mark 对外接口方法
@end
NS_ASSUME_NONNULL_END
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnIntercomViewController.m
@@ -61,6 +61,7 @@
    BOOL isBackGround;
    BOOL iSVideoNotDetermined;
    BOOL iSAudioNotDetermined;
    BOOL isAnswer;//是否已经点击接听过了
    
    NSString * tipStr;
    NSString * okStr;
@@ -71,6 +72,7 @@
    NSString * unlockSuccessfullyStr;
    NSString * callingStr;
    NSString * hangUpStr;
    NSString * hasBeenHungUpStr;
    //    int openDoorTimeout;
    //全局变量
    SystemSoundID sound;
@@ -110,6 +112,7 @@
        hangUpStr = @"挂断";
        unlockSuccessfullyStr = @"开锁成功";
        callingStr = @"来电中...";
        hasBeenHungUpStr = @"已挂断";
    }else{
        tipStr = @"Prompt";
        okStr = @"OK";
@@ -120,6 +123,7 @@
        hangUpStr = @"Hang up";
        unlockSuccessfullyStr = @"Unlock successfully";
        callingStr = @"Incoming call";
        hasBeenHungUpStr = @"Has been hung up";
        
    }
}
@@ -301,6 +305,17 @@
//挂断按钮事件
-(void)hangUpAction{
    //1.回调事件
    if(self.mESCallDelegate != NULL){
        if(isAnswer){
            //如果之前已经接听了,回调是挂断
            [self.mESCallDelegate onHangUpAction:_callTimeout];
        }else{
            //如果之前没接听了,回调是拒接
            [self.mESCallDelegate onRejectCallAction];
        }
    }
    //2.页面关闭
    [self backAction];
}
@@ -352,6 +367,11 @@
    //开始计时
    _callTimeout = 0;
    [self startCountdown];
    isAnswer = YES;
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onAnswerAction];
    }
    
}
@@ -488,8 +508,10 @@
    _openDoorTimeout = 0;
    [self startOpenDoorCountdown];
    [self showUIAlertView:unlockSuccessfullyStr];
    // 开锁成功回调
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onUnlockAction];
    }
}
-(void)setUnlock:(BOOL)ISEnable{
@@ -739,7 +761,7 @@
        
        //           [_mCallOrAccept setTitle:@"通话中..." forState:UIControlStateNormal];
    }else if([phoneEventStr  isEqual:@"EVT_HangUp"]){
        [self showUIAlertViewWithBack:@"已挂断"];
        [self showUIAlertViewWithBack:hasBeenHungUpStr];
        //           [_mCallOrAccept setTitle:@"反呼" forState:UIControlStateNormal];
    }else if([phoneEventStr  isEqual:@"EVT_P2POnlineStatusChanged"]){
        //EVT_P2PStarted(p2p初始化OK,可以连接),EVT_P2POnlineStatusChangedonline=1
@@ -753,7 +775,7 @@
        NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        NSInteger status = [[dic valueForKey:@"status"]integerValue];
        if(status && status == 1){
            NSLog(@"开门成功");
//            NSLog(@"开门成功");
            [self setOpenDoorSuccess];
        }else{
            NSLog(@"开门失败");
@@ -1110,6 +1132,10 @@
    NSString *message = nil;
    if (!error) {
        message = saveToTheAlbumsStr;
        // 截图成功回调
        if(self.mESCallDelegate != NULL){
            [self.mESCallDelegate onScreenshotSuccessfulAction:image];
        }
    }
    else
    {
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.h
@@ -7,6 +7,7 @@
//
#import <UIKit/UIKit.h>
#import "ESCallDelegate.h"
NS_ASSUME_NONNULL_BEGIN
@@ -17,6 +18,13 @@
@property (nonatomic,strong) NSString               *roomName;
@property (nonatomic,strong) NSString               *deviceName;
#pragma mark ESCallDelegate
/**
 丰林事件代理
 */
@property (nonatomic, weak) id<ESCallDelegate> mESCallDelegate;
#pragma mark 对外接口方法
@end
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESOnMonitorViewController.m
@@ -299,6 +299,10 @@
    _openDoorTimeout = 0;
    [self startOpenDoorCountdown];
    [self showUIAlertView:unlockSuccessfullyStr];
    // 开锁成功回调
    if(self.mESCallDelegate != NULL){
        [self.mESCallDelegate onUnlockAction];
    }
}
-(void)setUnlock:(BOOL)ISEnable{
On+/xamarin/ESVideoOnXamarin/ESVideoOnXamarin/ESVideo.m
@@ -57,7 +57,7 @@
        }
    };
    //门口机会有视频的长宽高,是固定的(暂时还不确定)
    _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame: CGRectMake(0, 0, [[UIScreen mainScreen] bounds].size.width, GetRealWidth(210)) delegate:nil imagecallBack:mSnapImageCallback];
    _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame: CGRectMake(0, 0, APP_SCREEN_WIDTH, GetRealWidth(210)) delegate:nil imagecallBack:mSnapImageCallback];
    
    
    return self;
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/ApiDefinition.cs
@@ -6,48 +6,6 @@
namespace Shared.IOS.ESVideoOnSDK
{
    // @interface ESOnIntercomViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESOnIntercomViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
    }
    // @interface ESOnMonitorViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESOnMonitorViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
    }
    // @interface ESVideo : NSObject
    [BaseType(typeof(NSObject))]
    interface ESVideo
@@ -75,5 +33,100 @@
        void InitSDK();
    }
    // @protocol ESCallDelegate <NSObject>
    [Protocol, Model(AutoGeneratedName = true)]
    [BaseType(typeof(NSObject))]
    interface ESCallDelegate
    {
        // @required -(void)onAnswerAction;
        [Abstract]
        [Export("onAnswerAction")]
        void OnAnswerAction();
        // @required -(void)onRejectCallAction;
        [Abstract]
        [Export("onRejectCallAction")]
        void OnRejectCallAction();
        // @required -(void)onUnlockAction;
        [Abstract]
        [Export("onUnlockAction")]
        void OnUnlockAction();
        // @required -(void)onHangUpAction:(int)callDuration;
        [Abstract]
        [Export("onHangUpAction:")]
        void OnHangUpAction(int callDuration);
        // @required -(void)onScreenshotSuccessfulAction:(UIImage * _Nonnull)image;
        [Abstract]
        [Export("onScreenshotSuccessfulAction:")]
        void OnScreenshotSuccessfulAction(UIImage image);
    }
    //// @interface ESCallDelegate : NSObject
    //[BaseType(typeof(NSObject))]
    //interface ESCallDelegate
    //{
    //}
    // @interface ESOnIntercomViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESOnIntercomViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
        [Wrap("WeakMESCallDelegate")]
        [NullAllowed]
        ESCallDelegate MESCallDelegate { get; set; }
        // @property (nonatomic, weak) id<ESCallDelegate> _Nullable mESCallDelegate;
        [NullAllowed, Export("mESCallDelegate", ArgumentSemantic.Weak)]
        NSObject WeakMESCallDelegate { get; set; }
    }
    // @interface ESOnMonitorViewController : UIViewController
    [BaseType(typeof(UIViewController))]
    interface ESOnMonitorViewController
    {
        // @property (nonatomic, strong) NSString * _Nonnull mESVideoID;
        [Export("mESVideoID", ArgumentSemantic.Strong)]
        string MESVideoID { get; set; }
        // @property (assign, nonatomic) int mESRoomID;
        [Export("mESRoomID")]
        int MESRoomID { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull roomName;
        [Export("roomName", ArgumentSemantic.Strong)]
        string RoomName { get; set; }
        // @property (nonatomic, strong) NSString * _Nonnull deviceName;
        [Export("deviceName", ArgumentSemantic.Strong)]
        string DeviceName { get; set; }
        [Wrap("WeakMESCallDelegate")]
        [NullAllowed]
        ESCallDelegate MESCallDelegate { get; set; }
        // @property (nonatomic, weak) id<ESCallDelegate> _Nullable mESCallDelegate;
        [NullAllowed, Export("mESCallDelegate", ArgumentSemantic.Weak)]
        NSObject WeakMESCallDelegate { get; set; }
    }
}
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Library/libESVideoOnXamarin.a
Binary files differ
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Properties/AssemblyInfo.cs
@@ -25,7 +25,7 @@
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.1")]
[assembly: AssemblyVersion("1.0.2")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK.sln
New file
@@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.808.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared.IOS.ESVideoOnSDK", "Shared.IOS.ESVideoOnSDK.csproj", "{D1832CED-B861-4FE3-A3BD-3D582C108D3A}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {D1832CED-B861-4FE3-A3BD-3D582C108D3A}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {6527B90F-D907-4370-A1FE-B8E5E38BFF64}
    EndGlobalSection
EndGlobal
On+/xamarin/Shared.IOS.ESVideoOnSDK/Shared.IOS.ESVideoOnSDK/mono_crash.1ffcf07473.0.json
New file
@@ -0,0 +1,848 @@
{
  "protocol_version" : "0.0.6",
  "configuration" : {
    "version" : "(6.12.0.93) (2020-02/620cf538206)",
    "tlc" : "normal",
    "sigsgev" : "altstack",
    "notifications" : "kqueue",
    "architecture" : "amd64",
    "disabled_features" : "none",
    "smallconfig" : "disabled",
    "bigarrays" : "disabled",
    "softdebug" : "enabled",
    "interpreter" : "enabled",
    "llvm_support" : "0",
    "suspend" : "hybrid"
  },
  "memory" : {
    "Resident Size" : "48189440",
    "Virtual Size" : "4720082944",
    "minor_gc_time" : "25105787",
    "major_gc_time" : "0",
    "minor_gc_count" : "2",
    "major_gc_count" : "0",
    "major_gc_time_concurrent" : "0"
 },
  "threads" : [
 {
    "is_managed" : false,
    "offset_free_hash" : "0x0",
    "offset_rich_hash" : "0x0",
    "crashed" : false,
    "native_thread_id" : "0x11b261dc0",
    "thread_info_addr" : "0x7fecdc809c00",
    "thread_name" : "tid_307",
    "ctx" : {
      "IP" : "0x7fff6f81e882",
      "SP" : "0x7ffee40eec88",
      "BP" : "0x7ffee40eed20"
  },
    "unmanaged_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "0x10bbc1886",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5d0f5",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5ce27",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bc2d983",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff6f8d35fd",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7ffee40ee978",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bdf7e70",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10be0ff51",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5a034",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd59e3a",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bb86f7a",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bb12b89",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff6f6dacc9",
      "native_offset" : "0x00000"
   }
  ]
 },
 {
    "is_managed" : false,
    "offset_free_hash" : "0x0",
    "offset_rich_hash" : "0x0",
    "crashed" : false,
    "native_thread_id" : "0x70000169b000",
    "thread_info_addr" : "0x7fecdc81ea00",
    "thread_name" : "Finalizer",
    "ctx" : {
      "IP" : "0x7fff6f81be36",
      "SP" : "0x70000169aeb8",
      "BP" : "0x70000169af00"
  },
    "unmanaged_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "0x10bbc1886",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5d0f5",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5ce27",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bc2d983",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff6f8d35fd",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x100000002",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x10bd5dd3d",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff6f8df109",
      "native_offset" : "0x00000"
   }
,
  {
      "is_managed" : "false",
      "native_address" : "0x7fff6f8dab8b",
      "native_offset" : "0x00000"
   }
  ]
 },
 {
    "is_managed" : true,
    "offset_free_hash" : "0x1ffcf07473",
    "offset_rich_hash" : "0x1ffcf078da",
    "crashed" : true,
    "native_thread_id" : "0x700004020000",
    "thread_info_addr" : "0x7fecddb7ae00",
    "thread_name" : "tid_8e03",
    "ctx" : {
      "IP" : "0x7fff6f82233a",
      "SP" : "0x70000401eae8",
      "BP" : "0x70000401eb10"
  },
    "managed_frames" : [
  {
      "is_managed" : "false",
      "native_address" : "unregistered"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0000c"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001f93",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0001a"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001f38",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00028"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001f37",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00026"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6006ad5",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x600250a",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0005f"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6002396",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00063"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6002377",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00024"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x600248c",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00016"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6000f17",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x00098"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6000efc",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x00019"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6001327",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6000ed2",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x0001a"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6000efb",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x00034"
   }
,
  {
      "is_managed" : "true",
      "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
      "token" : "0x6001326",
      "native_offset" : "0x0",
      "filename" : "Microsoft.VisualStudio.Telemetry.dll",
      "sizeofimage" : "0xd8000",
      "timestamp" : "0xc1b0de65",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x60023a9",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0000f"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x60023a5",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x60023a8",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001ed4",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00071"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001ed2",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6002411",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00034"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x60023a7",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0004a"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x600251d",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001f2c",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00025"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001ed4",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00071"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001ed2",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x00000"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001ed1",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0002b"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x6001f2d",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0000f"
   }
,
  {
      "is_managed" : "true",
      "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
      "token" : "0x00000",
      "native_offset" : "0x0",
      "filename" : "mscorlib.dll",
      "sizeofimage" : "0x472000",
      "timestamp" : "0xc871f307",
      "il_offset" : "0x0002a"
   }
  ],
  "unmanaged_frames" : [
 {
    "is_managed" : "false",
    "native_address" : "0x10bbc1886",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bd5d0f5",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bd5d76a",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bc2ea47",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bbc65be",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bc2dd42",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff6f8d35fd",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "unregistered"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff6f7a9808",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10be1aef7",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bdfbd7f",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10be1b38e",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10be1b50f",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bcca899",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bccae32",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10be09221",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10be095c0",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bcccf46",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bcefd24",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x00000",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x6001f93",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x6002377",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x600248c",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6000f17",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6000efc",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6001327",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6000ed2",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6000efb",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "DAB6F2EA-40E0-487A-863B-EB07A8A04601",
    "token" : "0x6001326",
    "native_offset" : "0x0",
    "filename" : "Microsoft.VisualStudio.Telemetry.dll",
    "sizeofimage" : "0xd8000",
    "timestamp" : "0xc1b0de65",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x60023a9",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x60023a8",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x6001ed2",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x60023a7",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "true",
    "guid" : "3F2977EB-306B-4538-8F22-4FC6CC4DB2C4",
    "token" : "0x6001ed2",
    "native_offset" : "0x0",
    "filename" : "mscorlib.dll",
    "sizeofimage" : "0x472000",
    "timestamp" : "0xc871f307",
    "il_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bb23852",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bd32f47",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bd397f0",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x10bd5dd7d",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff6f8df109",
    "native_offset" : "0x00000"
  }
,
 {
    "is_managed" : "false",
    "native_address" : "0x7fff6f8dab8b",
    "native_offset" : "0x00000"
  }
 ]
}
]
}
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.pbxproj
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo.xcodeproj/project.pbxproj
@@ -7,7 +7,7 @@
    objects = {
/* Begin PBXBuildFile section */
        B96CCD7A24A88EAD00FCCEBF /* ESVideo.m in Sources */ = {isa = PBXBuildFile; fileRef = B96CCD7824A88EAD00FCCEBF /* ESVideo.m */; };
        96B8F55325FEE3D200950EEE /* ESVideoPhoneSDk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 96B8F55225FEE3D200950EEE /* ESVideoPhoneSDk.framework */; };
        C3385925233DAF06006940C3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C3385924233DAF06006940C3 /* AppDelegate.m */; };
        C3385928233DAF06006940C3 /* SceneDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C3385927233DAF06006940C3 /* SceneDelegate.m */; };
        C338592B233DAF06006940C3 /* ViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = C338592A233DAF06006940C3 /* ViewController.mm */; };
@@ -17,8 +17,6 @@
        C3385936233DAF12006940C3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = C3385935233DAF12006940C3 /* main.m */; };
        C3385940233DAF12006940C3 /* ESVideoPhoneSDKDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C338593F233DAF12006940C3 /* ESVideoPhoneSDKDemoTests.m */; };
        C338594B233DAF13006940C3 /* ESVideoPhoneSDKDemoUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = C338594A233DAF13006940C3 /* ESVideoPhoneSDKDemoUITests.m */; };
        C345D08B233EEE520079C82C /* AudioSessionHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C345D08A233EEE520079C82C /* AudioSessionHelper.m */; };
        C3EBF9E823A72BCE00B62DDD /* ESVideoPhoneSDk.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3EBF9E723A72BCD00B62DDD /* ESVideoPhoneSDk.framework */; };
        C3F59377233E0717009F09E5 /* libbz2.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C3F59376233E0717009F09E5 /* libbz2.tbd */; };
        C3F59379233E0723009F09E5 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C3F59378233E0723009F09E5 /* libz.tbd */; };
        C3F5937B233E0745009F09E5 /* libiconv.2.4.0.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = C3F5937A233E0744009F09E5 /* libiconv.2.4.0.tbd */; };
@@ -42,9 +40,7 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
        B924480E24934E5500F118F1 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
        B96CCD7824A88EAD00FCCEBF /* ESVideo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ESVideo.m; sourceTree = "<group>"; };
        B96CCD7924A88EAD00FCCEBF /* ESVideo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ESVideo.h; sourceTree = "<group>"; };
        96B8F55225FEE3D200950EEE /* ESVideoPhoneSDk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ESVideoPhoneSDk.framework; sourceTree = "<group>"; };
        C3385920233DAF06006940C3 /* ESVideoPhoneSDKDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ESVideoPhoneSDKDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
        C3385923233DAF06006940C3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
        C3385924233DAF06006940C3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
@@ -63,9 +59,6 @@
        C3385946233DAF13006940C3 /* ESVideoPhoneSDKDemoUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ESVideoPhoneSDKDemoUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
        C338594A233DAF13006940C3 /* ESVideoPhoneSDKDemoUITests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ESVideoPhoneSDKDemoUITests.m; sourceTree = "<group>"; };
        C338594C233DAF13006940C3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
        C345D089233EEE510079C82C /* AudioSessionHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioSessionHelper.h; sourceTree = "<group>"; };
        C345D08A233EEE520079C82C /* AudioSessionHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AudioSessionHelper.m; sourceTree = "<group>"; };
        C3EBF9E723A72BCD00B62DDD /* ESVideoPhoneSDk.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ESVideoPhoneSDk.framework; sourceTree = "<group>"; };
        C3F59376233E0717009F09E5 /* libbz2.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libbz2.tbd; path = usr/lib/libbz2.tbd; sourceTree = SDKROOT; };
        C3F59378233E0723009F09E5 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
        C3F5937A233E0744009F09E5 /* libiconv.2.4.0.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.2.4.0.tbd; path = usr/lib/libiconv.2.4.0.tbd; sourceTree = SDKROOT; };
@@ -76,7 +69,7 @@
            isa = PBXFrameworksBuildPhase;
            buildActionMask = 2147483647;
            files = (
                C3EBF9E823A72BCE00B62DDD /* ESVideoPhoneSDk.framework in Frameworks */,
                96B8F55325FEE3D200950EEE /* ESVideoPhoneSDk.framework in Frameworks */,
                C3F5937B233E0745009F09E5 /* libiconv.2.4.0.tbd in Frameworks */,
                C3F59379233E0723009F09E5 /* libz.tbd in Frameworks */,
                C3F59377233E0717009F09E5 /* libbz2.tbd in Frameworks */,
@@ -124,16 +117,12 @@
        C3385922233DAF06006940C3 /* ESVideoPhoneSDKDemo */ = {
            isa = PBXGroup;
            children = (
                B96CCD7924A88EAD00FCCEBF /* ESVideo.h */,
                B96CCD7824A88EAD00FCCEBF /* ESVideo.m */,
                C3385923233DAF06006940C3 /* AppDelegate.h */,
                C3385924233DAF06006940C3 /* AppDelegate.m */,
                C3385926233DAF06006940C3 /* SceneDelegate.h */,
                C3385927233DAF06006940C3 /* SceneDelegate.m */,
                C3385929233DAF06006940C3 /* ViewController.h */,
                C338592A233DAF06006940C3 /* ViewController.mm */,
                C345D089233EEE510079C82C /* AudioSessionHelper.h */,
                C345D08A233EEE520079C82C /* AudioSessionHelper.m */,
                C338592C233DAF06006940C3 /* Main.storyboard */,
                C338592F233DAF12006940C3 /* Assets.xcassets */,
                C3385931233DAF12006940C3 /* LaunchScreen.storyboard */,
@@ -164,8 +153,7 @@
        C3E915CA233DFE4C00F77354 /* Frameworks */ = {
            isa = PBXGroup;
            children = (
                B924480E24934E5500F118F1 /* AudioToolbox.framework */,
                C3EBF9E723A72BCD00B62DDD /* ESVideoPhoneSDk.framework */,
                96B8F55225FEE3D200950EEE /* ESVideoPhoneSDk.framework */,
                C3F5937A233E0744009F09E5 /* libiconv.2.4.0.tbd */,
                C3F59378233E0723009F09E5 /* libz.tbd */,
                C3F59376233E0717009F09E5 /* libbz2.tbd */,
@@ -304,9 +292,7 @@
            buildActionMask = 2147483647;
            files = (
                C338592B233DAF06006940C3 /* ViewController.mm in Sources */,
                B96CCD7A24A88EAD00FCCEBF /* ESVideo.m in Sources */,
                C3385925233DAF06006940C3 /* AppDelegate.m in Sources */,
                C345D08B233EEE520079C82C /* AudioSessionHelper.m in Sources */,
                C3385936233DAF12006940C3 /* main.m in Sources */,
                C3385928233DAF06006940C3 /* SceneDelegate.m in Sources */,
            );
@@ -414,13 +400,13 @@
                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
                GCC_WARN_UNUSED_FUNCTION = YES;
                GCC_WARN_UNUSED_VARIABLE = YES;
                IPHONEOS_DEPLOYMENT_TARGET = 10.0;
                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
                MTL_FAST_MATH = YES;
                ONLY_ACTIVE_ARCH = YES;
                OTHER_LDFLAGS = "-Wl,-all_load";
                SDKROOT = iphoneos;
                VALID_ARCHS = "arm64 arm64e";
                VALID_ARCHS = arm64;
            };
            name = Debug;
        };
@@ -469,13 +455,13 @@
                GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
                GCC_WARN_UNUSED_FUNCTION = YES;
                GCC_WARN_UNUSED_VARIABLE = YES;
                IPHONEOS_DEPLOYMENT_TARGET = 10.0;
                IPHONEOS_DEPLOYMENT_TARGET = 13.0;
                MTL_ENABLE_DEBUG_INFO = NO;
                MTL_FAST_MATH = YES;
                OTHER_LDFLAGS = "-Wl,-all_load";
                SDKROOT = iphoneos;
                VALIDATE_PRODUCT = YES;
                VALID_ARCHS = "arm64 arm64e";
                VALID_ARCHS = arm64;
            };
            name = Release;
        };
@@ -483,8 +469,7 @@
            isa = XCBuildConfiguration;
            buildSettings = {
                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                CODE_SIGN_IDENTITY = "iPhone Developer";
                CODE_SIGN_STYLE = Manual;
                CODE_SIGN_STYLE = Automatic;
                DEVELOPMENT_TEAM = BVTA78PRYA;
                FRAMEWORK_SEARCH_PATHS = (
                    "$(inherited)",
@@ -498,11 +483,10 @@
                    "@executable_path/Frameworks",
                );
                LIBRARY_SEARCH_PATHS = "$(inherited)";
                MARKETING_VERSION = 1.2;
                MARKETING_VERSION = 1.0.1;
                OTHER_LDFLAGS = "-Wl,-all_load";
                PRODUCT_BUNDLE_IDENTIFIER = com.hdl.ESVideoPhoneSDKDemo2;
                PRODUCT_BUNDLE_IDENTIFIER = com.hdl.on;
                PRODUCT_NAME = "$(TARGET_NAME)";
                PROVISIONING_PROFILE_SPECIFIER = Test;
                TARGETED_DEVICE_FAMILY = 1;
            };
            name = Debug;
@@ -526,9 +510,9 @@
                    "@executable_path/Frameworks",
                );
                LIBRARY_SEARCH_PATHS = "$(inherited)";
                MARKETING_VERSION = 1.2;
                MARKETING_VERSION = 1.0.1;
                OTHER_LDFLAGS = "-Wl,-all_load";
                PRODUCT_BUNDLE_IDENTIFIER = com.hdl.ESVideoPhoneSDKDemo2;
                PRODUCT_BUNDLE_IDENTIFIER = com.hdl.on;
                PRODUCT_NAME = "$(TARGET_NAME)";
                PROVISIONING_PROFILE_SPECIFIER = Test;
                TARGETED_DEVICE_FAMILY = 1;
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.xcworkspace/contents.xcworkspacedata
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/AppDelegate.h
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/AppDelegate.m
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Assets.xcassets/AppIcon.appiconset/Contents.json
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Assets.xcassets/Contents.json
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Base.lproj/LaunchScreen.storyboard
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Base.lproj/Main.storyboard
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/Base.lproj/Main.storyboard
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="15505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="Otu-wo-FUs">
    <device id="retina6_1" orientation="portrait" appearance="light"/>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
    <device id="retina3_5" orientation="portrait" appearance="light"/>
    <dependencies>
        <deployment identifier="iOS"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="15510"/>
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17703"/>
        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
    </dependencies>
    <scenes>
@@ -16,56 +16,37 @@
                        <viewControllerLayoutGuide type="bottom" id="COG-Nv-9Ga"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="8bC-Xf-vdC">
                        <rect key="frame" x="0.0" y="0.0" width="414" height="842"/>
                        <rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vJi-oZ-LSc">
                                <rect key="frame" x="40" y="738" width="60" height="30"/>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vJi-oZ-LSc">
                                <rect key="frame" x="36" y="410" width="31" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="2Pc-3k-dUO"/>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="cuo-Ky-5Dv"/>
                                    <constraint firstAttribute="height" relation="greaterThanOrEqual" constant="30" id="4Tw-18-CaX"/>
                                </constraints>
                                <state key="normal" title="听筒"/>
                                <connections>
                                    <action selector="speaker:" destination="BYZ-38-t0r" eventType="touchUpInside" id="W7q-iX-a2t"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jPl-Vg-g3C">
                                <rect key="frame" x="120" y="738" width="60" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="3O0-xV-2Xd"/>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="XJm-Mv-gZS"/>
                                </constraints>
                            <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jPl-Vg-g3C">
                                <rect key="frame" x="87" y="410" width="31" height="30"/>
                                <state key="normal" title="开门"/>
                                <connections>
                                    <action selector="openDoor:" destination="BYZ-38-t0r" eventType="touchUpInside" id="QiK-iu-wu4"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mdf-GC-mIQ">
                                <rect key="frame" x="200" y="738" width="60" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="Sm2-me-6Rj"/>
                                    <constraint firstAttribute="height" constant="30" id="ln6-ba-aYV"/>
                                </constraints>
                                <state key="normal" title="截图"/>
                                <connections>
                                    <action selector="onSnap:" destination="BYZ-38-t0r" eventType="touchUpInside" id="dvX-n1-L3W"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="koH-BL-KZA">
                                <rect key="frame" x="40" y="688" width="60" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="JB7-ql-xzA"/>
                                </constraints>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="koH-BL-KZA">
                                <rect key="frame" x="36" y="360" width="31" height="30"/>
                                <state key="normal" title="反呼"/>
                                <connections>
                                    <action selector="onReverseCall:" destination="BYZ-38-t0r" eventType="touchUpInside" id="R22-bQ-kpF"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WJI-4Z-VeA">
                                <rect key="frame" x="120" y="688" width="60" height="30"/>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="WJI-4Z-VeA">
                                <rect key="frame" x="87" y="360" width="31" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="csc-sy-eEr"/>
                                    <constraint firstAttribute="height" constant="30" id="vza-fv-qdl"/>
                                </constraints>
                                <state key="normal" title="挂断"/>
@@ -73,10 +54,9 @@
                                    <action selector="onHangup:" destination="BYZ-38-t0r" eventType="touchUpInside" id="mUK-dK-0eT"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LcR-MR-y9c">
                                <rect key="frame" x="200" y="688" width="60" height="30"/>
                            <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="249" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LcR-MR-y9c">
                                <rect key="frame" x="138" y="360" width="31" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="7N3-EE-cFS"/>
                                    <constraint firstAttribute="height" constant="30" id="go1-vo-L2j"/>
                                </constraints>
                                <state key="normal" title="监控"/>
@@ -84,8 +64,8 @@
                                    <action selector="onMonitor:" destination="BYZ-38-t0r" eventType="touchUpInside" id="RcS-6u-LBX"/>
                                </connections>
                            </button>
                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Vfn-FR-1Ub">
                                <rect key="frame" x="102" y="0.0" width="282" height="30"/>
                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Vfn-FR-1Ub" userLabel="deviceText Field">
                                <rect key="frame" x="98" y="0.0" width="196" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="JFw-sW-vcm"/>
                                </constraints>
@@ -93,53 +73,81 @@
                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
                            </textField>
                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="门口机" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="E2O-cv-ota">
                                <rect key="frame" x="40" y="0.0" width="52" height="30"/>
                                <rect key="frame" x="36" y="0.0" width="52" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="VRD-h4-kIL"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
                                <color key="textColor" systemColor="darkTextColor"/>
                                <nil key="highlightedColor"/>
                            </label>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Uhq-CJ-D5N">
                                <rect key="frame" x="288" y="738" width="31" height="30"/>
                                <state key="normal" title="返回"/>
                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="mdf-GC-mIQ">
                                <rect key="frame" x="138" y="410" width="31" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="ln6-ba-aYV"/>
                                </constraints>
                                <state key="normal" title="截图"/>
                                <connections>
                                    <action selector="back:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Cky-im-DhB"/>
                                    <action selector="onSnap:" destination="BYZ-38-t0r" eventType="touchUpInside" id="dvX-n1-L3W"/>
                                </connections>
                            </button>
                            <button opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ANh-iR-Zhm" userLabel="call Mng">
                                <rect key="frame" x="36" y="310" width="77" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="IOK-he-JYD"/>
                                </constraints>
                                <state key="normal" title="呼叫管理处"/>
                                <connections>
                                    <action selector="onCallMng:" destination="BYZ-38-t0r" eventType="touchUpInside" id="bth-32-2ur"/>
                                </connections>
                            </button>
                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="jbL-Mp-gWi" userLabel="mngText Field">
                                <rect key="frame" x="123" y="310" width="171" height="30"/>
                                <constraints>
                                    <constraint firstAttribute="height" constant="30" id="k6z-DB-Dxc"/>
                                </constraints>
                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                <textInputTraits key="textInputTraits" returnKeyType="done"/>
                            </textField>
                        </subviews>
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                        <constraints>
                            <constraint firstItem="Vfn-FR-1Ub" firstAttribute="leading" secondItem="E2O-cv-ota" secondAttribute="trailing" constant="10" id="0RX-sz-eS9"/>
                            <constraint firstItem="E2O-cv-ota" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="17C-bm-Akt"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="vJi-oZ-LSc" secondAttribute="bottom" constant="40" id="1Lu-zQ-X1A"/>
                            <constraint firstItem="E2O-cv-ota" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="1qo-7b-cDh"/>
                            <constraint firstAttribute="trailing" secondItem="LcR-MR-y9c" secondAttribute="trailing" constant="154" id="Ac2-pr-p5A"/>
                            <constraint firstItem="vJi-oZ-LSc" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="AeG-dA-Pth"/>
                            <constraint firstItem="Uhq-CJ-D5N" firstAttribute="leading" secondItem="mdf-GC-mIQ" secondAttribute="trailing" constant="28" id="BCG-1O-c7I"/>
                            <constraint firstItem="vJi-oZ-LSc" firstAttribute="top" secondItem="koH-BL-KZA" secondAttribute="bottom" constant="20" id="Bgv-gv-AxZ"/>
                            <constraint firstItem="jPl-Vg-g3C" firstAttribute="leading" secondItem="vJi-oZ-LSc" secondAttribute="trailing" constant="20" id="F7k-hc-PjM"/>
                            <constraint firstItem="koH-BL-KZA" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="GCM-h5-uZT"/>
                            <constraint firstItem="LcR-MR-y9c" firstAttribute="leading" secondItem="WJI-4Z-VeA" secondAttribute="trailing" constant="20" id="5c3-Ef-9sy"/>
                            <constraint firstAttribute="trailingMargin" secondItem="jbL-Mp-gWi" secondAttribute="trailing" constant="10" id="6Fr-Os-GU0"/>
                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="mdf-GC-mIQ" secondAttribute="trailing" constant="20" symbolic="YES" id="73Z-0I-u2v"/>
                            <constraint firstItem="E2O-cv-ota" firstAttribute="top" secondItem="Wzv-3T-9rg" secondAttribute="bottom" id="HUm-Q4-lcX"/>
                            <constraint firstItem="Vfn-FR-1Ub" firstAttribute="top" secondItem="Wzv-3T-9rg" secondAttribute="bottom" id="Ifi-g7-5KM"/>
                            <constraint firstItem="WJI-4Z-VeA" firstAttribute="leading" secondItem="koH-BL-KZA" secondAttribute="trailing" constant="20" id="MZc-33-aQU"/>
                            <constraint firstAttribute="trailing" secondItem="mdf-GC-mIQ" secondAttribute="trailing" constant="154" id="Q2A-hp-SjO"/>
                            <constraint firstAttribute="trailingMargin" secondItem="Uhq-CJ-D5N" secondAttribute="trailing" constant="75" id="Taz-RX-FBH"/>
                            <constraint firstItem="LcR-MR-y9c" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="WJI-4Z-VeA" secondAttribute="trailing" symbolic="YES" id="Uor-VU-t3a"/>
                            <constraint firstItem="ANh-iR-Zhm" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="Ins-Re-7qn"/>
                            <constraint firstItem="koH-BL-KZA" firstAttribute="top" secondItem="ANh-iR-Zhm" secondAttribute="bottom" constant="20" id="Kj6-O3-0iE"/>
                            <constraint firstItem="WJI-4Z-VeA" firstAttribute="leading" secondItem="koH-BL-KZA" secondAttribute="trailing" constant="20" id="OHf-LM-E4O"/>
                            <constraint firstItem="mdf-GC-mIQ" firstAttribute="top" secondItem="LcR-MR-y9c" secondAttribute="bottom" constant="20" id="SfX-v0-HpC"/>
                            <constraint firstItem="Vfn-FR-1Ub" firstAttribute="top" secondItem="Wzv-3T-9rg" secondAttribute="bottom" id="Wua-9B-iLw"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="jPl-Vg-g3C" secondAttribute="bottom" constant="40" id="adc-24-7RC"/>
                            <constraint firstItem="vJi-oZ-LSc" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="bGj-h5-kg7"/>
                            <constraint firstItem="jbL-Mp-gWi" firstAttribute="leading" secondItem="ANh-iR-Zhm" secondAttribute="trailing" constant="10" id="fdY-PQ-Tgp"/>
                            <constraint firstItem="koH-BL-KZA" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="20" id="ghh-xI-GAr"/>
                            <constraint firstItem="koH-BL-KZA" firstAttribute="baseline" secondItem="WJI-4Z-VeA" secondAttribute="baseline" id="hB6-19-6BO"/>
                            <constraint firstItem="LcR-MR-y9c" firstAttribute="top" secondItem="jbL-Mp-gWi" secondAttribute="bottom" constant="20" id="hS7-J0-gZX"/>
                            <constraint firstItem="Vfn-FR-1Ub" firstAttribute="leading" secondItem="E2O-cv-ota" secondAttribute="trailing" constant="10" id="hY9-F7-oE8"/>
                            <constraint firstItem="mdf-GC-mIQ" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="jPl-Vg-g3C" secondAttribute="trailing" symbolic="YES" id="hiz-Om-gmC"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="vJi-oZ-LSc" secondAttribute="bottom" constant="40" id="hpW-E8-fPk"/>
                            <constraint firstItem="jPl-Vg-g3C" firstAttribute="top" secondItem="WJI-4Z-VeA" secondAttribute="bottom" constant="20" id="kpv-nI-5SW"/>
                            <constraint firstAttribute="trailingMargin" secondItem="Vfn-FR-1Ub" secondAttribute="trailing" constant="10" id="nnC-yz-Mbc"/>
                            <constraint firstItem="mdf-GC-mIQ" firstAttribute="top" secondItem="LcR-MR-y9c" secondAttribute="bottom" constant="20" id="nyj-zh-x4K"/>
                            <constraint firstItem="jPl-Vg-g3C" firstAttribute="leading" secondItem="vJi-oZ-LSc" secondAttribute="trailing" constant="20" id="pWF-Dn-SuL"/>
                            <constraint firstItem="koH-BL-KZA" firstAttribute="baseline" secondItem="LcR-MR-y9c" secondAttribute="baseline" id="uhc-hz-Lg4"/>
                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="LcR-MR-y9c" secondAttribute="trailing" constant="20" symbolic="YES" id="vAk-7f-7lH"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="vJi-oZ-LSc" secondAttribute="bottom" constant="40" id="w71-ij-wzw"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="Uhq-CJ-D5N" secondAttribute="bottom" constant="40" id="y0A-Wx-QLV"/>
                            <constraint firstItem="vJi-oZ-LSc" firstAttribute="top" secondItem="koH-BL-KZA" secondAttribute="bottom" constant="20" id="xHG-c9-xN1"/>
                            <constraint firstItem="mdf-GC-mIQ" firstAttribute="leading" secondItem="jPl-Vg-g3C" secondAttribute="trailing" constant="20" id="zN8-eX-Xwe"/>
                            <constraint firstItem="COG-Nv-9Ga" firstAttribute="top" secondItem="jPl-Vg-g3C" secondAttribute="bottom" constant="40" id="zXK-Mn-zfv"/>
                        </constraints>
                    </view>
                    <connections>
                        <outlet property="mCallOrAccept" destination="koH-BL-KZA" id="Ryl-wC-8vS"/>
                        <outlet property="mngUUIDTextField" destination="jbL-Mp-gWi" id="h0w-Yx-Ndi"/>
                        <outlet property="monitorBtn" destination="LcR-MR-y9c" id="quQ-29-c3m"/>
                        <outlet property="speakerBtn" destination="vJi-oZ-LSc" id="gAu-k3-y1u"/>
                        <outlet property="uIDTextField" destination="Vfn-FR-1Ub" id="En1-hG-ZxX"/>
@@ -147,35 +155,12 @@
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="131.8840579710145" y="103.79464285714285"/>
        </scene>
        <!--View Controller-->
        <scene sceneID="dmc-0p-Aa4">
            <objects>
                <viewController id="Otu-wo-FUs" sceneMemberID="viewController">
                    <layoutGuides>
                        <viewControllerLayoutGuide type="top" id="dsY-RY-Zva"/>
                        <viewControllerLayoutGuide type="bottom" id="wHq-fg-3bZ"/>
                    </layoutGuides>
                    <view key="view" contentMode="scaleToFill" id="5aY-oG-FVH">
                        <rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                        <subviews>
                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dnn-Zd-Y1M">
                                <rect key="frame" x="192" y="246" width="31" height="30"/>
                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                <state key="normal" title="跳转"/>
                                <connections>
                                    <segue destination="BYZ-38-t0r" kind="modal" id="Ipt-A0-EwF"/>
                                </connections>
                            </button>
                        </subviews>
                        <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
                    </view>
                </viewController>
                <placeholder placeholderIdentifier="IBFirstResponder" id="aje-Ad-KL1" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
            </objects>
            <point key="canvasLocation" x="-620.28985507246387" y="111.83035714285714"/>
            <point key="canvasLocation" x="131.25" y="103.75"/>
        </scene>
    </scenes>
    <resources>
        <systemColor name="darkTextColor">
            <color white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
        </systemColor>
    </resources>
</document>
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/Info.plist
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/Info.plist
@@ -50,6 +50,8 @@
            </array>
        </dict>
    </dict>
    <key>UIFileSharingEnabled</key>
    <true/>
    <key>UILaunchStoryboardName</key>
    <string>Main</string>
    <key>UIMainStoryboardFile</key>
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/SceneDelegate.h
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/SceneDelegate.m
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/ViewController.h
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/ViewController.mm
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/ViewController.mm
@@ -16,16 +16,15 @@
 添加系统库 libiconv2.4.0.tbd,libz.tbd,libbz2.tbd.
 3、demo仅做参考,具体请根据App的情况适时调用
 */
#import <ifaddrs.h>
#import <arpa/inet.h>
#import <AVFoundation/AVFoundation.h>
#import "ViewController.h"
#import <ESVideoPhoneSDk/ESVideoPhone.h>
#import <ESVideoPhoneSDk/ESError.h>
#import "AudioSessionHelper.h"
#import "ESVideo.h"
@interface ViewController ()<ESVideoPhoneDelegate,UITextFieldDelegate>
@property (nonatomic,strong) AudioSessionHelper    *sessionHelper;
@property (nonatomic,strong) ESVideoPhone          *es;
@property (nonatomic,assign) BOOL                  playing;
@property (nonatomic,assign) BOOL                  isInterrupt;
@@ -35,38 +34,32 @@
@property (weak, nonatomic) IBOutlet UITextField *uIDTextField;
@property (weak, nonatomic) IBOutlet UIButton *mCallOrAccept;
@property (weak, nonatomic) IBOutlet UIButton *monitorBtn;
@property (weak, nonatomic) IBOutlet UITextField *mngUUIDTextField;
@end
@implementation ViewController
{
    BOOL isAccessAudio;
    BOOL isAccessVideo;
    BOOL isBackGround;
    BOOL iSVideoNotDetermined;
    BOOL iSAudioNotDetermined;
}
- (void)viewDidLoad {
    [super viewDidLoad];
    [ESVideo.shareInstance initSDK];
    [self testHttp];
    //初始化中断,进入后台的tag
    _playing = NO;
    _isSpeaking = NO;
    _isSpeaking = YES;
    self.isInterrupt = NO;
    _es = ESVideo.shareInstance.es;
    _es.isInterrupt = NO;
    isBackGround = NO;
    [_speakerBtn setTitle:@"听筒" forState:UIControlStateNormal];
//    _mCallOrAccept.enabled = NO;
//    _monitorBtn.enabled = NO;
//    _uIDTextField.text = @"JJY000016YWECG";//@"JJY000007FSEYX" 默认门口机的ID
//       _uIDTextField.text = @"JJY000017XLUXX";//@"JJY000007FSEYX" 默认门口机的ID
    _uIDTextField.text = @"JJY000019VPLLF";//@"JJY000019VPLLF" 默认门口机的ID
//           _uIDTextField.text = @"JJY000016YWECG";//@"JJY000016YWECG" 默认门口机的ID
    _uIDTextField.text = @"JJY000019VPLLF"; //@"JJY000016YWECG";//@"JJY000007FSEYX" 默认门口机的ID
    _uIDTextField.delegate = self;    //⚠️这里必须要检查是否已经授权否则会失败,初始化视频音频采集
    [self requestAccessForAVMediaType:AVMediaTypeAudio];
     if (isAccessAudio) {
@@ -77,21 +70,16 @@
                 [self saveImage:image];
             });
         };
         //门口机会有视频的长宽高,是固定的(暂时还不确定)
//         _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame:CGRectMake(10, 100, self.view.frame.size.width-20, (self.view.frame.size.width-20)/4*3) delegate:self imagecallBack:snapImageCallback];
         //门口机会有视频的长宽高,是固定的(暂时还不确定),
         _es = [[ESVideoPhone alloc]initESVideoPhoneWithFrame:CGRectMake(10, 100, self.view.frame.size.width-20, (self.view.frame.size.width-20)/4*3) delegate:self imagecallBack:snapImageCallback];
         if (_es) {
             //判断视频渲染是否初始化成功,如果失败会走ESVideoPhoneDelegate方法
             if (_es.showView) {
//                 _es.showView.frame = CGRectMake(10, 100, self.view.frame.size.width-20, (self.view.frame.size.width-20)/4*3);
                 ESVideo.shareInstance.snapImageCallback = snapImageCallback;
                 _es.showView.backgroundColor = [UIColor greenColor];
                 _es.delegate = self;
                 [self.view addSubview:_es.showView];
             }else{
                 NSLog(@"_es.showView null");
             }
         }else{
             //p2p初始化失败会返回nil
             NSLog(@"ESVideoPhone 初始化失败");
             return;
         }
@@ -110,14 +98,46 @@
            NSLog(@"VideoCaptureSession 初始化失败");
        }
    }
    //初始化AudioSession
    _sessionHelper = [[AudioSessionHelper alloc]init];
    [_sessionHelper setAudioSession];
    //添加进入后台,中断等通知
    [self addObservers];
    [self internetStatus];
    NSLog(@"%@", [self getIpAddress]);
}
-(void)internetStatus {
    NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];//此处修改为自己公司的服务器地址
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        NSURLSession *session = [NSURLSession sharedSession];
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
            if (error == nil) {
                NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
                NSLog(@"%@",dict);
            }
        }];
        [dataTask resume];
}
-(void)testHttp
{
    NSURL *url = [NSURL URLWithString:@"https://www.baidu.com"];//此处修改为自己公司的服务器地址
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error == nil) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
            NSLog(@"网络请求测试%@",dict);
        }else{
            NSLog(@"网络请求测试失败");
        }
    }];
    [dataTask resume];
}
-(void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    //这个方法请根据App的具体情况调用
    //在viewDidLoad中 调用requestAccessForAVMediaType: 是为了节约初始化的时间
    //在viewDidAppear中调用requestAccessForAVMediaType: 是为了弹出提示打开权限的Alert
@@ -138,59 +158,62 @@
    [_es stopTalk];
}
-(void)dealloc{
    _es.delegate = nil;
//    _es.showView
      NSLog(@"==============dealloc1");
    [[NSNotificationCenter defaultCenter] removeObserver:self];
      NSLog(@"==============dealloc2");
//    [_es freeSubClass];
      NSLog(@"==============dealloc3");
    [_es freeSubClass];
}
#pragma mark ButtonAction
- (IBAction)back:(id)sender {
    [self dismissViewControllerAnimated:YES completion:NULL];
}
//反呼:模拟门口机呼叫手机,需要门口机先点呼叫,等1-2S后,手机点反呼。
//params样本 address=192.168.1.3:8554,tag=mobile://123,
//params样本 address=JJY000003UYRBK,tag=mobile://123,
- (IBAction)onReverseCall:(id)sender {
    NSString *title = [sender titleForState:UIControlStateNormal];
    if ([title isEqualToString:@"反呼"]) {
       NSString *normalStr = _uIDTextField.text;
       NSString *param = [NSString stringWithFormat:@"address=%@,tag=mobile://123,",normalStr];
       NSLog(@"============点反呼%@", param);
       //NSLog(@"%@", param);
       [_es onReverseCall:param];
    }else if([title isEqualToString:@"接听"]){
        [_es onAccept];
    }
  
}
- (IBAction)onHangup:(id)sender {
    [_es onHangup];
}
- (IBAction)onCallMng:(UIButton *)sender {
    [_es onCall:_mngUUIDTextField.text];
}
- (IBAction)onMonitor:(id)sender {
    [_es onMonitor:_uIDTextField.text];
}
- (IBAction)speaker:(UIButton *)sender {
    [_es stopTalk];
      NSString *result = nil;
      //听筒状态 插耳塞后拔掉后恢复到默认设置
      if (sender == nil) {
          result = [_sessionHelper speaker:NO];
          //result = [_sessionHelper speaker:YES];
          if ([_es resetAudioCaptureIsSpeak:YES]) {
              result = @"听筒";
          }
      }else{
          if(!_isSpeaking){
              result = [_sessionHelper speaker:YES];
            //  result = [_sessionHelper speaker:YES];
              [_es resetAudioCaptureIsSpeak:YES];
              result = @"听筒";
              _isSpeaking = YES;
          }else{
              result = [_sessionHelper speaker:NO];
             // result = [_sessionHelper speaker:NO];
              [_es resetAudioCaptureIsSpeak:NO];
              result = @"免提";
              _isSpeaking = NO;
          }
      }
      if (result) {
          [sender setTitle:result forState:UIControlStateNormal];
          [_es startTalk];
      }
      
}
@@ -279,7 +302,7 @@
    // If media services were reset, and the last start succeeded, restart the session.
    if (error.code == AVErrorMediaServicesWereReset) {
        [_es onStopCapture];
        [_es startTalk];
        [_es stopTalk];
    }
}
@@ -577,4 +600,30 @@
    
}
-(NSString *)getIpAddress {
    NSString *address = @"error";
    struct ifaddrs *interfaces = NULL;
    struct ifaddrs *temp_addr = NULL;
    int success = 0;
    // retrieve the current interfaces - returns 0 on success
    success = getifaddrs(&interfaces);
    if (success == 0) {
        // Loop through linked list of interfaces
        temp_addr = interfaces;
        while(temp_addr != NULL) {
            if(temp_addr->ifa_addr->sa_family == AF_INET) {
                // Check if interface is en0 which is the wifi connection on the iPhone
                if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
                    // Get NSString from C String
                    address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
                }
            }
            temp_addr = temp_addr->ifa_next;
        }
    }
    // Free memory
    freeifaddrs(interfaces);
    return address;
}
@end
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemo/main.m
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDKDemo/main.m
@@ -17,3 +17,4 @@
    }
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoTests/ESVideoPhoneSDKDemoTests.m
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoTests/Info.plist
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoUITests/ESVideoPhoneSDKDemoUITests.m
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDKDemoUITests/Info.plist
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/ESVideoPhoneSDk
Binary files differ
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Headers/ESError.h
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/Headers/ESError.h
@@ -68,9 +68,13 @@
    LMPAudioPlayErrorBypassVoiceProcessing          = 6,//AudioPlay_打开回声消除功能失败
    LMPAudioPlayErrorAudioUnitInitialize            = 7,//AudioPlay_AudioUnitInitialize失败
};
//音频重采样,会导致不能发送播放音频。
typedef NS_ENUM (NSUInteger, LMPAudioConverterError){
    LMPAudioConverterErrorGetNew                   = 0,//GetNew失败
    LMPAudioConverterErrorRecord                   = 1,//Record失败
};
@interface ESError : NSObject
@end
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/Headers/ESVideoPhone.h
@@ -4,7 +4,7 @@
//
//  Created by maygion on 2019/3/26.
//  Copyright © 2019 eTouchSky. All rights reserved.
//  SDK版本号:1.1.0
//  SDK版本号:1.0.0  测试版1
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@@ -26,21 +26,26 @@
@property(nonatomic,strong,readonly) UIView* showView;
//中断设置
@property (nonatomic,assign,readwrite) BOOL isInterrupt;
/**
* ESVideoPhone 初始化方法
*
* 初始化P2P,OpenGL,AudioUnit播放。
* @param frame 生成显示视频的CGRect
* @param delegate ESVideoPhoneDelegate代理
* @paramimagecallBack 获取视频截图的block
*
*  @return ESVideoPhone 实例,返回nil表示初始化失败。
*  @return ESVideoPhone 实例,返回nil表示P2P初始化失败。
*/
- (instancetype)initESVideoPhoneWithFrame:(CGRect)frame delegate: (id<ESVideoPhoneDelegate>)del imagecallBack:(ImageCallback)callBack;
//授权后打开音频采集,视频没有权限也可以只音频通话
-(BOOL)initAudioCaptureSession;
//⚠️授权后打开视频采集,音频没有权限建议不要发起通话
-(BOOL)initVideoCaptureSession;
/**
* 呼叫
*
* @param deviceId 门口机设备ID,这个参数会从后台拉取(一般是个数组其中包含该用户权限拥有的所有门口机)
*/
- (void)onCall:(NSString *)deviceId;
/**
* 监控
*
@@ -75,6 +80,10 @@
-(void)openTheDoorWithRoomid: (int)roomId;
//释放资源(delegate释放等)
-(void)freeSubClass;
//免提播放 听筒播放 互相切换  buffer重制为0,否则有些系统,在听筒模式下不能采集 error-50
-(BOOL)resetAudioCaptureIsSpeak:(BOOL)isSpeak;
@end
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/Info.plist
Binary files differ
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeDirectory
Binary files differ
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements
Binary files differ
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeRequirements-1
Binary files differ
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources
File was renamed from ESVideoPhoneSDKDemo1.2/ESVideoPhoneSDKDemo/ESVideoPhoneSDk.framework/_CodeSignature/CodeResources
@@ -4,21 +4,17 @@
<dict>
    <key>files</key>
    <dict>
        <key>.DS_Store</key>
        <data>
        Y/zzZVahlzqsXsKRy9ythZX/tmM=
        </data>
        <key>Headers/ESError.h</key>
        <data>
        6x23lohs1gRaX2F7raZcezxZt4A=
        pvjBtkhm2U/Y83vkOrTjVeFC1rc=
        </data>
        <key>Headers/ESVideoPhone.h</key>
        <data>
        PXntC+GjEn5A+q23YZHDZYIGj3k=
        kGvbOvS6cBnVsmUHmyi2E6VgP+8=
        </data>
        <key>Info.plist</key>
        <data>
        YgFQhxxTQ5/xhKsrQd4C5NGn22w=
        Zp/dsh9RYNjl/knrzPgFdMIaTIU=
        </data>
    </dict>
    <key>files2</key>
@@ -27,22 +23,22 @@
        <dict>
            <key>hash</key>
            <data>
            6x23lohs1gRaX2F7raZcezxZt4A=
            pvjBtkhm2U/Y83vkOrTjVeFC1rc=
            </data>
            <key>hash2</key>
            <data>
            y8ReVa9YaZ6fyPjy8EeTl3jbaUadZUYVC0IdLJ/HrgM=
            18Khpfz8wF7kpRYfu0Hu9nXX8ojPhCddZq9AC5/W4P0=
            </data>
        </dict>
        <key>Headers/ESVideoPhone.h</key>
        <dict>
            <key>hash</key>
            <data>
            PXntC+GjEn5A+q23YZHDZYIGj3k=
            kGvbOvS6cBnVsmUHmyi2E6VgP+8=
            </data>
            <key>hash2</key>
            <data>
            MboPVH5djlpgR//Z7UcRBMEeaakW6FWQbZxlkx4KzaM=
            0nI6AIHD+V13SkVwTcbXE/eDC2SJLVTIcX2hiIoRtJg=
            </data>
        </dict>
    </dict>
SDKDemo/ESVideoPhoneSDKDemo_F20210315/ESVideoPhoneSDk.framework/_CodeSignature/CodeSignature
Binary files differ