CloudPhotoConfig.mm 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. //
  2. // CloudPhotoConfig.m
  3. // FunSDKDemo
  4. //
  5. // Created by XM on 2019/1/3.
  6. // Copyright © 2019年 XM. All rights reserved.
  7. //
  8. #import "CloudPhotoConfig.h"
  9. #import "FunSDK/FunSDK.h"
  10. #import "FunSDK/Fun_MC.h"
  11. @interface CloudPhotoConfig ()
  12. {
  13. NSMutableArray *fileArray; //搜索某一天的图片数组结果
  14. NSMutableArray *dateArray; //搜索某一个月哪些天有图片的结果数组
  15. }
  16. @end
  17. @implementation CloudPhotoConfig
  18. #pragma mark - 获取传入这一天当月有云图片的日期
  19. - (void)getCloudPhotoMonth:(NSDate*)date {
  20. dateArray = [[NSMutableArray alloc] initWithCapacity:0];
  21. //获取通道
  22. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  23. NSDateComponents * components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:date];
  24. SDK_SYSTEM_TIME nTime;
  25. nTime.year = (int)components.year;
  26. nTime.month = (int)components.month;
  27. nTime.day = 1;
  28. nTime.hour =0;
  29. nTime.minute = 0;
  30. nTime.second = 0;
  31. time_t ToTime_t(SDK_SYSTEM_TIME *time);
  32. int time =(int)ToTime_t(&nTime);
  33. MC_SearchAlarmByMoth(self.MsgHandle, SZSTR(channel.deviceMac), 0, "", time,0);
  34. }
  35. #pragma mark 获取传入日期云存储中的图片
  36. - (void)searchCloudPicture:(NSDate*)date {
  37. fileArray = [[NSMutableArray alloc] initWithCapacity:0];
  38. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  39. XPMS_SEARCH_ALARMINFO_REQ alarmInfo = {0};
  40. strcpy(alarmInfo.Uuid, SZSTR(channel.deviceMac));
  41. alarmInfo.Channel = channel.channelNumber;
  42. alarmInfo.Number = -1;
  43. alarmInfo.Index = 0;
  44. NSCalendar *calendar =[NSCalendar currentCalendar];
  45. NSDateComponents* compt = [calendar components:(NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay|NSCalendarUnitHour|NSCalendarUnitMinute|NSCalendarUnitSecond) fromDate:date];
  46. alarmInfo.StarTime.year = (int)compt.year;
  47. alarmInfo.StarTime.month = (int)compt.month;
  48. alarmInfo.StarTime.day = (int)compt.day;
  49. alarmInfo.StarTime.hour = 0;
  50. alarmInfo.StarTime.minute = 0;
  51. alarmInfo.StarTime.second = 0;
  52. alarmInfo.EndTime.year = (int)compt.year;
  53. alarmInfo.EndTime.month = (int)compt.month;
  54. alarmInfo.EndTime.day = (int)compt.day;
  55. alarmInfo.EndTime.hour = 23;
  56. alarmInfo.EndTime.minute = 59;
  57. alarmInfo.EndTime.second = 59;
  58. MC_SearchAlarmInfoByTime(self.MsgHandle, &alarmInfo,1);
  59. }
  60. #pragma mark - 下载云存储缩略图
  61. - (void)downloadSmallCloudPicture:(XMAlarmMsgResource*)msgResource {
  62. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  63. NSString *thumbPath = [NSString thumbnailPath];
  64. NSString *pictureFilePath = [thumbPath stringByAppendingFormat:@"/%@.jpg",msgResource.ID];
  65. //下载缩略图,大小可以客户端自己定义
  66. int width = 60;
  67. MC_DownloadAlarmImage(self.MsgHandle, SZSTR(channel.deviceMac), SZSTR(pictureFilePath), SZSTR(msgResource.JsonStr), width, width, 0);
  68. }
  69. #pragma mark 下载云存储原图
  70. - (void)downloadCloudPicture:(XMAlarmMsgResource*)msgResource {
  71. ChannelObject *channel = [[DeviceControl getInstance] getSelectChannel];
  72. NSString *filePath = [NSString pictureFilePath];
  73. NSString *pictureFilePath = [filePath stringByAppendingFormat:@"/%@.jpg",msgResource.ID];
  74. MC_DownloadAlarmImage(self.MsgHandle, SZSTR(channel.deviceMac), SZSTR(pictureFilePath), SZSTR(msgResource.JsonStr), 0, 0, 1);
  75. }
  76. #pragma mark - 读取当前月份哪些日期有云存储图片
  77. - (NSMutableArray*)getMonthPictureArray {
  78. if (dateArray) {
  79. return dateArray;
  80. }
  81. return [NSMutableArray array];
  82. }
  83. #pragma mark -读取获取到的传入一天中的图片数组
  84. - (NSMutableArray*)getCloudPictureFileArray {
  85. if (fileArray) {
  86. return fileArray;
  87. }
  88. return [NSMutableArray array];
  89. }
  90. #pragma mark - OnFunSDKResult
  91. -(void)OnFunSDKResult:(NSNumber *)pParam{
  92. NSInteger nAddr = [pParam integerValue];
  93. MsgContent *msg = (MsgContent *)nAddr;
  94. switch ( msg->id ) {
  95. #pragma mark 搜索有云图片的日期回调
  96. case EMSG_MC_SearchAlarmByMoth:{
  97. NSData *data = [[[NSString alloc]initWithUTF8String:msg->szStr] dataUsingEncoding:NSUTF8StringEncoding];
  98. if ( data == nil ) {
  99. if ([self.delegate respondsToSelector:@selector(getCloudMonthResult:)]) {
  100. [self.delegate getCloudMonthResult:msg->param1];
  101. }
  102. return;
  103. }
  104. NSDictionary *appData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
  105. if ( appData == nil) {
  106. if ([self.delegate respondsToSelector:@selector(getCloudMonthResult:)]) {
  107. [self.delegate getCloudMonthResult:msg->param1];
  108. }
  109. return;
  110. }
  111. NSDictionary *dic = [appData objectForKey:@"AlarmCenter"];
  112. NSArray *dateArr = [[dic objectForKey:@"Body"] objectForKey:@"Date"];
  113. if (!dateArr || dateArr.count<=0) {
  114. if ([self.delegate respondsToSelector:@selector(getCloudMonthResult:)]) {
  115. [self.delegate getCloudMonthResult:msg->param1];
  116. }
  117. return;
  118. }
  119. for (int i = 0; i<dateArr.count; i++) {
  120. [dateArray addObject:[dateArr[i] objectForKey:@"Time"]];
  121. }
  122. if ([self.delegate respondsToSelector:@selector(getCloudMonthResult:)]) {
  123. [self.delegate getCloudMonthResult:msg->param1];
  124. }
  125. }
  126. break;
  127. #pragma mark 搜索云图片文件信息回调
  128. case EMSG_MC_SearchAlarmInfo: {
  129. int num = msg->param3;//报警个数
  130. char *pStr = (char *)msg->pObject;
  131. for (int i = 0; i < num; i++) {
  132. //解析
  133. NSData *data = [[[NSString alloc]initWithUTF8String:pStr] dataUsingEncoding:NSUTF8StringEncoding];
  134. if (data) {
  135. NSError *error;
  136. NSDictionary *dataDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error];
  137. NSDictionary *alarmInfoDic = dataDic[@"AlarmInfo"];
  138. XMAlarmMsgResource *resource = [[XMAlarmMsgResource alloc] init];
  139. resource.ID = dataDic[@"ID"];
  140. resource.size = [dataDic[@"picSize"] intValue];
  141. resource.picUrl = alarmInfoDic[@"Pic"];
  142. if (resource.picUrl) {
  143. resource.thumbnailPicUrl = [resource.picUrl stringByAppendingString:@"_176x144.jpeg"];
  144. }
  145. resource.channel = [alarmInfoDic[@"Channel"] intValue];
  146. resource.startTime = alarmInfoDic[@"StartTime"];
  147. resource.alarmEvent = alarmInfoDic[@"Event"];
  148. NSDictionary *dicPicInfo = [[dataDic objectForKey:@"AlarmInfo"] objectForKey:@"PicInfo"];
  149. if (dicPicInfo) {
  150. resource.ObjName = [dicPicInfo objectForKey:@"ObjName"];
  151. resource.StorageBucket = [dicPicInfo objectForKey:@"StorageBucket"];
  152. resource.JsonStr = [self convertToJSONData:dataDic];
  153. }
  154. [fileArray addObject:resource];
  155. }
  156. }
  157. if ([self.delegate respondsToSelector:@selector(getCloudPictureResult:)]) {
  158. [self.delegate getCloudPictureResult:msg->param1];
  159. }
  160. }
  161. break;
  162. #pragma mark 下载云图片回调 (缩略图和原图)
  163. case EMSG_MC_SearchAlarmPic:{
  164. NSString *path = @"";
  165. if (msg->param1 >=0) {
  166. //显示图片
  167. path = NSSTR(msg->szStr);
  168. }
  169. if (msg->seq == 0) {
  170. if ([self.delegate respondsToSelector:@selector(downloadSmallCloudPictureResult: path:)]) {
  171. [self.delegate downloadSmallCloudPictureResult:msg->param1 path:path];
  172. }
  173. }else if (msg->seq == 1) {
  174. if ([self.delegate respondsToSelector:@selector(downloadCloudPictureResult: path:)]) {
  175. [self.delegate downloadCloudPictureResult:msg->param1 path:path];
  176. }
  177. }
  178. }
  179. break;
  180. default:
  181. break;
  182. }
  183. }
  184. -(NSString*)convertToJSONData:(id)infoDict {
  185. NSError *error;
  186. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:infoDict
  187. options:NSJSONWritingPrettyPrinted
  188. error:&error];
  189. NSString *jsonString = @"";
  190. if (! jsonData) {
  191. NSLog(@"Got an error: %@", error);
  192. }else {
  193. jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
  194. }
  195. jsonString = [jsonString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; //去除掉首尾的空白字符和换行字符
  196. [jsonString stringByReplacingOccurrencesOfString:@"\n" withString:@""];
  197. return jsonString;
  198. }
  199. @end