RCCommandHelp.m 47 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348
  1. //
  2. // RCCommandHelp.m
  3. // VclustersGemini
  4. //
  5. // Created by APPLE on 2019/11/7.
  6. // Copyright © 2019 APPLE. All rights reserved.
  7. //
  8. #import "RCCommandHelp.h"
  9. #import <objc/runtime.h>
  10. #import "AppDelegate.h"
  11. @implementation RCCommandHelp
  12. #define USENEWCONTROLLCOMMONDNO500 YES
  13. #pragma -mark- 设备控制指令拼接方式
  14. + (NSString *)commandAppending00StringWithSourStr:(NSString *)commondStr
  15. {
  16. NSString *resultStr = @"00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
  17. resultStr = [resultStr substringToIndex:resultStr.length - commondStr.length];
  18. resultStr = [resultStr stringByAppendingString:commondStr];
  19. // KyoLog(@"\n %s = %lu",__func__,(unsigned long)resultStr.length);
  20. return resultStr;
  21. }
  22. + (NSString *)commandAppendingHeadAndEndStrWithSourStr:(NSString *)commondStr
  23. {
  24. NSString *resultStr = [@"#" stringByAppendingString:commondStr];
  25. resultStr = [resultStr stringByAppendingString:@"$"];
  26. // KyoLog(@"\n %s = %lu",__func__,(unsigned long)resultStr.length);
  27. return resultStr;
  28. }
  29. //#pragma -mark- 新设备控制指令
  30. //+ (NSString *)mutTapCommand500DownWithTouches:(NSArray *)touches
  31. // showImageView:(UIImageView *)showImageView
  32. // isLan:(BOOL)isLan
  33. //{
  34. // /*比列换算*/
  35. //// CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  36. //// CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  37. //// CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  38. //// CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  39. //
  40. // CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  41. // CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  42. //
  43. //
  44. // NSString *pointList = @"";
  45. // for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  46. // {
  47. // UITouch *touch = [touches objectAtIndex:nfori];
  48. // CGPoint lastPoint = [touch locationInView:showImageView];
  49. //
  50. // /*换算后的坐标*/
  51. //// CGFloat x = lastPoint.x*ratex;
  52. //// CGFloat y = lastPoint.y*ratey;
  53. // CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  54. // CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  55. //
  56. // pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  57. // }
  58. //
  59. // pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  60. //
  61. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionDown\"}",pointList];
  62. //
  63. // if (USENEWCONTROLLCOMMONDNO500)
  64. // {
  65. //// dataStr = [CommondToStr commondAppendingHeadAndEndStrWithSourStr:dataStr];
  66. // }
  67. // else
  68. // {
  69. // dataStr = [RCCommandHelp commandAppending00StringWithSourStr:dataStr];
  70. // }
  71. //
  72. // return dataStr;
  73. //}
  74. //
  75. //+ (NSString *)mutTapCommand500UpWithTouches:(NSArray *)touches
  76. // showImageView:(UIImageView *)showImageView
  77. // isLan:(BOOL)isLan
  78. //{
  79. // /*比列换算*/
  80. //// CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  81. //// CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  82. //// CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  83. //// CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  84. // CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  85. // CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  86. //
  87. // NSString *pointList = @"";
  88. // for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  89. // {
  90. // UITouch *touch = [touches objectAtIndex:nfori];
  91. // CGPoint lastPoint = [touch locationInView:showImageView];
  92. //
  93. // /*换算后的坐标*/
  94. //// CGFloat x = lastPoint.x*ratex;
  95. //// CGFloat y = lastPoint.y*ratey;
  96. // CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  97. // CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  98. //
  99. // pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  100. // }
  101. //
  102. // pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  103. //
  104. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionUp\"}",pointList];
  105. //
  106. //
  107. // if (USENEWCONTROLLCOMMONDNO500)
  108. // {
  109. //// dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  110. // }
  111. // else
  112. // {
  113. // dataStr = [self commandAppending00StringWithSourStr:dataStr];
  114. // }
  115. //
  116. // return dataStr;
  117. //}
  118. //
  119. //+ (NSString *)mutMoveCommand500UpWithTouches:(NSArray *)touches
  120. // showImageView:(UIImageView *)showImageView
  121. // isLan:(BOOL)isLan
  122. //{
  123. // /*比列换算*/
  124. //// CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  125. //// CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  126. //// CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  127. //// CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  128. //
  129. // CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  130. // CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  131. //
  132. //
  133. // NSString *pointList = @"";
  134. // for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  135. // {
  136. // UITouch *touch = [touches objectAtIndex:nfori];
  137. // CGPoint lastPoint = [touch locationInView:showImageView];
  138. //
  139. // /*换算后的坐标*/
  140. //// CGFloat x = lastPoint.x*ratex;
  141. //// CGFloat y = lastPoint.y*ratey;
  142. // CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  143. // CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  144. //
  145. // pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":0,\"x\":\"%f\",\"y\":\"%f\"}",x,y]];
  146. // }
  147. //
  148. // pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  149. //
  150. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionMove\"}",pointList];
  151. //
  152. // if (USENEWCONTROLLCOMMONDNO500)
  153. // {
  154. //// dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  155. // }
  156. // else
  157. // {
  158. // dataStr = [self commandAppending00StringWithSourStr:dataStr];
  159. // }
  160. //
  161. // return dataStr;
  162. //}
  163. //
  164. //+ (NSString *)tapDownCommandTouches:(UITouch *)touch
  165. // touchCount:(NSInteger)touchCount
  166. // showImageView:(UIImageView *)showImageView
  167. // isLan:(BOOL)isLan
  168. //{
  169. // int touchid = 0;
  170. //
  171. // if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  172. // {
  173. // touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  174. // }
  175. // else/*地址转int*/
  176. // {
  177. // NSString *ip = [NSString stringWithFormat:@"%p",touch];
  178. // ip = [ip substringFromIndex:2];
  179. // NSScanner* scanner = [NSScanner scannerWithString:ip];
  180. // [scanner scanInteger:&touchid];
  181. // }
  182. // CGPoint lastPoint = [touch locationInView:showImageView];
  183. //
  184. // CGFloat ratex = 0.0;
  185. // CGFloat ratey = 0.0;
  186. //
  187. // /*横屏状态下需要坐标翻转*/
  188. // if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  189. // ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  190. // ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  191. // }else{
  192. // ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  193. // ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  194. // }
  195. // CGFloat x = lastPoint.x*ratex;
  196. // CGFloat y = lastPoint.y*ratey;
  197. //
  198. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":0,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  199. //
  200. // return dataStr;
  201. //}
  202. //
  203. //+ (NSString *)tapUpCommandTouches:(UITouch *)touch
  204. // touchCount:(NSInteger)touchCount
  205. // showImageView:(UIImageView *)showImageView
  206. // isLan:(BOOL)isLan
  207. //{
  208. // int touchid = 0;
  209. //
  210. // if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  211. // {
  212. // touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  213. // }
  214. // else/*地址转int*/
  215. // {
  216. // NSString *ip = [NSString stringWithFormat:@"%p",touch];
  217. // ip = [ip substringFromIndex:2];
  218. // NSScanner* scanner = [NSScanner scannerWithString:ip];
  219. // [scanner scanInteger:&touchid];
  220. // }
  221. //
  222. // CGFloat ratex = 0.0;
  223. // CGFloat ratey = 0.0;
  224. //
  225. // CGPoint lastPoint = [touch locationInView:showImageView];
  226. //
  227. // /*横屏状态下需要坐标翻转*/
  228. // if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  229. // ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  230. // ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  231. // }else{
  232. // ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  233. // ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  234. // }
  235. // CGFloat x = lastPoint.x*ratex;
  236. // CGFloat y = lastPoint.y*ratey;
  237. //
  238. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":1,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  239. //
  240. // return dataStr;
  241. //}
  242. //
  243. //+ (NSString *)tapMoveCommandTouches:(UITouch *)touch
  244. // touchCount:(NSInteger)touchCount
  245. // showImageView:(UIImageView *)showImageView
  246. // isLan:(BOOL)isLan
  247. //{
  248. // int touchid = 0;
  249. //
  250. // if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  251. // {
  252. // touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  253. // }
  254. // else/*地址转int*/
  255. // {
  256. // NSString *ip = [NSString stringWithFormat:@"%p",touch];
  257. // ip = [ip substringFromIndex:2];
  258. // NSScanner* scanner = [NSScanner scannerWithString:ip];
  259. // [scanner scanInteger:&touchid];
  260. // }
  261. //
  262. // CGFloat ratex = 0.0;
  263. // CGFloat ratey = 0.0;
  264. //
  265. // CGPoint lastPoint = [touch locationInView:showImageView];
  266. //
  267. // /*横屏状态下需要坐标翻转*/
  268. // if(showImageView.frame.size.width > showImageView.frame.size.height){/*横屏模式*/
  269. // ratex = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.width;
  270. // ratey = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.height;
  271. // }else{
  272. // ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  273. // ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  274. // }
  275. // CGFloat x = lastPoint.x*ratex;
  276. // CGFloat y = lastPoint.y*ratey;
  277. //
  278. // NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":2,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  279. //
  280. // return dataStr;
  281. //}
  282. #pragma -mark- 新设备控制指令
  283. + (NSString *)mutTapCommand500DownWithTouches:(NSArray *)touches
  284. showImageView:(UIImageView *)showImageView
  285. isLan:(BOOL)isLan
  286. {
  287. /*比列换算*/
  288. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  289. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  290. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  291. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  292. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  293. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  294. NSString *pointList = @"";
  295. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  296. {
  297. UITouch *touch = [touches objectAtIndex:nfori];
  298. CGPoint lastPoint = [touch locationInView:showImageView];
  299. /*换算后的坐标*/
  300. // CGFloat x = lastPoint.x*ratex;
  301. // CGFloat y = lastPoint.y*ratey;
  302. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  303. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  304. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  305. }
  306. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  307. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionDown\"}",pointList];
  308. if (USENEWCONTROLLCOMMONDNO500)
  309. {
  310. // dataStr = [CommondToStr commondAppendingHeadAndEndStrWithSourStr:dataStr];
  311. }
  312. else
  313. {
  314. dataStr = [RCCommandHelp commandAppending00StringWithSourStr:dataStr];
  315. }
  316. return dataStr;
  317. }
  318. + (NSString *)mutTapCommand500UpWithTouches:(NSArray *)touches
  319. showImageView:(UIImageView *)showImageView
  320. isLan:(BOOL)isLan
  321. {
  322. /*比列换算*/
  323. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  324. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  325. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  326. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  327. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  328. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  329. NSString *pointList = @"";
  330. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  331. {
  332. UITouch *touch = [touches objectAtIndex:nfori];
  333. CGPoint lastPoint = [touch locationInView:showImageView];
  334. /*换算后的坐标*/
  335. // CGFloat x = lastPoint.x*ratex;
  336. // CGFloat y = lastPoint.y*ratey;
  337. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  338. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  339. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":%ld,\"x\":\"%f\",\"y\":\"%f\"}",(long)nfori,x,y]];
  340. }
  341. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  342. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionUp\"}",pointList];
  343. if (USENEWCONTROLLCOMMONDNO500)
  344. {
  345. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  346. }
  347. else
  348. {
  349. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  350. }
  351. return dataStr;
  352. }
  353. + (NSString *)mutMoveCommand500UpWithTouches:(NSArray *)touches
  354. showImageView:(UIImageView *)showImageView
  355. isLan:(BOOL)isLan
  356. {
  357. /*比列换算*/
  358. // CGFloat ratex = (showImageView.frame.size.width > showImageView.frame.size.height)?(H_PHONE/showImageView.frame.size.width):(W_PHONE/showImageView.frame.size.width);
  359. // CGFloat ratey = (showImageView.frame.size.height > showImageView.frame.size.width)?(H_PHONE/showImageView.frame.size.height):(W_PHONE/showImageView.frame.size.height);
  360. // CGFloat ratex = W_PHONE/showImageView.frame.size.width;
  361. // CGFloat ratey = H_PHONE/showImageView.frame.size.height;
  362. CGFloat ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  363. CGFloat ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  364. NSString *pointList = @"";
  365. for (NSInteger nfori = 0;nfori < [touches count];nfori++)
  366. {
  367. UITouch *touch = [touches objectAtIndex:nfori];
  368. CGPoint lastPoint = [touch locationInView:showImageView];
  369. /*换算后的坐标*/
  370. // CGFloat x = lastPoint.x*ratex;
  371. // CGFloat y = lastPoint.y*ratey;
  372. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  373. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  374. pointList = [pointList stringByAppendingString:[NSString stringWithFormat:@"{\"action\":0,\"x\":\"%f\",\"y\":\"%f\"}",x,y]];
  375. }
  376. pointList = [pointList stringByReplacingOccurrencesOfString:@"}{" withString:@"},{"];
  377. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"fingerList\":[%@]},\"type\":\"morePortionMove\"}",pointList];
  378. if (USENEWCONTROLLCOMMONDNO500)
  379. {
  380. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  381. }
  382. else
  383. {
  384. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  385. }
  386. return dataStr;
  387. }
  388. + (NSString *)tapDownCommandTouches:(UITouch *)touch
  389. touchCount:(NSInteger)touchCount
  390. showImageView:(UIImageView *)showImageView
  391. isLan:(BOOL)isLan
  392. {
  393. int touchid = 0;
  394. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  395. {
  396. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  397. }
  398. else/*地址转int*/
  399. {
  400. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  401. ip = [ip substringFromIndex:2];
  402. NSScanner* scanner = [NSScanner scannerWithString:ip];
  403. [scanner scanInteger:&touchid];
  404. }
  405. CGFloat ratex = 0.0;
  406. CGFloat ratey = 0.0;
  407. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  408. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  409. NSLog(@"kk is 1");
  410. CGPoint lastPoint = [touch locationInView:showImageView];
  411. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  412. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  413. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":0,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  414. return dataStr;
  415. }
  416. + (NSString *)tapUpCommandTouches:(UITouch *)touch
  417. touchCount:(NSInteger)touchCount
  418. showImageView:(UIImageView *)showImageView
  419. isLan:(BOOL)isLan
  420. {
  421. int touchid = 0;
  422. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  423. {
  424. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  425. }
  426. else/*地址转int*/
  427. {
  428. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  429. ip = [ip substringFromIndex:2];
  430. NSScanner* scanner = [NSScanner scannerWithString:ip];
  431. [scanner scanInteger:&touchid];
  432. }
  433. CGFloat ratex = 0.0;
  434. CGFloat ratey = 0.0;
  435. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  436. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  437. NSLog(@"kk is 3");
  438. CGPoint lastPoint = [touch locationInView:showImageView];
  439. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  440. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  441. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":1,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  442. return dataStr;
  443. }
  444. + (NSString *)tapMoveCommandTouches:(UITouch *)touch
  445. touchCount:(NSInteger)touchCount
  446. showImageView:(UIImageView *)showImageView
  447. isLan:(BOOL)isLan
  448. {
  449. int touchid = 0;
  450. if ([touch respondsToSelector:NSSelectorFromString(@"_touchIdentifier")])
  451. {
  452. touchid = [[touch valueForKey:@"touchIdentifier"] intValue];
  453. }
  454. else/*地址转int*/
  455. {
  456. NSString *ip = [NSString stringWithFormat:@"%p",touch];
  457. ip = [ip substringFromIndex:2];
  458. NSScanner* scanner = [NSScanner scannerWithString:ip];
  459. [scanner scanInteger:&touchid];
  460. }
  461. CGFloat ratex = 0.0;
  462. CGFloat ratey = 0.0;
  463. ratex = ksharedAppDelegate.couldPhone_W_PHONE/showImageView.frame.size.width;
  464. ratey = ksharedAppDelegate.couldPhone_H_PHONE/showImageView.frame.size.height;
  465. NSLog(@"kk is 2");
  466. CGPoint lastPoint = [touch locationInView:showImageView];
  467. CGFloat x = isLan?(lastPoint.y*ratey):(lastPoint.x*ratex);
  468. CGFloat y = isLan?((showImageView.frame.size.width - lastPoint.x)*ratex):lastPoint.y*ratey;
  469. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"action\":2,\"count\":%ld,\"pointerId\":%d,\"x\":\"%.2f\",\"y\":\"%.2f\"},\"type\":\"event\"}",(long)touchCount,touchid,x,y];
  470. return dataStr;
  471. }
  472. + (NSString *)toStopControllerDevice500
  473. {
  474. NSString *stopContrStr = [NSString stringWithFormat:@"{\"data\":{\"x\":\"%d\",\"y\":\"%d\"},\"type\":\"closeServer\"}",0,0];
  475. if (USENEWCONTROLLCOMMONDNO500)
  476. {
  477. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  478. }
  479. else
  480. {
  481. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  482. }
  483. return stopContrStr;
  484. }
  485. /**
  486. * @brief 摇一摇
  487. *
  488. */
  489. + (NSString *)commandShake{
  490. NSString *stopContrStr = @"{\"data\":{},\"type\":\"shakeit\"}";
  491. if (USENEWCONTROLLCOMMONDNO500)
  492. {
  493. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  494. }
  495. else
  496. {
  497. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  498. }
  499. return stopContrStr;
  500. }
  501. /**
  502. * @brief 开启本地键盘透传
  503. *
  504. */
  505. + (NSString *)commandOpenLoaclKeyboad{
  506. NSString *stopContrStr = @"{\"data\":{\"type\":1},\"type\":\"InputMethod\"}";
  507. if (USENEWCONTROLLCOMMONDNO500)
  508. {
  509. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  510. }
  511. else
  512. {
  513. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  514. }
  515. return stopContrStr;
  516. }
  517. /**
  518. * @brief 关闭本地键盘透传
  519. *
  520. */
  521. + (NSString *)commandCloseLoaclKeyboad{
  522. NSString *stopContrStr = @"{\"data\":{\"type\":2},\"type\":\"InputMethod\"}";
  523. if (USENEWCONTROLLCOMMONDNO500)
  524. {
  525. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  526. }
  527. else
  528. {
  529. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  530. }
  531. return stopContrStr;
  532. }
  533. /**
  534. * @brief 关闭云手机键盘透传
  535. *
  536. */
  537. + (NSString *)commandClosePhoneKeyboad{
  538. NSString *stopContrStr = @"{\"data\":{\"keyCode\":66},\"type\":\"keyCode\"}";
  539. if (USENEWCONTROLLCOMMONDNO500)
  540. {
  541. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  542. }
  543. else
  544. {
  545. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  546. }
  547. return stopContrStr;
  548. }
  549. /**
  550. * @brief 发送透传文字给云手机/输入或者删除
  551. *
  552. * @param str 输入的内容 为nil时为删除
  553. *
  554. */
  555. + (NSString *)commandKeyboadInputStr:( NSString* _Nullable )str{
  556. NSString *stopContrStr = [NSString stringWithFormat:@"{\"data\":{\"KeyBoardData\":\"%@\",\"position\":1},\"type\":\"KeyoardInfo\"}",str];
  557. if (str == nil){
  558. stopContrStr = @"{\"data\":{\"KeyBoardData\":\"\",\"position\":-1},\"type\":\"KeyoardInfo\"}";
  559. }else{
  560. }
  561. if (USENEWCONTROLLCOMMONDNO500)
  562. {
  563. // stopContrStr = [self commondAppendingHeadAndEndStrWithSourStr:stopContrStr];
  564. }
  565. else
  566. {
  567. stopContrStr = [self commandAppending00StringWithSourStr:stopContrStr];
  568. }
  569. return stopContrStr;
  570. }
  571. /**
  572. * @brief 获取发给安卓手机的指令字符串
  573. *
  574. * @param code 指令类型 3:home 4:back 25:声音-键 24:声音+键 187:后台切换
  575. *
  576. */
  577. + (NSString *)commandBackOrHomeVolum500WithKeyCode:(int)code
  578. {
  579. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"keyCode\":\"%d\"},\"type\":\"keyCode\"}",code];
  580. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  581. if (USENEWCONTROLLCOMMONDNO500)
  582. {
  583. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  584. }
  585. else
  586. {
  587. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  588. }
  589. return dataStr;
  590. }
  591. /**
  592. * @brief 获取发给安卓手机设置分辨率的指令字符串
  593. *
  594. * @param type 200:极速 400:高速 600:标清 800:自动 1000:高清
  595. *
  596. */
  597. + (NSString *)commandResolution500WithType:(NSUInteger)type
  598. {
  599. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"definition\":%ld,\"clientType\":\"ios\",\"sceneType\":\"cloudPhone\"},\"type\":2}",type];
  600. if (USENEWCONTROLLCOMMONDNO500)
  601. {
  602. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  603. }
  604. else
  605. {
  606. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  607. }
  608. return dataStr;
  609. }
  610. + (NSString *)commandResolutionFactorWithHeight:(CGFloat)height
  611. {
  612. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"resolution_factor\":%ld,},\"type\":5}",(NSInteger)height];
  613. if (USENEWCONTROLLCOMMONDNO500)
  614. {
  615. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  616. }
  617. else
  618. {
  619. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  620. }
  621. return dataStr;
  622. }
  623. + (NSString *)commandSetFps{
  624. NSString *dataStr = @"{\"data\":{\"frame_rate\":25,\"clientType\":\"ios\"},\"type\":5}";
  625. if (USENEWCONTROLLCOMMONDNO500)
  626. {
  627. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  628. }
  629. else
  630. {
  631. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  632. }
  633. return dataStr;
  634. }
  635. /**
  636. * @brief 云手机预览图指令
  637. */
  638. + (NSString *)commandGetScreenPicWithTaskUid:(NSString *)taskUid intervalTime:(int)intervalTime
  639. {
  640. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"getScreenPic\",\"data\":{\"taskUid\":\"%@\",\"intervalTime\":\"%d\"}}",taskUid,intervalTime];
  641. if (USENEWCONTROLLCOMMONDNO500)
  642. {
  643. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  644. }
  645. else
  646. {
  647. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  648. }
  649. return dataStr;
  650. }
  651. /**
  652. * @brief 云手机截图指令
  653. */
  654. + (NSString *)commandCloudPhoneScreenshotWithTaskUid:(NSString *)taskUid
  655. {
  656. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"shortCat\",\"data\":{\"taskUid\":\"%@\"}}",taskUid];
  657. if (USENEWCONTROLLCOMMONDNO500)
  658. {
  659. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  660. }
  661. else
  662. {
  663. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  664. }
  665. return dataStr;
  666. }
  667. /**
  668. * @brief 云手机下载透传指令(云游戏下载透传到云手机)
  669. */
  670. + (NSString *)commandCloudPhoneDownloadWithTaskUid:(NSString *)taskUid apkUrl:(NSString *)apkUrl {
  671. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"downAndInstallApk\",\"data\":{\"taskUid\":\"%@\",\"apkUrl\":\"%@\"}}",taskUid,apkUrl];
  672. if (USENEWCONTROLLCOMMONDNO500)
  673. {
  674. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  675. }
  676. else
  677. {
  678. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  679. }
  680. return dataStr;
  681. }
  682. /**
  683. * @brief 云游戏支付透传指令 (云游戏在本地支付完成透传到云手机)payResult 0:失败 1:成功
  684. */
  685. + (NSString *)commandCloudPhonePayWithTaskUid:(NSString *)taskUid payResult:(int)payResult {
  686. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"payResult\",\"data\":{\"result\":\"%d\"}}",payResult];
  687. if (USENEWCONTROLLCOMMONDNO500)
  688. {
  689. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  690. }
  691. else
  692. {
  693. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  694. }
  695. return dataStr;
  696. }
  697. /**
  698. * @brief 剪切板接口
  699. *
  700. * @param str 要剪切的文本
  701. *
  702. */
  703. + (NSString *)commandCuttingWithContent:(NSString *)str
  704. {
  705. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"str\":\"%@\"},\"type\":\"cutting\"}",str];
  706. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  707. if (USENEWCONTROLLCOMMONDNO500)
  708. {
  709. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  710. }
  711. else
  712. {
  713. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  714. }
  715. return dataStr;
  716. }
  717. /**
  718. * @brief 记录推流开始时间
  719. *
  720. * @param deviceid 云手机id
  721. *
  722. */
  723. + (NSString *)commandConnectedWithDeviceId:(NSString *)deviceid
  724. {
  725. NSString *eventId = @"7";
  726. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"deviceId\":\"%@\"},\"type\":\"%@\"}",deviceid,eventId];
  727. if (USENEWCONTROLLCOMMONDNO500)
  728. {
  729. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  730. }
  731. else
  732. {
  733. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  734. }
  735. return dataStr;
  736. }
  737. + (NSArray *)getAllIvar:(id)object
  738. {
  739. NSMutableArray *array = [NSMutableArray array];
  740. unsigned int count;
  741. Ivar *ivars = class_copyIvarList([object class], &count);
  742. for (int i = 0; i < count; i++) {
  743. Ivar ivar = ivars[i];
  744. const char *keyChar = ivar_getName(ivar);
  745. NSString *keyStr = [NSString stringWithCString:keyChar encoding:NSUTF8StringEncoding];
  746. @try {
  747. id valueStr = [object valueForKey:keyStr];
  748. NSDictionary *dic = nil;
  749. if (valueStr) {
  750. dic = @{keyStr : valueStr};
  751. } else {
  752. dic = @{keyStr : @"值为nil"};
  753. }
  754. [array addObject:dic];
  755. }
  756. @catch (NSException *exception) {}
  757. }
  758. return [array copy];
  759. }
  760. + (NSString *)askControllcommandWithUseName:(NSString*)useName{
  761. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"3000\",\"userName\":\"%@\",\"desc\":\"询问是否有在控制\"},\"type\":\"forwardMsg\"}",useName];
  762. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  763. if (USENEWCONTROLLCOMMONDNO500)
  764. {
  765. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  766. }
  767. else
  768. {
  769. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  770. }
  771. return dataStr;
  772. }
  773. + (NSString *)faceBackControllcommandWithUseName:(NSString*)useName haveControl:(BOOL)haveControl{
  774. NSString *code = @"4000";
  775. NSString *desc = @"有在控制";
  776. if (haveControl == NO) {
  777. code = @"4100";
  778. desc = @"未控制";
  779. }
  780. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"%@\",\"userName\":\"%@\",\"desc\":\"%@\"},\"type\":\"forwardMsg\"}",code,useName,desc];
  781. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  782. if (USENEWCONTROLLCOMMONDNO500)
  783. {
  784. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  785. }
  786. else
  787. {
  788. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  789. }
  790. return dataStr;
  791. }
  792. + (NSString *)getBackControllcommandWithUseName:(NSString*)useName{
  793. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"code\":\"5000\",\"userName\":\"%@\",\"desc\":\"控制权限收回\"},\"type\":\"forwardMsg\"}",useName];
  794. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  795. if (USENEWCONTROLLCOMMONDNO500)
  796. {
  797. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  798. }
  799. else
  800. {
  801. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  802. }
  803. return dataStr;
  804. }
  805. + (NSString *)getPhoneSizecommand{
  806. NSString *dataStr = [NSString stringWithFormat:@"{\"type\":\"getPhoneSize\"}"];
  807. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  808. if (USENEWCONTROLLCOMMONDNO500)
  809. {
  810. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  811. }
  812. else
  813. {
  814. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  815. }
  816. return dataStr;
  817. }
  818. + (NSString *)setPhoneSizecommandWithWidth:(NSInteger)width high:(NSInteger)high dpi:(NSInteger)dpi{
  819. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"width\":\"%ld\",\"height\":\"%ld\",\"dpi\":\"%ld\"},\"type\":\"setPhoneSize\"}",width,high,dpi];
  820. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  821. if (USENEWCONTROLLCOMMONDNO500)
  822. {
  823. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  824. }
  825. else
  826. {
  827. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  828. }
  829. return dataStr;
  830. }
  831. + (NSString *)noSyncWifiBack{
  832. NSString *dataStr = @"{\"data\":\"2\",\"type\":\"sync_wifi_back\"}";
  833. // dataStr = [NSString stringWithFormat:@"%ld%@",dataStr.length,dataStr];
  834. if (USENEWCONTROLLCOMMONDNO500)
  835. {
  836. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  837. }
  838. else
  839. {
  840. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  841. }
  842. return dataStr;
  843. }
  844. + (NSString *)downLoadAppWithAppUrl:(NSString*)appurl appId:(NSString *)appid{
  845. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"apkUrl\":\"%@\",\"taskUid\":\"%@\"},\"type\":\"downAndInstallApk\"}",appurl,appid];
  846. if (USENEWCONTROLLCOMMONDNO500)
  847. {
  848. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  849. }
  850. else
  851. {
  852. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  853. }
  854. return dataStr;
  855. }
  856. + (NSString *)applyForUploadFileBy:(NSString*)taskUid filePath:(NSString *)filePath
  857. {
  858. NSString * uploadDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_photo_upload_default_path)];
  859. if(!uploadDefaultPath || uploadDefaultPath.length == 0){
  860. [HWDataManager setStringWithKey:stringKeyAddSn(Const_photo_upload_default_path) value:Const_default_upload_path];
  861. uploadDefaultPath = Const_default_upload_path;
  862. }
  863. //判断最后一个是否是/
  864. NSString *lastStr= [uploadDefaultPath substringFromIndex:uploadDefaultPath.length-1];
  865. if(![lastStr isEqualToString:@"/"]){
  866. uploadDefaultPath = [[NSString alloc] initWithFormat:@"%@/",uploadDefaultPath];
  867. }
  868. NSString*savePath = [[NSString alloc] initWithFormat:@"%@%@",uploadDefaultPath,filePath];
  869. //NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"filePath\":\"%@\",\"savePath\":\"%@\"},\"type\":\"uploadFileRandom\"}",taskUid,filePath,savePath];
  870. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"filePath\":\"%@\",\"savePath\":\"%@\"},\"type\":\"uploadFilePart\"}",taskUid,filePath,savePath];
  871. if (USENEWCONTROLLCOMMONDNO500)
  872. {
  873. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  874. }
  875. else
  876. {
  877. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  878. }
  879. return dataStr;
  880. }
  881. + (NSString *)applyForBackupsFileBy:(NSString*)taskUid withFileName:(NSString *)fileName withSavePath:(NSString *)savePath
  882. {
  883. NSString *curPath = [[NSString alloc] initWithFormat:@"%@%@",savePath,fileName];
  884. //NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"fileName\":\"%@\",\"savePath\":\"%@\"},\"type\":\"backUpFileRandom\"}",taskUid,fileName,curPath];
  885. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"fileName\":\"%@\",\"savePath\":\"%@\"},\"type\":\"backUpFilePart\"}",taskUid,fileName,curPath];
  886. if (USENEWCONTROLLCOMMONDNO500)
  887. {
  888. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  889. }
  890. else
  891. {
  892. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  893. }
  894. return dataStr;
  895. }
  896. + (NSString *)applyForCreateFolderwithFolderName:(NSString *)pathAndfolderName
  897. {
  898. //NSString * name = [[NSString alloc] initWithFormat:@"sdcard/%@",folderName];
  899. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"path\":\"%@\"},\"type\":\"mkdir\"}",pathAndfolderName];
  900. if (USENEWCONTROLLCOMMONDNO500)
  901. {
  902. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  903. }
  904. else
  905. {
  906. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  907. }
  908. return dataStr;
  909. }
  910. + (NSString *)getCreateFolderList
  911. {
  912. NSString *dataStr = @"{\"data\":{},\"type\":\"getBackupPath\"}";
  913. if (USENEWCONTROLLCOMMONDNO500)
  914. {
  915. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  916. }
  917. else
  918. {
  919. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  920. }
  921. return dataStr;
  922. }
  923. + (NSString *)searchCouldPhoneFilewithType:(NSString *)fileType withPath:(NSString*)pathStr
  924. {
  925. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"fileType\":\"%@\",\"folder\":\"%@\",},\"type\":\"search\"}",fileType,pathStr];
  926. if (USENEWCONTROLLCOMMONDNO500)
  927. {
  928. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  929. }
  930. else
  931. {
  932. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  933. }
  934. return dataStr;
  935. }
  936. + (NSString *)applyForDownloadFileBy:(NSString *)taskUid withFilePath:(NSString *)filePath withPosition:(long)position
  937. {
  938. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"filePath\":\"%@\",\"position\":\"%ld\"},\"type\":\"fileCommand\"}",taskUid,filePath,position];
  939. if (USENEWCONTROLLCOMMONDNO500)
  940. {
  941. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  942. }
  943. else
  944. {
  945. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  946. }
  947. return dataStr;
  948. }
  949. + (NSString *)getExtraFilesList
  950. {
  951. NSString *dataStr = @"{\"data\":{},\"type\":\"getExtraFiles\"}";
  952. if (USENEWCONTROLLCOMMONDNO500)
  953. {
  954. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  955. }
  956. else
  957. {
  958. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  959. }
  960. return dataStr;
  961. }
  962. + (NSString *)uploadOrBackupsDoneBy:(NSString *)taskUid withFileName:(NSString *)fileName
  963. withType:(BOOL)isUploadType
  964. {
  965. NSString *savePath = nil;
  966. if(isUploadType){
  967. NSString * uploadDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_photo_upload_default_path)];
  968. if(!uploadDefaultPath || uploadDefaultPath.length == 0){
  969. [HWDataManager setStringWithKey:stringKeyAddSn(Const_photo_upload_default_path) value:Const_default_upload_path];
  970. uploadDefaultPath = Const_default_upload_path;
  971. }
  972. //判断最后一个是否是/
  973. NSString *lastStr= [uploadDefaultPath substringFromIndex:uploadDefaultPath.length-1];
  974. if(![lastStr isEqualToString:@"/"]){
  975. uploadDefaultPath = [[NSString alloc] initWithFormat:@"%@/",uploadDefaultPath];
  976. }
  977. savePath = [[NSString alloc] initWithFormat:@"%@%@",uploadDefaultPath,fileName];
  978. }
  979. else{
  980. NSString * backupsDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_photo_backups_default_path)];
  981. if(!backupsDefaultPath || backupsDefaultPath.length == 0){
  982. backupsDefaultPath = Const_default_backups_path;
  983. [HWDataManager setStringWithKey:stringKeyAddSn(Const_photo_backups_default_path) value:backupsDefaultPath];
  984. }
  985. NSString *lastStr= [backupsDefaultPath substringFromIndex:backupsDefaultPath.length-1];
  986. if(![lastStr isEqualToString:@"/"]){
  987. backupsDefaultPath = [[NSString alloc] initWithFormat:@"%@/",backupsDefaultPath];
  988. }
  989. savePath = [[NSString alloc] initWithFormat:@"%@%@",backupsDefaultPath,fileName];
  990. }
  991. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"filePath\":\"%@\"},\"type\":\"fileFinish\"}",taskUid,savePath];
  992. if (USENEWCONTROLLCOMMONDNO500)
  993. {
  994. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  995. }
  996. else
  997. {
  998. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  999. }
  1000. return dataStr;
  1001. }
  1002. + (NSString *)applyForDownloadThumbnailFileBy:(NSString *)taskUid withFilePath:(NSString *)filePath withPosition:(long)position
  1003. {
  1004. NSString *dataStr =[NSString stringWithFormat:@"{\"data\":{\"taskUid\":\"%@\",\"filePath\":\"%@\",\"width\":\"500\",\"height\":\"500\",\"position\":\"%ld\"},\"type\":\"getShotCat\"}",taskUid,filePath,position];
  1005. if (USENEWCONTROLLCOMMONDNO500)
  1006. {
  1007. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  1008. }
  1009. else
  1010. {
  1011. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  1012. }
  1013. return dataStr;
  1014. }
  1015. /**
  1016. * @brief 1.4.1 设置全屏推流
  1017. *
  1018. */
  1019. + (NSString *)commondToSetFullScreenPhoneSize
  1020. {
  1021. UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject];
  1022. CGFloat phoneW = window.frame.size.width * 3;
  1023. CGFloat phoneH = window.frame.size.height * 3;
  1024. CGFloat W_PHONE = phoneW;
  1025. CGFloat H_PHONE = phoneH;
  1026. //朱珠令验证 设置分辨率的宽高要求余8为零才能解码成功 20220221
  1027. W_PHONE = ((int)(W_PHONE/8)) *8;
  1028. H_PHONE = ((int)(H_PHONE/8)) *8;
  1029. //
  1030. // //从iPhone 6开始适配
  1031. // NSString *phoneModel = [iTools getCurrentDeviceModel];
  1032. // if([phoneModel isEqualToString:@"iPhone 6"]
  1033. // ||[phoneModel isEqualToString:@"iPhone 6s"]
  1034. // ||[phoneModel isEqualToString:@"iPhone 7"]
  1035. // ||[phoneModel isEqualToString:@"iPhone 7s"]
  1036. // ||[phoneModel isEqualToString:@"iPhone 8"]
  1037. // ||[phoneModel isEqualToString:@"iPhone 8s"]
  1038. // ||[phoneModel isEqualToString:@"iPhone SE"])
  1039. // {//不行 可以用 1920 *1080 没有真机验证
  1040. //// W_PHONE = 1334;
  1041. //// H_PHONE = 750;
  1042. // H_PHONE = 1920;
  1043. // W_PHONE = 1080;
  1044. //
  1045. // }
  1046. // else if ([phoneModel isEqualToString:@"iPhone 6 Plus"]
  1047. // ||[phoneModel isEqualToString:@"iPhone 7 Plus"]
  1048. // ||[phoneModel isEqualToString:@"iPhone 8 Plus"]
  1049. // ||[phoneModel isEqualToString:@"iPhone 6s Plus"]
  1050. // ||[phoneModel isEqualToString:@"iPhone 7s Plus"]
  1051. // ||[phoneModel isEqualToString:@"iPhone 8s Plus"])
  1052. // {
  1053. // H_PHONE = 1920;
  1054. // W_PHONE = 1080;
  1055. // }
  1056. // else if ([phoneModel isEqualToString:@"iPhone X"]
  1057. // ||[phoneModel isEqualToString:@"iPhone XS"])
  1058. // {
  1059. //// W_PHONE = 2436;
  1060. //// H_PHONE = 1125;
  1061. // }
  1062. // else if ([phoneModel isEqualToString:@"iPhone XR"]
  1063. // ||[phoneModel isEqualToString:@"iPhone XS Max"])
  1064. // {//不用改
  1065. // }
  1066. //
  1067. CGFloat scale = 1080.0/W_PHONE;
  1068. W_PHONE = 1080;//W_PHONE*scale;
  1069. H_PHONE = H_PHONE * scale;
  1070. H_PHONE = ((int)(H_PHONE/8)) *8;
  1071. //[RCGameCommondToStr setCurrentCouldPhone_W_PHONE:W_PHONE];
  1072. //[RCGameCommondToStr setCurrentCouldPhone_H_PHONE:H_PHONE];
  1073. //不行
  1074. // CGFloat W_PHONE = 812;
  1075. // CGFloat H_PHONE = 375;
  1076. //ok
  1077. // CGFloat W_PHONE = 1136;
  1078. // CGFloat H_PHONE = 640;
  1079. NSString *dataStr = [NSString stringWithFormat:@"{\"data\":{\"width\":\"%d\",\"height\":\"%d\",\"dpi\":380},\"type\":\"setPhoneSize\"}",(int)W_PHONE,(int)H_PHONE];
  1080. if (USENEWCONTROLLCOMMONDNO500)
  1081. {
  1082. // dataStr = [self commondAppendingHeadAndEndStrWithSourStr:dataStr];
  1083. }
  1084. else
  1085. {
  1086. dataStr = [self commandAppending00StringWithSourStr:dataStr];
  1087. }
  1088. return dataStr;
  1089. }
  1090. /**
  1091. * @brief 1.4.2 设置全屏推流
  1092. *
  1093. */
  1094. + (CGSize)commondToSetFullScreenPhoneSizeBySize
  1095. {
  1096. UIWindow *window = [[[UIApplication sharedApplication] windows] lastObject];
  1097. CGFloat phoneW = window.frame.size.width * 3;
  1098. CGFloat phoneH = window.frame.size.height * 3;
  1099. CGFloat W_PHONE = phoneW;
  1100. CGFloat H_PHONE = phoneH;
  1101. //朱珠令验证 设置分辨率的宽高要求余8为零才能解码成功 20220221
  1102. W_PHONE = ((int)(W_PHONE/8)) *8;
  1103. H_PHONE = ((int)(H_PHONE/8)) *8;
  1104. //
  1105. CGFloat scaleWH = (W_PHONE*1.0)/(H_PHONE*1.0);
  1106. if (scaleWH >1.0) {//横屏
  1107. CGFloat scale = 720.0/H_PHONE;//1080.0/H_PHONE;
  1108. H_PHONE = 720.0;//1080;
  1109. W_PHONE = W_PHONE * scale;
  1110. W_PHONE = ((int)(W_PHONE/8)) *8;
  1111. //1.4.3全屏需求变更
  1112. W_PHONE -= 60;
  1113. //音视频说方案webrtc 最大解码分辨率 宽1080 高 1920
  1114. if(W_PHONE > 1280){//超宽了
  1115. CGFloat scale = (1280.0 + 60)/(W_PHONE-60);
  1116. W_PHONE = 1280.0;
  1117. H_PHONE = H_PHONE * scale;
  1118. H_PHONE = ((int)(H_PHONE/8)) *8;
  1119. }
  1120. //test code
  1121. // H_PHONE = 1080;
  1122. // W_PHONE = 1920.0;
  1123. }
  1124. else{//竖屏
  1125. CGFloat scale = 720.0/W_PHONE;//1080.0/W_PHONE;
  1126. W_PHONE = 720.0;//1080;//W_PHONE*scale;
  1127. H_PHONE = H_PHONE * scale;
  1128. H_PHONE = ((int)(H_PHONE/8)) *8;
  1129. //1.4.3全屏需求变更
  1130. H_PHONE -= 60;
  1131. //音视频说方案webrtc 最大解码分辨率 宽1080 高 1920
  1132. if(H_PHONE > 1280){//超宽了
  1133. CGFloat scale = (1280.0+60)/(H_PHONE-60);
  1134. H_PHONE = 1280.0;
  1135. W_PHONE = W_PHONE * scale;
  1136. W_PHONE = ((int)(W_PHONE/8)) *8;
  1137. }
  1138. //test code
  1139. // H_PHONE = 1920;
  1140. // W_PHONE = 1080.0;
  1141. }
  1142. return CGSizeMake(W_PHONE, H_PHONE);
  1143. }
  1144. @end