Commit a3eb444c a3eb444c40184fb4f8c6ca2f0b855d2f734b211a by 胡波

新增aidl服务模拟

1 parent a9850a1a
...@@ -4,10 +4,10 @@ ...@@ -4,10 +4,10 @@
4 <selectionStates> 4 <selectionStates>
5 <SelectionState runConfigName="app"> 5 <SelectionState runConfigName="app">
6 <option name="selectionMode" value="DROPDOWN" /> 6 <option name="selectionMode" value="DROPDOWN" />
7 <DropdownSelection timestamp="2024-10-12T05:40:06.328823Z"> 7 <DropdownSelection timestamp="2024-10-14T01:44:33.742803Z">
8 <Target type="DEFAULT_BOOT"> 8 <Target type="DEFAULT_BOOT">
9 <handle> 9 <handle>
10 <DeviceId pluginId="Default" identifier="serial=0123456789;connection=725ee2fc" /> 10 <DeviceId pluginId="LocalEmulator" identifier="path=/Users/bohu/.android/avd/Pixel_Tablet_API_31.avd" />
11 </handle> 11 </handle>
12 </Target> 12 </Target>
13 </DropdownSelection> 13 </DropdownSelection>
......
...@@ -29,6 +29,7 @@ android { ...@@ -29,6 +29,7 @@ android {
29 29
30 buildFeatures{ 30 buildFeatures{
31 buildConfig true 31 buildConfig true
32 aidl true
32 } 33 }
33 34
34 flavorDimensions 'APP' 35 flavorDimensions 'APP'
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
9 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" /> 9 <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
10 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 10 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
11 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 11 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
12 <permission android:name="com.android.smart.terminal.iptv.aidl.SERVICES" android:protectionLevel="normal"/>
12 13
13 <application 14 <application
14 android:allowBackup="true" 15 android:allowBackup="true"
...@@ -30,6 +31,11 @@ ...@@ -30,6 +31,11 @@
30 <category android:name="android.intent.category.LAUNCHER" /> 31 <category android:name="android.intent.category.LAUNCHER" />
31 </intent-filter> 32 </intent-filter>
32 </activity> 33 </activity>
34 <service android:exported="true" android:name="com.android.smart.terminal.iptv.aidl.ServiceCfg">
35 <intent-filter>
36 <action android:name="com.android.smart.terminal.iptv.aidl.ServiceCfg"/>
37 </intent-filter>
38 </service>
33 </application> 39 </application>
34 40
35 </manifest> 41 </manifest>
...\ No newline at end of file ...\ No newline at end of file
......
1 {
2 "iptvauthurl": "1http://epg.itv.cq.cn:8080/iptvepg/platform/index.jsp",
3 "iptvaccount": "kdspb2",
4 "userid": "kdspb2",
5 "iptvpassword": "159357",
6 "stbid": "0010059900E06810042094D505F12A7E",
7 "usertoken": "IlrUGIlrUG17tYxUgfawMrNRAmf8XV7S",
8 "epgdomain": "http://172.23.88.137:33200/EPG/jsp/xinaishangbanmuban/en/Category.jsp",
9 "epginfo": "",
10 "epggroupnmb": "xinaishangbanmuban",
11 "usergroupnmb": "717",
12 "productmodel": "",
13 "terminaltype": "",
14 "areaid": "",
15 "countyid": "",
16 "romversion": "",
17 "terminalversion": "",
18 "mac": "",
19 "iptvstate": "",
20 "ottcp": "",
21 "sessionid": "DF10A297F8449B9526B58811497FC4B4"
22 }
...\ No newline at end of file ...\ No newline at end of file
1 [{
2 "UserChannelID": "35",
3 "ChannelNo": "763",
4 "ChannelName": "时尚购物",
5 "ext": ""
6 }, {
7 "UserChannelID": "36",
8 "ChannelNo": "1486",
9 "ChannelName": "江苏卫视(超高清)",
10 "ext": ""
11 }, {
12 "UserChannelID": "33",
13 "ChannelNo": "561019957",
14 "ChannelName": "环球购物",
15 "ext": ""
16 }, {
17 "UserChannelID": "34",
18 "ChannelNo": "3072",
19 "ChannelName": "家有购物(测试)",
20 "ext": ""
21 }, {
22 "UserChannelID": "39",
23 "ChannelNo": "1487",
24 "ChannelName": "深圳卫视(高清)",
25 "ext": ""
26 }, {
27 "UserChannelID": "37",
28 "ChannelNo": "1485",
29 "ChannelName": "浙江卫视(超高清)",
30 "ext": ""
31 }, {
32 "UserChannelID": "38",
33 "ChannelNo": "1501",
34 "ChannelName": "东方卫视(超高清)",
35 "ext": ""
36 }, {
37 "UserChannelID": "43",
38 "ChannelNo": "3332",
39 "ChannelName": "贵州卫视(超高清)",
40 "ext": ""
41 }, {
42 "UserChannelID": "42",
43 "ChannelNo": "1484",
44 "ChannelName": "天津卫视(超高清)",
45 "ext": ""
46 }, {
47 "UserChannelID": "41",
48 "ChannelNo": "1482",
49 "ChannelName": "山东卫视(高清)",
50 "ext": ""
51 }, {
52 "UserChannelID": "40",
53 "ChannelNo": "1490",
54 "ChannelName": "北京卫视(超高清)",
55 "ext": ""
56 }, {
57 "UserChannelID": "202",
58 "ChannelNo": "754",
59 "ChannelName": "CQTV影视",
60 "ext": ""
61 }, {
62 "UserChannelID": "203",
63 "ChannelNo": "756",
64 "ChannelName": "CQTV社会与法",
65 "ext": ""
66 }, {
67 "UserChannelID": "2018",
68 "ChannelNo": "2652",
69 "ChannelName": "江苏晚会4K",
70 "ext": ""
71 }, {
72 "UserChannelID": "204",
73 "ChannelNo": "759",
74 "ChannelName": "CQTV时尚生活",
75 "ext": ""
76 }, {
77 "UserChannelID": "2019",
78 "ChannelNo": "3954",
79 "ChannelName": "聚精彩临时业务流",
80 "ext": ""
81 }, {
82 "UserChannelID": "205",
83 "ChannelNo": "757",
84 "ChannelName": "CQTV娱乐",
85 "ext": ""
86 }, {
87 "UserChannelID": "200",
88 "ChannelNo": "752",
89 "ChannelName": "重庆卫视频道",
90 "ext": ""
91 }, {
92 "UserChannelID": "201",
93 "ChannelNo": "753",
94 "ChannelName": "CQTV新闻",
95 "ext": ""
96 }, {
97 "UserChannelID": "22",
98 "ChannelNo": "3536",
99 "ChannelName": "CQTV社会与法(超高清)",
100 "ext": ""
101 }, {
102 "UserChannelID": "23",
103 "ChannelNo": "3535",
104 "ChannelName": "CQTV时尚生活(超高清)",
105 "ext": ""
106 }, {
107 "UserChannelID": "24",
108 "ChannelNo": "3533",
109 "ChannelName": "CQTV娱乐(超高清)",
110 "ext": ""
111 }, {
112 "UserChannelID": "25",
113 "ChannelNo": "3532",
114 "ChannelName": "CQTV新农村(超高清)",
115 "ext": ""
116 }, {
117 "UserChannelID": "26",
118 "ChannelNo": "4094",
119 "ChannelName": "CQTV少儿(高清)",
120 "ext": ""
121 }, {
122 "UserChannelID": "206",
123 "ChannelNo": "758",
124 "ChannelName": "CQTV新农村",
125 "ext": ""
126 }, {
127 "UserChannelID": "27",
128 "ChannelNo": "3733",
129 "ChannelName": "CQTV科教(超高清)",
130 "ext": ""
131 }, {
132 "UserChannelID": "28",
133 "ChannelNo": "4093",
134 "ChannelName": "CQTV汽摩(高清)",
135 "ext": ""
136 }, {
137 "UserChannelID": "168",
138 "ChannelNo": "3034",
139 "ChannelName": "城市剧场(测试)",
140 "ext": ""
141 }, {
142 "UserChannelID": "208",
143 "ChannelNo": "755",
144 "ChannelName": "CQTV科教",
145 "ext": ""
146 }, {
147 "UserChannelID": "29",
148 "ChannelNo": "4096",
149 "ChannelName": "CQTV移动(高清)",
150 "ext": ""
151 }, {
152 "UserChannelID": "3",
153 "ChannelNo": "2552",
154 "ChannelName": "CCTV-3综艺(高清)",
155 "ext": ""
156 }, {
157 "UserChannelID": "409",
158 "ChannelNo": "1552",
159 "ChannelName": "IPTV相声小品.",
160 "ext": ""
161 }, {
162 "UserChannelID": "2",
163 "ChannelNo": "1479",
164 "ChannelName": "CCTV-2财经(高清)",
165 "ext": ""
166 }, {
167 "UserChannelID": "408",
168 "ChannelNo": "1555",
169 "ChannelName": "IPTV谍战剧场.",
170 "ext": ""
171 }, {
172 "UserChannelID": "1",
173 "ChannelNo": "1491",
174 "ChannelName": "CCTV-1综合(高清)",
175 "ext": ""
176 }, {
177 "UserChannelID": "7",
178 "ChannelNo": "2532",
179 "ChannelName": "CCTV-6电影(高清)",
180 "ext": ""
181 }, {
182 "UserChannelID": "405",
183 "ChannelNo": "1594",
184 "ChannelName": "IPTV6+",
185 "ext": ""
186 }, {
187 "UserChannelID": "6",
188 "ChannelNo": "1596",
189 "ChannelName": "CCTV-5+体育赛事(高清)",
190 "ext": ""
191 }, {
192 "UserChannelID": "404",
193 "ChannelNo": "1593",
194 "ChannelName": "IPTV5+",
195 "ext": ""
196 }, {
197 "UserChannelID": "5",
198 "ChannelNo": "2533",
199 "ChannelName": "CCTV-5体育(高清)",
200 "ext": ""
201 }, {
202 "UserChannelID": "407",
203 "ChannelNo": "1496",
204 "ChannelName": "收视指南.",
205 "ext": ""
206 }, {
207 "UserChannelID": "4",
208 "ChannelNo": "3334",
209 "ChannelName": "CCTV-4中文国际(高清)",
210 "ext": ""
211 }, {
212 "UserChannelID": "406",
213 "ChannelNo": "1595",
214 "ChannelName": "IPTV8+",
215 "ext": ""
216 }, {
217 "UserChannelID": "401",
218 "ChannelNo": "1499",
219 "ChannelName": "少儿动画.",
220 "ext": ""
221 }, {
222 "UserChannelID": "2021",
223 "ChannelNo": "4113",
224 "ChannelName": "自贡灯会慢直播",
225 "ext": ""
226 }, {
227 "UserChannelID": "400",
228 "ChannelNo": "2832",
229 "ChannelName": "重广融媒",
230 "ext": ""
231 }, {
232 "UserChannelID": "2020",
233 "ChannelNo": "4153",
234 "ChannelName": "2020测试",
235 "ext": ""
236 }, {
237 "UserChannelID": "9",
238 "ChannelNo": "2512",
239 "ChannelName": "CCTV-8电视剧(高清)",
240 "ext": ""
241 }, {
242 "UserChannelID": "403",
243 "ChannelNo": "1592",
244 "ChannelName": "IPTV3+",
245 "ext": ""
246 }, {
247 "UserChannelID": "2023",
248 "ChannelNo": "4133",
249 "ChannelName": "2023测试",
250 "ext": ""
251 }, {
252 "UserChannelID": "8",
253 "ChannelNo": "1474",
254 "ChannelName": "CCTV-7国防军事(高清)",
255 "ext": ""
256 }, {
257 "UserChannelID": "402",
258 "ChannelNo": "1495",
259 "ChannelName": "魅力时尚.",
260 "ext": ""
261 }, {
262 "UserChannelID": "2022",
263 "ChannelNo": "4135",
264 "ChannelName": "2022测试",
265 "ext": ""
266 }, {
267 "UserChannelID": "215",
268 "ChannelNo": "1472",
269 "ChannelName": "CCTV-2财经",
270 "ext": ""
271 }, {
272 "UserChannelID": "216",
273 "ChannelNo": "2495",
274 "ChannelName": "CCTV-3综艺",
275 "ext": ""
276 }, {
277 "UserChannelID": "19",
278 "ChannelNo": "1014",
279 "ChannelName": "重庆卫视(超高清)",
280 "ext": ""
281 }, {
282 "UserChannelID": "214",
283 "ChannelNo": "1435",
284 "ChannelName": "CCTV-1综合",
285 "ext": ""
286 }, {
287 "UserChannelID": "219",
288 "ChannelNo": "2498",
289 "ChannelName": "CCTV-6电影",
290 "ext": ""
291 }, {
292 "UserChannelID": "18",
293 "ChannelNo": "3754",
294 "ChannelName": "CCTV-17农业农村(高清)",
295 "ext": ""
296 }, {
297 "UserChannelID": "15",
298 "ChannelNo": "1475",
299 "ChannelName": "CCTV-少儿(高清)",
300 "ext": ""
301 }, {
302 "UserChannelID": "217",
303 "ChannelNo": "1734",
304 "ChannelName": "CCTV-4中文国际",
305 "ext": ""
306 }, {
307 "UserChannelID": "16",
308 "ChannelNo": "4294",
309 "ChannelName": "CCTV-15音乐(高清)",
310 "ext": ""
311 }, {
312 "UserChannelID": "218",
313 "ChannelNo": "2501",
314 "ChannelName": "CCTV-5体育",
315 "ext": ""
316 }, {
317 "UserChannelID": "13",
318 "ChannelNo": "1476",
319 "ChannelName": "CCTV-12社会与法(高清)",
320 "ext": ""
321 }, {
322 "UserChannelID": "14",
323 "ChannelNo": "4293",
324 "ChannelName": "CCTV-13新闻(高清)",
325 "ext": ""
326 }, {
327 "UserChannelID": "11",
328 "ChannelNo": "1477",
329 "ChannelName": "CCTV-10科教(高清)",
330 "ext": ""
331 }, {
332 "UserChannelID": "12",
333 "ChannelNo": "4313",
334 "ChannelName": "CCTV-11戏曲(高清)",
335 "ext": ""
336 }, {
337 "UserChannelID": "21",
338 "ChannelNo": "3534",
339 "ChannelName": "CQTV影视(超高清)",
340 "ext": ""
341 }, {
342 "UserChannelID": "418",
343 "ChannelNo": "3032",
344 "ChannelName": "地理(测试)",
345 "ext": ""
346 }, {
347 "UserChannelID": "20",
348 "ChannelNo": "3314",
349 "ChannelName": "CQTV新闻(超高清)",
350 "ext": ""
351 }, {
352 "UserChannelID": "417",
353 "ChannelNo": "3036",
354 "ChannelName": "音乐现场(测试)",
355 "ext": ""
356 }, {
357 "UserChannelID": "416",
358 "ChannelNo": "3038",
359 "ChannelName": "古装剧场(测试)",
360 "ext": ""
361 }, {
362 "UserChannelID": "415",
363 "ChannelNo": "3037",
364 "ChannelName": "军旅剧场(测试)",
365 "ext": ""
366 }, {
367 "UserChannelID": "419",
368 "ChannelNo": "3035",
369 "ChannelName": "美妆(测试)",
370 "ext": ""
371 }, {
372 "UserChannelID": "410",
373 "ChannelNo": "1554",
374 "ChannelName": "IPTV野外.",
375 "ext": ""
376 }, {
377 "UserChannelID": "414",
378 "ChannelNo": "2593",
379 "ChannelName": "开县本地电视1",
380 "ext": ""
381 }, {
382 "UserChannelID": "413",
383 "ChannelNo": "1497",
384 "ChannelName": "经典电影.",
385 "ext": ""
386 }, {
387 "UserChannelID": "412",
388 "ChannelNo": "1498",
389 "ChannelName": "热播剧场.",
390 "ext": ""
391 }, {
392 "UserChannelID": "411",
393 "ChannelNo": "1553",
394 "ChannelName": "IPTV法治.",
395 "ext": ""
396 }, {
397 "UserChannelID": "220",
398 "ChannelNo": "1436",
399 "ChannelName": "CCTV-7国防军事",
400 "ext": ""
401 }, {
402 "UserChannelID": "221",
403 "ChannelNo": "2496",
404 "ChannelName": "CCTV-8电视剧",
405 "ext": ""
406 }, {
407 "UserChannelID": "222",
408 "ChannelNo": "1453",
409 "ChannelName": "CCTV-9纪录",
410 "ext": ""
411 }, {
412 "UserChannelID": "223",
413 "ChannelNo": "1450",
414 "ChannelName": "CCTV-10科教",
415 "ext": ""
416 }, {
417 "UserChannelID": "1308",
418 "ChannelNo": "3253",
419 "ChannelName": "音乐直播(淘景立画)",
420 "ext": ""
421 }, {
422 "UserChannelID": "224",
423 "ChannelNo": "1473",
424 "ChannelName": "CCTV-11戏曲",
425 "ext": ""
426 }, {
427 "UserChannelID": "225",
428 "ChannelNo": "1471",
429 "ChannelName": "CCTV-12社会与法",
430 "ext": ""
431 }, {
432 "UserChannelID": "226",
433 "ChannelNo": "1469",
434 "ChannelName": "CCTV-13新闻",
435 "ext": ""
436 }, {
437 "UserChannelID": "227",
438 "ChannelNo": "1467",
439 "ChannelName": "CCTV-少儿",
440 "ext": ""
441 }, {
442 "UserChannelID": "228",
443 "ChannelNo": "1468",
444 "ChannelName": "CCTV-15音乐",
445 "ext": ""
446 }, {
447 "UserChannelID": "229",
448 "ChannelNo": "3753",
449 "ChannelName": "CCTV-17农业农村",
450 "ext": ""
451 }, {
452 "UserChannelID": "427",
453 "ChannelNo": "3000",
454 "ChannelName": "动画(测试)",
455 "ext": ""
456 }, {
457 "UserChannelID": "426",
458 "ChannelNo": "2999",
459 "ChannelName": "早教(测试)",
460 "ext": ""
461 }, {
462 "UserChannelID": "10",
463 "ChannelNo": "1478",
464 "ChannelName": "CCTV-9纪录(高清)",
465 "ext": ""
466 }, {
467 "UserChannelID": "429",
468 "ChannelNo": "3001",
469 "ChannelName": "鉴赏(测试)",
470 "ext": ""
471 }, {
472 "UserChannelID": "182",
473 "ChannelNo": "1094",
474 "ChannelName": "精彩导视",
475 "ext": ""
476 }, {
477 "UserChannelID": "428",
478 "ChannelNo": "3005",
479 "ChannelName": "好学生(测试)",
480 "ext": ""
481 }, {
482 "UserChannelID": "421",
483 "ChannelNo": "2994",
484 "ChannelName": "精选(测试)",
485 "ext": ""
486 }, {
487 "UserChannelID": "420",
488 "ChannelNo": "2995",
489 "ChannelName": "美人(测试)",
490 "ext": ""
491 }, {
492 "UserChannelID": "423",
493 "ChannelNo": "2996",
494 "ChannelName": "军事(测试)",
495 "ext": ""
496 }, {
497 "UserChannelID": "422",
498 "ChannelNo": "3039",
499 "ChannelName": "解密(测试)",
500 "ext": ""
501 }, {
502 "UserChannelID": "425",
503 "ChannelNo": "2998",
504 "ChannelName": "戏曲(测试)",
505 "ext": ""
506 }, {
507 "UserChannelID": "424",
508 "ChannelNo": "2997",
509 "ChannelName": "国学(测试)",
510 "ext": ""
511 }, {
512 "UserChannelID": "116",
513 "ChannelNo": "572965386",
514 "ChannelName": "世界地理HD",
515 "ext": ""
516 }, {
517 "UserChannelID": "79",
518 "ChannelNo": "1673",
519 "ChannelName": "CGTN中国国际电视台",
520 "ext": ""
521 }, {
522 "UserChannelID": "117",
523 "ChannelNo": "572965326",
524 "ChannelName": "女性时尚HD",
525 "ext": ""
526 }, {
527 "UserChannelID": "114",
528 "ChannelNo": "572965378",
529 "ChannelName": "风云音乐HD",
530 "ext": ""
531 }, {
532 "UserChannelID": "115",
533 "ChannelNo": "572964343",
534 "ChannelName": "第一剧场HD",
535 "ext": ""
536 }, {
537 "UserChannelID": "112",
538 "ChannelNo": "4353",
539 "ChannelName": "魅力足球HD",
540 "ext": ""
541 }, {
542 "UserChannelID": "113",
543 "ChannelNo": "576952605",
544 "ChannelName": "天元围棋HD",
545 "ext": ""
546 }, {
547 "UserChannelID": "110",
548 "ChannelNo": "4289",
549 "ChannelName": "游戏风云HD",
550 "ext": ""
551 }, {
552 "UserChannelID": "111",
553 "ChannelNo": "4290",
554 "ChannelName": "生活时尚HD",
555 "ext": ""
556 }, {
557 "UserChannelID": "118",
558 "ChannelNo": "572964340",
559 "ChannelName": "风云剧场HD",
560 "ext": ""
561 }, {
562 "UserChannelID": "119",
563 "ChannelNo": "572965329",
564 "ChannelName": "风云足球HD",
565 "ext": ""
566 }, {
567 "UserChannelID": "435",
568 "ChannelNo": "3008",
569 "ChannelName": "高网(测试)",
570 "ext": ""
571 }, {
572 "UserChannelID": "436",
573 "ChannelNo": "3009",
574 "ChannelName": "足球(测试)",
575 "ext": ""
576 }, {
577 "UserChannelID": "433",
578 "ChannelNo": "3010",
579 "ChannelName": "爱生活(测试)",
580 "ext": ""
581 }, {
582 "UserChannelID": "434",
583 "ChannelNo": "3007",
584 "ChannelName": "武术(测试)",
585 "ext": ""
586 }, {
587 "UserChannelID": "431",
588 "ChannelNo": "3003",
589 "ChannelName": "光影(测试)",
590 "ext": ""
591 }, {
592 "UserChannelID": "432",
593 "ChannelNo": "3004",
594 "ChannelName": "台球(测试)",
595 "ext": ""
596 }, {
597 "UserChannelID": "430",
598 "ChannelNo": "3002",
599 "ChannelName": "墨宝(测试)",
600 "ext": ""
601 }, {
602 "UserChannelID": "439",
603 "ChannelNo": "3012",
604 "ChannelName": "动作影院(测试)",
605 "ext": ""
606 }, {
607 "UserChannelID": "87",
608 "ChannelNo": "595279997",
609 "ChannelName": "先锋乒羽",
610 "ext": ""
611 }, {
612 "UserChannelID": "84",
613 "ChannelNo": "3793",
614 "ChannelName": "山东教育卫视.",
615 "ext": ""
616 }, {
617 "UserChannelID": "437",
618 "ChannelNo": "3006",
619 "ChannelName": "武侠剧场(测试)",
620 "ext": ""
621 }, {
622 "UserChannelID": "85",
623 "ChannelNo": "3813",
624 "ChannelName": "快乐垂钓(高清)",
625 "ext": ""
626 }, {
627 "UserChannelID": "438",
628 "ChannelNo": "3011",
629 "ChannelName": "喜剧影院(测试)",
630 "ext": ""
631 }, {
632 "UserChannelID": "67",
633 "ChannelNo": "1492",
634 "ChannelName": "嘉佳卡通.",
635 "ext": ""
636 }, {
637 "UserChannelID": "125",
638 "ChannelNo": "572964990",
639 "ChannelName": "央视文化精品HD",
640 "ext": ""
641 }, {
642 "UserChannelID": "66",
643 "ChannelNo": "1413",
644 "ChannelName": "金鹰卡通.",
645 "ext": ""
646 }, {
647 "UserChannelID": "126",
648 "ChannelNo": "572965325",
649 "ChannelName": "早期教育HD",
650 "ext": ""
651 }, {
652 "UserChannelID": "69",
653 "ChannelNo": "1441",
654 "ChannelName": "青海卫视.",
655 "ext": ""
656 }, {
657 "UserChannelID": "68",
658 "ChannelNo": "588989290",
659 "ChannelName": "陶瓷(高清)",
660 "ext": ""
661 }, {
662 "UserChannelID": "121",
663 "ChannelNo": "572965341",
664 "ChannelName": "兵器科技HD",
665 "ext": ""
666 }, {
667 "UserChannelID": "122",
668 "ChannelNo": "572964348",
669 "ChannelName": "央视台球HD",
670 "ext": ""
671 }, {
672 "UserChannelID": "123",
673 "ChannelNo": "572964980",
674 "ChannelName": "电视指南HD",
675 "ext": ""
676 }, {
677 "UserChannelID": "124",
678 "ChannelNo": "572965379",
679 "ChannelName": "高尔夫网球HD",
680 "ext": ""
681 }, {
682 "UserChannelID": "440",
683 "ChannelNo": "2979",
684 "ChannelName": "家庭影院(测试)",
685 "ext": ""
686 }, {
687 "UserChannelID": "441",
688 "ChannelNo": "3013",
689 "ChannelName": "星影(测试)",
690 "ext": ""
691 }, {
692 "UserChannelID": "442",
693 "ChannelNo": "3673",
694 "ChannelName": "爱上4K",
695 "ext": ""
696 }, {
697 "UserChannelID": "70",
698 "ChannelNo": "1440",
699 "ChannelName": "新疆卫视.",
700 "ext": ""
701 }, {
702 "UserChannelID": "71",
703 "ChannelNo": "1437",
704 "ChannelName": "西藏卫视.",
705 "ext": ""
706 }, {
707 "UserChannelID": "120",
708 "ChannelNo": "572965337",
709 "ChannelName": "怀旧剧场HD",
710 "ext": ""
711 }, {
712 "UserChannelID": "72",
713 "ChannelNo": "1597",
714 "ChannelName": "纪实(高清)",
715 "ext": ""
716 }, {
717 "UserChannelID": "59",
718 "ChannelNo": "512",
719 "ChannelName": "广东卫视(高清)",
720 "ext": ""
721 }, {
722 "UserChannelID": "58",
723 "ChannelNo": "1489",
724 "ChannelName": "湖南卫视(超高清)",
725 "ext": ""
726 }, {
727 "UserChannelID": "57",
728 "ChannelNo": "1439",
729 "ChannelName": "内蒙古卫视.",
730 "ext": ""
731 }, {
732 "UserChannelID": "56",
733 "ChannelNo": "1481",
734 "ChannelName": "辽宁卫视(高清)",
735 "ext": ""
736 }, {
737 "UserChannelID": "55",
738 "ChannelNo": "1446",
739 "ChannelName": "吉林卫视.",
740 "ext": ""
741 }, {
742 "UserChannelID": "64",
743 "ChannelNo": "589239514",
744 "ChannelName": "中华美食(高清)",
745 "ext": ""
746 }, {
747 "UserChannelID": "65",
748 "ChannelNo": "1432",
749 "ChannelName": "卡酷动画.",
750 "ext": ""
751 }, {
752 "UserChannelID": "62",
753 "ChannelNo": "1454",
754 "ChannelName": "宁夏卫视.",
755 "ext": ""
756 }, {
757 "UserChannelID": "63",
758 "ChannelNo": "1443",
759 "ChannelName": "甘肃卫视.",
760 "ext": ""
761 }, {
762 "UserChannelID": "60",
763 "ChannelNo": "1452",
764 "ChannelName": "河南卫视.",
765 "ext": ""
766 }, {
767 "UserChannelID": "61",
768 "ChannelNo": "3333",
769 "ChannelName": "河北卫视(高清)",
770 "ext": ""
771 }, {
772 "UserChannelID": "49",
773 "ChannelNo": "1438",
774 "ChannelName": "山西卫视.",
775 "ext": ""
776 }, {
777 "UserChannelID": "48",
778 "ChannelNo": "1480",
779 "ChannelName": "安徽卫视(超高清)",
780 "ext": ""
781 }, {
782 "UserChannelID": "145",
783 "ChannelNo": "1494",
784 "ChannelName": "财富天下.",
785 "ext": ""
786 }, {
787 "UserChannelID": "45",
788 "ChannelNo": "1672",
789 "ChannelName": "云南卫视.",
790 "ext": ""
791 }, {
792 "UserChannelID": "44",
793 "ChannelNo": "3352",
794 "ChannelName": "四川卫视(超高清)",
795 "ext": ""
796 }, {
797 "UserChannelID": "47",
798 "ChannelNo": "1488",
799 "ChannelName": "黑龙江卫视(超高清)",
800 "ext": ""
801 }, {
802 "UserChannelID": "46",
803 "ChannelNo": "1451",
804 "ChannelName": "广西卫视.",
805 "ext": ""
806 }, {
807 "UserChannelID": "51",
808 "ChannelNo": "1483",
809 "ChannelName": "湖北卫视(高清)",
810 "ext": ""
811 }, {
812 "UserChannelID": "52",
813 "ChannelNo": "4095",
814 "ChannelName": "海南卫视HD",
815 "ext": ""
816 }, {
817 "UserChannelID": "53",
818 "ChannelNo": "1448",
819 "ChannelName": "陕西卫视.",
820 "ext": ""
821 }, {
822 "UserChannelID": "54",
823 "ChannelNo": "3393",
824 "ChannelName": "东南卫视(超高清)",
825 "ext": ""
826 }, {
827 "UserChannelID": "50",
828 "ChannelNo": "3734",
829 "ChannelName": "江西卫视(超高清)",
830 "ext": ""
831 }, {
832 "UserChannelID": "1011",
833 "ChannelNo": "971",
834 "ChannelName": "直播室1",
835 "ext": ""
836 }, {
837 "UserChannelID": "109",
838 "ChannelNo": "588988872",
839 "ChannelName": "东方财经HD",
840 "ext": ""
841 }, {
842 "UserChannelID": "108",
843 "ChannelNo": "4288",
844 "ChannelName": "金色频道HD",
845 "ext": ""
846 }, {
847 "UserChannelID": "107",
848 "ChannelNo": "4282",
849 "ChannelName": "法治天地HD",
850 "ext": ""
851 }, {
852 "UserChannelID": "106",
853 "ChannelNo": "4283",
854 "ChannelName": "乐游HD",
855 "ext": ""
856 }, {
857 "UserChannelID": "105",
858 "ChannelNo": "4287",
859 "ChannelName": "动漫秀场HD",
860 "ext": ""
861 }, {
862 "UserChannelID": "104",
863 "ChannelNo": "4284",
864 "ChannelName": "都市剧场HD",
865 "ext": ""
866 }, {
867 "UserChannelID": "103",
868 "ChannelNo": "4286",
869 "ChannelName": "欢笑剧场4K",
870 "ext": ""
871 }, {
872 "UserChannelID": "102",
873 "ChannelNo": "3993",
874 "ChannelName": "中国交通",
875 "ext": ""
876 }, {
877 "UserChannelID": "101",
878 "ChannelNo": "3913",
879 "ChannelName": "CETV1(高清)",
880 "ext": ""
881 }, {
882 "UserChannelID": "100",
883 "ChannelNo": "3855",
884 "ChannelName": "CETV4",
885 "ext": ""
886 }, {
887 "UserChannelID": "97",
888 "ChannelNo": "4196",
889 "ChannelName": "求索纪录(4K)",
890 "ext": ""
891 }, {
892 "UserChannelID": "96",
893 "ChannelNo": "4195",
894 "ChannelName": "精彩影视(高清)",
895 "ext": ""
896 }, {
897 "UserChannelID": "95",
898 "ChannelNo": "4173",
899 "ChannelName": "CHC影迷电影(高清)",
900 "ext": ""
901 }, {
902 "UserChannelID": "94",
903 "ChannelNo": "4175",
904 "ChannelName": "CHC动作电影(高清)",
905 "ext": ""
906 }, {
907 "UserChannelID": "93",
908 "ChannelNo": "4174",
909 "ChannelName": "CHC家庭影院(高清)",
910 "ext": ""
911 }, {
912 "UserChannelID": "92",
913 "ChannelNo": "3933",
914 "ChannelName": "梨园",
915 "ext": ""
916 }, {
917 "UserChannelID": "91",
918 "ChannelNo": "3935",
919 "ChannelName": "书画",
920 "ext": ""
921 }, {
922 "UserChannelID": "90",
923 "ChannelNo": "3936",
924 "ChannelName": "茶频道(高清)",
925 "ext": ""
926 }, {
927 "UserChannelID": "88",
928 "ChannelNo": "595280747",
929 "ChannelName": "武术世界(高清)",
930 "ext": ""
931 }, {
932 "UserChannelID": "89",
933 "ChannelNo": "595278931",
934 "ChannelName": "文物宝库(高清)",
935 "ext": ""
936 }, {
937 "UserChannelID": "240",
938 "ChannelNo": "1463",
939 "ChannelName": "四川卫视.",
940 "ext": ""
941 }, {
942 "UserChannelID": "241",
943 "ChannelNo": "1461",
944 "ChannelName": "辽宁卫视.",
945 "ext": ""
946 }, {
947 "UserChannelID": "245",
948 "ChannelNo": "1457",
949 "ChannelName": "河北卫视.",
950 "ext": ""
951 }, {
952 "UserChannelID": "244",
953 "ChannelNo": "1444",
954 "ChannelName": "湖北卫视.",
955 "ext": ""
956 }, {
957 "UserChannelID": "243",
958 "ChannelNo": "1456",
959 "ChannelName": "贵州卫视.",
960 "ext": ""
961 }, {
962 "UserChannelID": "242",
963 "ChannelNo": "1458",
964 "ChannelName": "黑龙江卫视.",
965 "ext": ""
966 }, {
967 "UserChannelID": "246",
968 "ChannelNo": "1455",
969 "ChannelName": "东南卫视.",
970 "ext": ""
971 }, {
972 "UserChannelID": "230",
973 "ChannelNo": "1465",
974 "ChannelName": "江苏卫视.",
975 "ext": ""
976 }, {
977 "UserChannelID": "1037",
978 "ChannelNo": "595282174",
979 "ChannelName": "游戏竞技频道2",
980 "ext": ""
981 }, {
982 "UserChannelID": "1036",
983 "ChannelNo": "3474",
984 "ChannelName": "直播室221",
985 "ext": ""
986 }, {
987 "UserChannelID": "239",
988 "ChannelNo": "1445",
989 "ChannelName": "天津卫视.",
990 "ext": ""
991 }, {
992 "UserChannelID": "232",
993 "ChannelNo": "1459",
994 "ChannelName": "东方卫视.",
995 "ext": ""
996 }, {
997 "UserChannelID": "231",
998 "ChannelNo": "1466",
999 "ChannelName": "湖南卫视.",
1000 "ext": ""
1001 }, {
1002 "UserChannelID": "234",
1003 "ChannelNo": "1412",
1004 "ChannelName": "浙江卫视.",
1005 "ext": ""
1006 }, {
1007 "UserChannelID": "233",
1008 "ChannelNo": "1464",
1009 "ChannelName": "北京卫视.",
1010 "ext": ""
1011 }, {
1012 "UserChannelID": "236",
1013 "ChannelNo": "1460",
1014 "ChannelName": "安徽卫视.",
1015 "ext": ""
1016 }, {
1017 "UserChannelID": "235",
1018 "ChannelNo": "1433",
1019 "ChannelName": "深圳卫视.",
1020 "ext": ""
1021 }, {
1022 "UserChannelID": "238",
1023 "ChannelNo": "1447",
1024 "ChannelName": "广东卫视.",
1025 "ext": ""
1026 }, {
1027 "UserChannelID": "237",
1028 "ChannelNo": "1442",
1029 "ChannelName": "山东卫视.",
1030 "ext": ""
1031 }, {
1032 "UserChannelID": "2025",
1033 "ChannelNo": "4375",
1034 "ChannelName": "云阳慢直播",
1035 "ext": ""
1036 }, {
1037 "UserChannelID": "2024",
1038 "ChannelNo": "4134",
1039 "ChannelName": "2024测试",
1040 "ext": ""
1041 }, {
1042 "UserChannelID": "1017",
1043 "ChannelNo": "977",
1044 "ChannelName": "直播室7",
1045 "ext": ""
1046 }, {
1047 "UserChannelID": "1016",
1048 "ChannelNo": "976",
1049 "ChannelName": "直播室6",
1050 "ext": ""
1051 }, {
1052 "UserChannelID": "1013",
1053 "ChannelNo": "973",
1054 "ChannelName": "直播室3",
1055 "ext": ""
1056 }, {
1057 "UserChannelID": "1012",
1058 "ChannelNo": "972",
1059 "ChannelName": "直播室2",
1060 "ext": ""
1061 }, {
1062 "UserChannelID": "1015",
1063 "ChannelNo": "975",
1064 "ChannelName": "直播室5",
1065 "ext": ""
1066 }, {
1067 "UserChannelID": "1014",
1068 "ChannelNo": "974",
1069 "ChannelName": "直播室4",
1070 "ext": ""
1071 }]
...\ No newline at end of file ...\ No newline at end of file
1 package com.android.smart.terminal.iptv.aidl;
2
3 import android.os.Binder;
4 import android.os.IBinder;
5 import android.os.IInterface;
6 import android.os.Parcel;
7 import android.os.RemoteException;
8 //aidl接口
9 public interface IServiceCfg extends IInterface {
10
11 boolean getBoolean(String key, boolean defValue) throws RemoteException;
12 int getInt(String key, int defValue) throws RemoteException;
13 String getString(String key, String defValue) throws RemoteException;
14 boolean putBoolean(String key, boolean value) throws RemoteException;
15 boolean putInt(String key, int value) throws RemoteException;
16 boolean putString(String key, String value) throws RemoteException;
17
18 abstract class Stub extends Binder implements IServiceCfg {
19
20 private static final String DESCRIPTOR = "com.android.smart.terminal.iptv.aidl.IServiceCfg";
21 static final int TRANSACTION_getBoolean = 6;
22 static final int TRANSACTION_getInt = 5;
23 static final int TRANSACTION_getString = 4;
24 static final int TRANSACTION_putBoolean = 3;
25 static final int TRANSACTION_putInt = 2;
26 static final int TRANSACTION_putString = 1;
27
28 public Stub() {
29 this.attachInterface(this, DESCRIPTOR);
30 }
31
32 @Override
33 public IBinder asBinder() {
34 return this;
35 }
36
37 public static IServiceCfg asInterface(IBinder obj) {
38 if (obj == null) return null;
39 IInterface iin = obj.queryLocalInterface(DESCRIPTOR);
40 return (iin instanceof IServiceCfg) ? (IServiceCfg) iin : new Proxy(obj);
41 }
42
43 @Override
44 public boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
45 switch (code) {
46 case TRANSACTION_putString:
47 data.enforceInterface(DESCRIPTOR);
48 boolean resultPutString = putString(data.readString(), data.readString());
49 reply.writeNoException();
50 reply.writeInt(resultPutString ? 1 : 0);
51 return true;
52
53 case TRANSACTION_putInt:
54 data.enforceInterface(DESCRIPTOR);
55 boolean resultPutInt = putInt(data.readString(), data.readInt());
56 reply.writeNoException();
57 reply.writeInt(resultPutInt ? 1 : 0);
58 return true;
59
60 case TRANSACTION_putBoolean:
61 data.enforceInterface(DESCRIPTOR);
62 boolean resultPutBoolean = putBoolean(data.readString(), data.readInt() != 0);
63 reply.writeNoException();
64 reply.writeInt(resultPutBoolean ? 1 : 0);
65 return true;
66
67 case TRANSACTION_getString:
68 data.enforceInterface(DESCRIPTOR);
69 String resultGetString = getString(data.readString(), data.readString());
70 reply.writeNoException();
71 reply.writeString(resultGetString);
72 return true;
73
74 case TRANSACTION_getInt:
75 data.enforceInterface(DESCRIPTOR);
76 int resultGetInt = getInt(data.readString(), data.readInt());
77 reply.writeNoException();
78 reply.writeInt(resultGetInt);
79 return true;
80
81 case TRANSACTION_getBoolean:
82 data.enforceInterface(DESCRIPTOR);
83 boolean resultGetBoolean = getBoolean(data.readString(), data.readInt() != 0);
84 reply.writeNoException();
85 reply.writeInt(resultGetBoolean ? 1 : 0);
86 return true;
87
88 case 1598968902: // Interface descriptor
89 reply.writeString(DESCRIPTOR);
90 return true;
91
92 default:
93 return super.onTransact(code, data, reply, flags);
94 }
95 }
96
97 private static class Proxy implements IServiceCfg {
98 private final IBinder mRemote;
99
100 Proxy(IBinder remote) {
101 mRemote = remote;
102 }
103
104 @Override
105 public IBinder asBinder() {
106 return mRemote;
107 }
108
109 @Override
110 public boolean getBoolean(String key, boolean defValue) throws RemoteException {
111 Parcel data = Parcel.obtain();
112 Parcel reply = Parcel.obtain();
113 boolean result;
114 try {
115 data.writeInterfaceToken(DESCRIPTOR);
116 data.writeString(key);
117 data.writeInt(defValue ? 1 : 0);
118 mRemote.transact(TRANSACTION_getBoolean, data, reply, 0);
119 reply.readException();
120 result = reply.readInt() != 0;
121 } finally {
122 reply.recycle();
123 data.recycle();
124 }
125 return result;
126 }
127
128 @Override
129 public int getInt(String key, int defValue) throws RemoteException {
130 Parcel data = Parcel.obtain();
131 Parcel reply = Parcel.obtain();
132 int result;
133 try {
134 data.writeInterfaceToken(DESCRIPTOR);
135 data.writeString(key);
136 data.writeInt(defValue);
137 mRemote.transact(TRANSACTION_getInt, data, reply, 0);
138 reply.readException();
139 result = reply.readInt();
140 } finally {
141 reply.recycle();
142 data.recycle();
143 }
144 return result;
145 }
146
147 @Override
148 public String getString(String key, String defValue) throws RemoteException {
149 Parcel data = Parcel.obtain();
150 Parcel reply = Parcel.obtain();
151 String result;
152 try {
153 data.writeInterfaceToken(DESCRIPTOR);
154 data.writeString(key);
155 data.writeString(defValue);
156 mRemote.transact(TRANSACTION_getString, data, reply, 0);
157 reply.readException();
158 result = reply.readString();
159 } finally {
160 reply.recycle();
161 data.recycle();
162 }
163 return result;
164 }
165
166 @Override
167 public boolean putBoolean(String key, boolean value) throws RemoteException {
168 Parcel data = Parcel.obtain();
169 Parcel reply = Parcel.obtain();
170 boolean result;
171 try {
172 data.writeInterfaceToken(DESCRIPTOR);
173 data.writeString(key);
174 data.writeInt(value ? 1 : 0);
175 mRemote.transact(TRANSACTION_putBoolean, data, reply, 0);
176 reply.readException();
177 result = reply.readInt() != 0;
178 } finally {
179 reply.recycle();
180 data.recycle();
181 }
182 return result;
183 }
184
185 @Override
186 public boolean putInt(String key, int value) throws RemoteException {
187 Parcel data = Parcel.obtain();
188 Parcel reply = Parcel.obtain();
189 boolean result;
190 try {
191 data.writeInterfaceToken(DESCRIPTOR);
192 data.writeString(key);
193 data.writeInt(value);
194 mRemote.transact(TRANSACTION_putInt, data, reply, 0);
195 reply.readException();
196 result = reply.readInt() != 0;
197 } finally {
198 reply.recycle();
199 data.recycle();
200 }
201 return result;
202 }
203
204 @Override
205 public boolean putString(String key, String value) throws RemoteException {
206 Parcel data = Parcel.obtain();
207 Parcel reply = Parcel.obtain();
208 boolean result;
209 try {
210 data.writeInterfaceToken(DESCRIPTOR);
211 data.writeString(key);
212 data.writeString(value);
213 mRemote.transact(TRANSACTION_putString, data, reply, 0);
214 reply.readException();
215 result = reply.readInt() != 0;
216 } finally {
217 reply.recycle();
218 data.recycle();
219 }
220 return result;
221 }
222 }
223 }
224 }
1 package com.android.smart.terminal.iptv.aidl;
2
3 import android.app.Service;
4 import android.content.Intent;
5 import android.os.IBinder;
6 import android.os.RemoteException;
7 import android.text.TextUtils;
8 import android.util.Log;
9 import org.json.JSONArray;
10 import org.json.JSONException;
11 import org.json.JSONObject;
12 import com.android.smart.terminal.iptv.aidl.IServiceCfg.Stub;
13 import com.topdraw.iptvlaunchertest.IptvConfig;
14 import com.topdraw.iptvlaunchertest.TestConfig;
15
16 public class ServiceCfg extends Service {
17 private static final String TAG = "ServiceCfg";
18 private final Stub mBinder;
19 private IptvConfig mConfig;
20
21 public ServiceCfg() {
22 this.mConfig = null;
23 this.mBinder = new Stub() {
24 @Override
25 public boolean getBoolean(String key, boolean defValue) throws RemoteException {
26 Log.d(TAG, "getBoolean() key = " + key + ", defValue = " + defValue);
27 return defValue;
28 }
29
30 @Override
31 public int getInt(String key, int defValue) throws RemoteException {
32 Log.d(TAG, "getInt() key = " + key + ", defValue = " + defValue);
33 return defValue;
34 }
35
36 @Override
37 public String getString(String key, String defValue) throws RemoteException {
38 String value = defValue;
39 if (TextUtils.isEmpty(key)) {
40 return value;
41 }
42
43 switch (key.toLowerCase()) {
44 case "service/serviceinfo/iptvauthurl":
45 value = mConfig.getAuthAddress();
46 break;
47 case "service/serviceinfo/iptvaccount":
48 case "service/serviceinfo/userid":
49 value = mConfig.getBusinessUserId();
50 break;
51 case "service/serviceinfo/iptvpassword":
52 value = mConfig.getBusinessPasswd();
53 break;
54 case "service/serviceinfo/stbid":
55 value = mConfig.getStbID();
56 break;
57 case "service/serviceinfo/usertoken":
58 value = mConfig.getValue("usertoken");
59 break;
60 case "service/serviceinfo/epgdomain":
61 case "service/serviceinfo/epginfo":
62 value = mConfig.getValue("epgdomain");
63 break;
64 case "service/serviceinfo/epggroupnmb":
65 value = mConfig.getEPGGroupNMB();
66 break;
67 case "service/serviceinfo/usergroupnmb":
68 value = mConfig.getUserGroupNMB();
69 break;
70 case "service/serviceinfo/productmodel":
71 case "service/serviceinfo/terminaltype":
72 value = IptvConfig.getStbType();
73 break;
74 case "service/serviceinfo/areaid":
75 value = mConfig.getValue("areaid");
76 break;
77 case "service/serviceinfo/countyid":
78 value = mConfig.getValue("countyid");
79 break;
80 case "service/serviceinfo/romversion":
81 case "service/serviceinfo/terminalversion":
82 value = IptvConfig.getSoftVersion();
83 break;
84 case "service/serviceinfo/platforminfo":
85 value = getPlatform();
86 break;
87 case "service/serviceinfo/manufacturerinfo":
88 value = "Fiberhome";
89 break;
90 case "service/serviceinfo/mac":
91 value = mConfig.getMac();
92 break;
93 case "service/serviceinfo/livechannels":
94 value = mConfig.getValue("livechannels");
95 break;
96 case "service/serviceinfo/stbhdflag":
97 value = "HD";
98 break;
99 case "service/serviceinfo/adshowstatus":
100 value = getADShowStatus();
101 break;
102 case "service/serviceinfo/iptvstate":
103 value = mConfig.getIPTVState();
104 break;
105 case "service/serviceinfo/ottcp":
106 value = mConfig.getOttCp();
107 break;
108 default:
109 Log.e(TAG, "getString() unknown key = " + key);
110 break;
111 }
112
113 Log.d(TAG, "getString() key = " + key + ", value = " + value);
114 return value;
115 }
116
117 @Override
118 public boolean putBoolean(String key, boolean value) throws RemoteException {
119 Log.d(TAG, "putBoolean() key = " + key + ", value = " + value);
120 return false;
121 }
122
123 @Override
124 public boolean putInt(String key, int value) throws RemoteException {
125 Log.d(TAG, "putInt() key = " + key + ", value = " + value);
126 return false;
127 }
128
129 @Override
130 public boolean putString(String key, String value) throws RemoteException {
131 Log.d(TAG, "putString() key = " + key + ", value = " + value);
132 return false;
133 }
134 };
135 }
136
137 private String getADShowStatus() {
138 boolean logoStatus = false;
139 boolean anmiStatus = false;
140 boolean authStatus = false;
141
142 try {
143 JSONObject jsonData = new JSONObject();
144 JSONArray arrayName = new JSONArray();
145 JSONArray arrayValue = new JSONArray();
146
147 arrayName.put("logo");
148 arrayValue.put(logoStatus ? "1" : "2");
149
150 arrayName.put("anmi");
151 arrayValue.put(anmiStatus ? "1" : "2");
152
153 arrayName.put("auth");
154 arrayValue.put(authStatus ? "1" : "2");
155
156 jsonData.put("adtype", arrayName);
157 jsonData.put("advalue", arrayValue);
158
159 String status = jsonData.toString();
160 Log.d(TAG, "getADShowStatus() status = " + status);
161 return status;
162 } catch (JSONException e) {
163 Log.e(TAG, "getADShowStatus() failed to generate JSON", e);
164 return null;
165 }
166 }
167
168 private String getPlatform() {
169 Log.d(TAG, "getPlatform() platform = " + TestConfig.platform);
170 return TestConfig.platform;
171 }
172
173 @Override
174 public IBinder onBind(Intent intent) {
175 Log.d(TAG, "service on bind");
176 return mBinder;
177 }
178
179 @Override
180 public void onCreate() {
181 super.onCreate();
182 Log.d(TAG, "onCreate");
183 mConfig = IptvConfig.getInstance(this);
184 }
185
186 @Override
187 public void onDestroy() {
188 super.onDestroy();
189 Log.d(TAG, "onDestroy");
190 }
191
192 @Override
193 public void onRebind(Intent intent) {
194 Log.d(TAG, "service on rebind");
195 super.onRebind(intent);
196 }
197
198 @Override
199 public void onStart(Intent intent, int startId) {
200 Log.d(TAG, "service start id=" + startId);
201 }
202
203 @Override
204 public boolean onUnbind(Intent intent) {
205 Log.d(TAG, "service on unbind");
206 return super.onUnbind(intent);
207 }
208 }
1 package com.topdraw.iptvlaunchertest;
2
3 import android.content.Context;
4 import android.util.Log;
5 import com.topdraw.iptvlaunchertest.common.JsonReader;
6 import org.json.JSONArray;
7 import org.json.JSONObject;
8 import java.util.HashMap;
9 import java.util.Iterator;
10 import java.util.Map;
11
12 /**
13 * iptv 参数
14 */
15 public class IptvConfig {
16 private static final String TAG = IptvConfig.class.getSimpleName();
17 private static final Map<String,String> iptvConfigMap = new HashMap<>();
18 private static volatile IptvConfig instance = null;
19
20 public static final String IPTV_AUTH_URL = "iptvauthurl";
21 public static final String IPTV_ACCOUNT = "iptvaccount";
22 public static final String USER_ID = "userid";
23 public static final String IPTV_PASSWORD = "iptvpassword";
24 public static final String STB_ID = "stbid";
25 public static final String USER_TOEKN = "usertoken";
26 public static final String EPG_DOMAIN = "epgdomain";
27 public static final String EPG_INFO = "epginfo";
28 public static final String EPG_GROUP_NMB = "epggroupnmb";
29 public static final String USER_GROUP_NMB = "usergroupnmb";
30 public static final String PRODUCT_MODEL = "productmodel";
31 public static final String TERMINAL_TYPE = "terminaltype";
32 public static final String AREA_ID = "areaid";
33 public static final String COUNTY_ID = "countyid";
34 public static final String ROM_VERSION = "romversion";
35 public static final String TERMINAL_VERSION = "terminalversion";
36 public static final String MAC = "mac";
37 public static final String IPTV_STATE = "iptvstate";
38 public static final String OT_TCP = "ottcp";
39 public static final String LIVE_CHANNELS = "LiveChannels";
40
41 private IptvConfig(Context context){
42 JSONObject param = JsonReader.readJsonFromAssets(context,"iptv_param.json");
43 JSONArray channels = JsonReader.readJsonArrFromAssets(context,"livechannels.json");
44 Log.d(TAG, "IptvConfig param:"+param.toString());
45 Log.d(TAG, "IptvConfig channels:"+channels.toString());
46 for (Iterator<String> it = param.keys(); it.hasNext(); ) {
47 String key = it.next();
48 iptvConfigMap.put(key,param.optString(key,""));
49 }
50 iptvConfigMap.put("LiveChannels",channels.toString());
51 }
52
53 public static IptvConfig getInstance(Context context) {
54 if(instance == null){
55 synchronized (IptvConfig.class){
56 if(instance==null){
57 instance = new IptvConfig(context);
58 }
59 }
60 }
61 return instance;
62 }
63
64 public static String getStbType() {
65 return TestConfig.stbType;
66 }
67
68 public static String getSoftVersion() {
69 return "1";
70 }
71
72 public String getAuthAddress() {
73 return iptvConfigMap.get(IPTV_AUTH_URL);
74 }
75
76 public String getBusinessUserId() {
77 return iptvConfigMap.get(IPTV_ACCOUNT);
78 }
79
80 public String getBusinessPasswd() {
81 return iptvConfigMap.get(IPTV_PASSWORD);
82 }
83
84 public String getStbID() {
85 return iptvConfigMap.get(STB_ID);
86 }
87
88 public String getValue(String key) {
89 return iptvConfigMap.get(key);
90 }
91
92 public String getEPGGroupNMB() {
93 return iptvConfigMap.get(EPG_GROUP_NMB);
94 }
95
96 public String getUserGroupNMB() {
97 return iptvConfigMap.get(USER_GROUP_NMB);
98 }
99
100 public String getMac() {
101 return iptvConfigMap.get(MAC);
102 }
103
104 public String getIPTVState() {
105 return iptvConfigMap.get(IPTV_STATE);
106 }
107
108 public String getOttCp() {
109 return iptvConfigMap.get(OT_TCP);
110 }
111 }
1 package com.topdraw.iptvlaunchertest; 1 package com.topdraw.iptvlaunchertest;
2 2
3 import android.Manifest; 3 import android.Manifest;
4 import android.content.Intent;
4 import android.os.Build; 5 import android.os.Build;
5 import android.os.Bundle; 6 import android.os.Bundle;
6 import android.webkit.WebSettings; 7 import android.webkit.WebSettings;
...@@ -12,6 +13,9 @@ import androidx.core.graphics.Insets; ...@@ -12,6 +13,9 @@ import androidx.core.graphics.Insets;
12 import androidx.core.view.ViewCompat; 13 import androidx.core.view.ViewCompat;
13 import androidx.core.view.WindowInsetsCompat; 14 import androidx.core.view.WindowInsetsCompat;
14 15
16 import com.android.smart.terminal.iptv.aidl.ServiceCfg;
17 import com.topdraw.iptvlaunchertest.common.Authentication;
18
15 public class MainActivity extends AppCompatActivity { 19 public class MainActivity extends AppCompatActivity {
16 private WebView webView; 20 private WebView webView;
17 21
...@@ -23,6 +27,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -23,6 +27,7 @@ public class MainActivity extends AppCompatActivity {
23 @Override 27 @Override
24 protected void onCreate(Bundle savedInstanceState) { 28 protected void onCreate(Bundle savedInstanceState) {
25 super.onCreate(savedInstanceState); 29 super.onCreate(savedInstanceState);
30 startService(new Intent(this, ServiceCfg.class));
26 EdgeToEdge.enable(this); 31 EdgeToEdge.enable(this);
27 setContentView(R.layout.activity_main); 32 setContentView(R.layout.activity_main);
28 ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { 33 ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
...@@ -32,10 +37,10 @@ public class MainActivity extends AppCompatActivity { ...@@ -32,10 +37,10 @@ public class MainActivity extends AppCompatActivity {
32 }); 37 });
33 webView = findViewById(R.id.webview); 38 webView = findViewById(R.id.webview);
34 initWeb(); 39 initWeb();
35 initObject();
36 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 40 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
37 requestPermissions(permissions,0); 41 requestPermissions(permissions,0);
38 } 42 }
43 initObject();
39 webView.loadUrl(TestConfig.homeUrl); 44 webView.loadUrl(TestConfig.homeUrl);
40 } 45 }
41 46
...@@ -51,6 +56,7 @@ public class MainActivity extends AppCompatActivity { ...@@ -51,6 +56,7 @@ public class MainActivity extends AppCompatActivity {
51 56
52 //注册接口 57 //注册接口
53 private void initObject(){ 58 private void initObject(){
59 webView.addJavascriptInterface(new Authentication(MainActivity.this),"Authentication");
54 if(TestConfig.testDist==TestConfig.Skyworth){ 60 if(TestConfig.testDist==TestConfig.Skyworth){
55 webView.addJavascriptInterface(new com.topdraw.iptvlaunchertest.sky.STBAppManager(this),"STBAppManager"); 61 webView.addJavascriptInterface(new com.topdraw.iptvlaunchertest.sky.STBAppManager(this),"STBAppManager");
56 }else if(TestConfig.testDist==TestConfig.FiberHome){ 62 }else if(TestConfig.testDist==TestConfig.FiberHome){
......
...@@ -9,6 +9,11 @@ public class TestConfig { ...@@ -9,6 +9,11 @@ public class TestConfig {
9 //测试目标盒子 9 //测试目标盒子
10 public static int testDist = FiberHome; 10 public static int testDist = FiberHome;
11 11
12 //测试平台
13 public static final String platform = "HUAWEI";//"ZTE"
14 //设备名称
15 public static final String stbType = "IPTV-TEST";
16
12 //启动页地址 17 //启动页地址
13 public static final String homeUrl = "http://139.196.145.150:8060/JsAppLaunch/JsAppStartUp.html"; 18 public static final String homeUrl = "http://172.23.51.26:8070/AppEngine/apps/startApp/jsview.html";
14 } 19 }
......
1 package com.topdraw.iptvlaunchertest.common;
2
3 import android.content.Context;
4 import android.webkit.JavascriptInterface;
5
6 import com.topdraw.iptvlaunchertest.IptvConfig;
7 import java.util.HashMap;
8
9 public class Authentication {
10 private static final HashMap<String,String> valueMap = new HashMap<>();
11 public static final String UserID = "UserID";
12 public static final String STBType = "STBType";
13 public static final String STBVersion = "STBVersion";
14 public static final String STBID = "STBID";
15 public static final String EPGDomain = "EPGDomain";
16 public static final String UserToken = "UserToken";
17 public static final String SessionID = "SessionID";
18
19
20 public Authentication(Context context) {
21 valueMap.put(UserID,IptvConfig.getInstance(context).getValue(IptvConfig.USER_ID));
22 valueMap.put(STBType, IptvConfig.getStbType());
23 valueMap.put(STBVersion, IptvConfig.getSoftVersion());
24 valueMap.put(STBID, IptvConfig.getInstance(context).getStbID());
25 valueMap.put(EPGDomain, IptvConfig.getInstance(context).getValue("epgdomain"));
26 valueMap.put(UserToken, IptvConfig.getInstance(context).getValue("usertoken"));
27 valueMap.put(SessionID, IptvConfig.getInstance(context).getValue("sessionid"));
28 }
29
30 @JavascriptInterface
31 public String CTCGetConfig(String encryToken){
32 return valueMap.get(encryToken);
33 }
34
35 @JavascriptInterface
36 public String CTCSetConfig(String key,String value){
37 return valueMap.put(key,value);
38 }
39 }
1 package com.topdraw.iptvlaunchertest.common;
2
3 import android.content.Context;
4 import android.content.res.AssetManager;
5
6 import org.json.JSONArray;
7 import org.json.JSONObject;
8
9 import java.io.BufferedReader;
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.io.InputStreamReader;
13
14 public class JsonReader {
15
16 public static JSONObject readJsonFromAssets(Context context, String jsonFileName) {
17 AssetManager assetManager = context.getAssets();
18 JSONObject jsonObject = null;
19
20 try (InputStream inputStream = assetManager.open(jsonFileName);
21 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
22
23 StringBuilder stringBuilder = new StringBuilder();
24 String line;
25 while ((line = reader.readLine()) != null) {
26 stringBuilder.append(line);
27 }
28
29 // 将 JSON 字符串转换为 JSONObject
30 jsonObject = new JSONObject(stringBuilder.toString());
31
32 } catch (IOException | org.json.JSONException e) {
33 e.printStackTrace();
34 }
35
36 return jsonObject;
37 }
38
39 public static JSONArray readJsonArrFromAssets(Context context, String jsonFileName) {
40 AssetManager assetManager = context.getAssets();
41 JSONArray jsonArray = null;
42
43 try (InputStream inputStream = assetManager.open(jsonFileName);
44 BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
45
46 StringBuilder stringBuilder = new StringBuilder();
47 String line;
48 while ((line = reader.readLine()) != null) {
49 stringBuilder.append(line);
50 }
51
52 // 将 JSON 字符串转换为 JSONObject
53 jsonArray = new JSONArray(stringBuilder.toString());
54
55 } catch (IOException | org.json.JSONException e) {
56 e.printStackTrace();
57 }
58
59 return jsonArray;
60 }
61 }