TalkBackControl.mm 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //
  2. // TalkBackControl.m
  3. // XMEye
  4. //
  5. // Created by XM on 2017/6/6.
  6. // Copyright © 2017年 Megatron. All rights reserved.
  7. //
  8. #import "TalkBackControl.h"
  9. #import "Header.h"
  10. @implementation TalkBackControl
  11. - (void)startTalk{
  12. if (_audioRecode == nil) {
  13. _audioRecode = [[Recode alloc] init];
  14. }
  15. [_audioRecode startRecode:self.deviceMac];
  16. //先停止音频
  17. FUN_MediaSetSound(_handle, 0, 0);
  18. if (_hTalk == 0) {
  19. //开始对讲
  20. _hTalk = FUN_DevStarTalk(self.msgHandle, [self.deviceMac UTF8String], FALSE, 0, 0);
  21. }
  22. //暂停设备端上传音频数据
  23. const char *str = "{\"Name\":\"OPTalk\",\"OPTalk\":{\"Action\":\"PauseUpload\"},\"SessionID\":\"0x00000002\"}";
  24. FUN_DevCmdGeneral(self.msgHandle, [self.deviceMac UTF8String], 1430, "PauseUpload", 0, 0, (char*)str, 0, -1, 0);
  25. //APP停止播放设备音频
  26. FUN_MediaSetSound(_hTalk, 0, 0);
  27. }
  28. - (void)pauseTalk{
  29. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  30. if (_audioRecode != nil) {
  31. [_audioRecode stopRecode];
  32. _audioRecode = nil;
  33. }
  34. //恢复设备端上传音频数据
  35. const char *str = "{\"Name\":\"OPTalk\",\"OPTalk\":{\"Action\":\"ResumeUpload\"},\"SessionID\":\"0x00000002\"}";
  36. FUN_DevCmdGeneral(self.msgHandle, [self.deviceMac UTF8String], 1430, "ResumeUpload", 0, 0, (char*)str, 0, -1, 0);
  37. //app播放设备端音频
  38. FUN_MediaSetSound(_hTalk, 100, 0);
  39. });
  40. }
  41. //停止预览->停止对讲,停止音频
  42. -(void)closeTalk{
  43. if (_hTalk != 0) {
  44. if (_audioRecode != nil) {
  45. [_audioRecode stopRecode];
  46. _audioRecode = nil;
  47. }
  48. if (_hTalk != 0) {
  49. FUN_DevStopTalk(_hTalk);
  50. FUN_MediaSetSound(_hTalk, 0, 0);
  51. _hTalk = 0;
  52. }else{
  53. FUN_MediaSetSound(_handle, 0, 0);
  54. }
  55. }
  56. }
  57. -(void)OnFunSDKResult:(NSNumber *) pParam{
  58. NSInteger nAddr = [pParam integerValue];
  59. MsgContent *msg = (MsgContent *)nAddr;
  60. switch (msg->id) {
  61. case EMSG_DEV_START_TALK: {//对讲失败
  62. if(_hTalk != 0 && msg->param1 != EE_OK){
  63. [MessageUI ShowErrorInt:msg->param1];
  64. _hTalk = 0;
  65. }else{
  66. }
  67. }
  68. break;
  69. case EMSG_DEV_STOP_TALK: {
  70. }
  71. break;
  72. default:
  73. break;
  74. }
  75. }
  76. - (BOOL)isSupportTalk{
  77. //鱼眼灯泡不支持对讲 其他都支持 所以先直接返回ture 后期修改语言灯泡对讲
  78. return YES;
  79. }
  80. @end