新增aidl服务模拟
Showing
12 changed files
with
1758 additions
and
4 deletions
... | @@ -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> | ... | ... |
... | @@ -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 | ... | ... |
app/src/main/assets/iptv_param.json
0 → 100644
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 |
app/src/main/assets/livechannels.json
0 → 100644
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 | } |
-
Please register or sign in to post a comment