wxr
2024-12-03 cb9232b3ab413fae7bcc2b94abd70f18ca02b263
HDLLinPhoneSDK/HDLLinPhoneSDK/HDLLinphoneIntercomVC.m
@@ -50,6 +50,10 @@
    NSString * callingStr;
    NSString * hangUpStr;
    NSString * endOfCallStr;
    NSString * cancelStr;
    NSString * tipMsgStr;
    //    int openDoorTimeout;
    //全局变量
    SystemSoundID sound;
@@ -67,7 +71,7 @@
    [self initCentetView];
    [self initData];
    [self initESVideo];
    //开始反呼
    //开始震动
    [self StartReverseCall];
    [self ShowCalltimeBtn:callingStr];
    //注册开锁成功监听
@@ -77,8 +81,22 @@
        self.titleUILabel.text=self.titleName;
    }
//    self.titleUILabel.text=self.titleName;
    [NSNotificationCenter.defaultCenter addObserver:self
                                           selector:@selector(registrationUpdate:)
                                               name:@"LinphoneRegistrationUpdate"
                                             object:nil];
}
- (void)registrationUpdate:(NSNotification *)notif {
    int state = [[notif.userInfo objectForKey:@"state"] intValue];
    if(state==11){//挂断了
        NSLog(@"挂断或出错了");
        [self showUIAlertViewWithBack:@"通话结束"];
    }
}
-(void)initLlanguage{
    NSString *languageName = [[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] objectAtIndex:0];
@@ -95,6 +113,8 @@
        unlockSuccessfullyStr = @"开锁成功";
        callingStr = @"来电中...";
        endOfCallStr = @"通话结束";
        cancelStr = @"取消";
        tipMsgStr = @"确定开锁吗?";
    }else{
        tipStr = @"Prompt";
        okStr = @"OK";
@@ -106,6 +126,8 @@
        unlockSuccessfullyStr = @"Unlock successfully";
        callingStr = @"Incoming call";
        endOfCallStr = @"End of call";
        cancelStr = @"Cancel";
        tipMsgStr = @"Are you sure to unlock?";
        
    }
}
@@ -238,6 +260,7 @@
    [_screenshotImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_takephoto_unselect"] forState:UIControlStateNormal];
    
    //截图
    [HDLLinphoneManager.instance snapShotWithView:self.videoView];
    
}
@@ -264,7 +287,26 @@
    [_unlockImgBtn setImage:[UIImage imageNamed:@"ic_esvideo_on_unlock_unselect"] forState:UIControlStateNormal];
    //开锁
    if(self.hdlLinphoneCallDelegate != NULL){
        [self.hdlLinphoneCallDelegate onUnlockAction];
        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:tipStr message:tipMsgStr preferredStyle:UIAlertControllerStyleAlert];
        // 添加取消按钮
        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:cancelStr style:UIAlertActionStyleCancel handler:nil];
        [alertController addAction:cancelAction];
        // 添加确认按钮
        WEAKSELF_AT
        UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:okStr  style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            [weakSelf_AT.hdlLinphoneCallDelegate onUnlockAction];
        }];
        [alertController addAction:confirmAction];
        // 获取当前视图控制器
        UIViewController *currentViewController = [UIApplication sharedApplication].keyWindow.rootViewController;
        // 显示弹窗
        [currentViewController presentViewController:alertController animated:YES completion:nil];
    }
}
@@ -332,7 +374,7 @@
//    [[HDLCallManager instance] acceptCallByCallID:self.CallId hasVideo:self.hasVideo];
    [[HDLLinphoneManager instance] acceptCall];
    /// 开启对讲
    [self startTalk];
//    [self startTalk];
    
    _answerImgBtn.hidden = YES;
    _answerTextBtn.hidden = YES;
@@ -505,7 +547,7 @@
/** 开启倒计时 */
- (void)startOpenDoorCountdown {
    
    if (_openDoorTimeout > 20) {
    if (_openDoorTimeout > 10) {
        return;
    }
    
@@ -520,7 +562,7 @@
    
    dispatch_source_set_event_handler(_openDoorTimer, ^{
        WEAKSELF_AT
        if(weakSelf_AT.openDoorTimeout >= 20 ){// 计时结束
        if(weakSelf_AT.openDoorTimeout >= 10 ){// 计时结束
            // 关闭定时器
            dispatch_source_cancel(weakSelf_AT.openDoorTimer);
            
@@ -629,6 +671,7 @@
}
-(void)viewWillDisappear:(BOOL)animated{
    NSLog(@"viewWillDisappear");
    [super viewWillDisappear:animated];
    [self stopPlaySystemSound];
    //防止用户不按挂断,或者不等收到对方的挂断,点击返回按钮。
@@ -646,6 +689,8 @@
        _countdownTimer = nil; // OK
        
    }
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    
}
@@ -711,7 +756,7 @@
#pragma 震动实现貌似和SDK冲突 不能实现震动
//开始播放的时候调用
-(void)startPlaySystemSound{
    return;
//    return;
    //    //震动的提示文件名放到资源目录下
    //    NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
    //    AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &sound);
@@ -724,13 +769,13 @@
//手动停止播放的时候调用
- (void)stopPlaySystemSound{
    return;
//    return;
    NSLog(@"stop PlaySystemSound");
    stopRingAndVibration();
    HDLLPStopRingAndVibration();
}
//停止响铃和震动,移除回调并处理掉铃声和震动
void stopRingAndVibration() {
void HDLLPStopRingAndVibration() {
    AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate);
    //    AudioServicesRemoveSystemSoundCompletion(sound);
    AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);