Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
apk_product
/
IPTVLaunchTest
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
Commit
a3eb444c
...
a3eb444c40184fb4f8c6ca2f0b855d2f734b211a
authored
2024-10-15 18:37:29 +0800
by
胡波
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
新增aidl服务模拟
1 parent
a9850a1a
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1758 additions
and
4 deletions
.idea/deploymentTargetSelector.xml
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/assets/iptv_param.json
app/src/main/assets/livechannels.json
app/src/main/java/com/android/smart/terminal/iptv/aidl/IServiceCfg.java
app/src/main/java/com/android/smart/terminal/iptv/aidl/ServiceCfg.java
app/src/main/java/com/topdraw/iptvlaunchertest/IptvConfig.java
app/src/main/java/com/topdraw/iptvlaunchertest/MainActivity.java
app/src/main/java/com/topdraw/iptvlaunchertest/TestConfig.java
app/src/main/java/com/topdraw/iptvlaunchertest/common/Authentication.java
app/src/main/java/com/topdraw/iptvlaunchertest/common/JsonReader.java
.idea/deploymentTargetSelector.xml
View file @
a3eb444
...
...
@@ -4,10 +4,10 @@
<selectionStates>
<SelectionState
runConfigName=
"app"
>
<option
name=
"selectionMode"
value=
"DROPDOWN"
/>
<DropdownSelection
timestamp=
"2024-10-1
2T05:40:06.32882
3Z"
>
<DropdownSelection
timestamp=
"2024-10-1
4T01:44:33.74280
3Z"
>
<Target
type=
"DEFAULT_BOOT"
>
<handle>
<DeviceId
pluginId=
"
Default"
identifier=
"serial=0123456789;connection=725ee2fc
"
/>
<DeviceId
pluginId=
"
LocalEmulator"
identifier=
"path=/Users/bohu/.android/avd/Pixel_Tablet_API_31.avd
"
/>
</handle>
</Target>
</DropdownSelection>
...
...
app/build.gradle
View file @
a3eb444
...
...
@@ -29,6 +29,7 @@ android {
buildFeatures
{
buildConfig
true
aidl
true
}
flavorDimensions
'APP'
...
...
app/src/main/AndroidManifest.xml
View file @
a3eb444
...
...
@@ -9,6 +9,7 @@
<uses-permission
android:name=
"android.permission.KILL_BACKGROUND_PROCESSES"
/>
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<permission
android:name=
"com.android.smart.terminal.iptv.aidl.SERVICES"
android:protectionLevel=
"normal"
/>
<application
android:allowBackup=
"true"
...
...
@@ -30,6 +31,11 @@
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<service
android:exported=
"true"
android:name=
"com.android.smart.terminal.iptv.aidl.ServiceCfg"
>
<intent-filter>
<action
android:name=
"com.android.smart.terminal.iptv.aidl.ServiceCfg"
/>
</intent-filter>
</service>
</application>
</manifest>
\ No newline at end of file
...
...
app/src/main/assets/iptv_param.json
0 → 100644
View file @
a3eb444
{
"iptvauthurl"
:
"1http://epg.itv.cq.cn:8080/iptvepg/platform/index.jsp"
,
"iptvaccount"
:
"kdspb2"
,
"userid"
:
"kdspb2"
,
"iptvpassword"
:
"159357"
,
"stbid"
:
"0010059900E06810042094D505F12A7E"
,
"usertoken"
:
"IlrUGIlrUG17tYxUgfawMrNRAmf8XV7S"
,
"epgdomain"
:
"http://172.23.88.137:33200/EPG/jsp/xinaishangbanmuban/en/Category.jsp"
,
"epginfo"
:
""
,
"epggroupnmb"
:
"xinaishangbanmuban"
,
"usergroupnmb"
:
"717"
,
"productmodel"
:
""
,
"terminaltype"
:
""
,
"areaid"
:
""
,
"countyid"
:
""
,
"romversion"
:
""
,
"terminalversion"
:
""
,
"mac"
:
""
,
"iptvstate"
:
""
,
"ottcp"
:
""
,
"sessionid"
:
"DF10A297F8449B9526B58811497FC4B4"
}
\ No newline at end of file
app/src/main/assets/livechannels.json
0 → 100644
View file @
a3eb444
[{
"UserChannelID"
:
"35"
,
"ChannelNo"
:
"763"
,
"ChannelName"
:
"时尚购物"
,
"ext"
:
""
},
{
"UserChannelID"
:
"36"
,
"ChannelNo"
:
"1486"
,
"ChannelName"
:
"江苏卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"33"
,
"ChannelNo"
:
"561019957"
,
"ChannelName"
:
"环球购物"
,
"ext"
:
""
},
{
"UserChannelID"
:
"34"
,
"ChannelNo"
:
"3072"
,
"ChannelName"
:
"家有购物(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"39"
,
"ChannelNo"
:
"1487"
,
"ChannelName"
:
"深圳卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"37"
,
"ChannelNo"
:
"1485"
,
"ChannelName"
:
"浙江卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"38"
,
"ChannelNo"
:
"1501"
,
"ChannelName"
:
"东方卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"43"
,
"ChannelNo"
:
"3332"
,
"ChannelName"
:
"贵州卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"42"
,
"ChannelNo"
:
"1484"
,
"ChannelName"
:
"天津卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"41"
,
"ChannelNo"
:
"1482"
,
"ChannelName"
:
"山东卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"40"
,
"ChannelNo"
:
"1490"
,
"ChannelName"
:
"北京卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"202"
,
"ChannelNo"
:
"754"
,
"ChannelName"
:
"CQTV影视"
,
"ext"
:
""
},
{
"UserChannelID"
:
"203"
,
"ChannelNo"
:
"756"
,
"ChannelName"
:
"CQTV社会与法"
,
"ext"
:
""
},
{
"UserChannelID"
:
"2018"
,
"ChannelNo"
:
"2652"
,
"ChannelName"
:
"江苏晚会4K"
,
"ext"
:
""
},
{
"UserChannelID"
:
"204"
,
"ChannelNo"
:
"759"
,
"ChannelName"
:
"CQTV时尚生活"
,
"ext"
:
""
},
{
"UserChannelID"
:
"2019"
,
"ChannelNo"
:
"3954"
,
"ChannelName"
:
"聚精彩临时业务流"
,
"ext"
:
""
},
{
"UserChannelID"
:
"205"
,
"ChannelNo"
:
"757"
,
"ChannelName"
:
"CQTV娱乐"
,
"ext"
:
""
},
{
"UserChannelID"
:
"200"
,
"ChannelNo"
:
"752"
,
"ChannelName"
:
"重庆卫视频道"
,
"ext"
:
""
},
{
"UserChannelID"
:
"201"
,
"ChannelNo"
:
"753"
,
"ChannelName"
:
"CQTV新闻"
,
"ext"
:
""
},
{
"UserChannelID"
:
"22"
,
"ChannelNo"
:
"3536"
,
"ChannelName"
:
"CQTV社会与法(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"23"
,
"ChannelNo"
:
"3535"
,
"ChannelName"
:
"CQTV时尚生活(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"24"
,
"ChannelNo"
:
"3533"
,
"ChannelName"
:
"CQTV娱乐(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"25"
,
"ChannelNo"
:
"3532"
,
"ChannelName"
:
"CQTV新农村(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"26"
,
"ChannelNo"
:
"4094"
,
"ChannelName"
:
"CQTV少儿(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"206"
,
"ChannelNo"
:
"758"
,
"ChannelName"
:
"CQTV新农村"
,
"ext"
:
""
},
{
"UserChannelID"
:
"27"
,
"ChannelNo"
:
"3733"
,
"ChannelName"
:
"CQTV科教(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"28"
,
"ChannelNo"
:
"4093"
,
"ChannelName"
:
"CQTV汽摩(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"168"
,
"ChannelNo"
:
"3034"
,
"ChannelName"
:
"城市剧场(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"208"
,
"ChannelNo"
:
"755"
,
"ChannelName"
:
"CQTV科教"
,
"ext"
:
""
},
{
"UserChannelID"
:
"29"
,
"ChannelNo"
:
"4096"
,
"ChannelName"
:
"CQTV移动(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"3"
,
"ChannelNo"
:
"2552"
,
"ChannelName"
:
"CCTV-3综艺(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"409"
,
"ChannelNo"
:
"1552"
,
"ChannelName"
:
"IPTV相声小品."
,
"ext"
:
""
},
{
"UserChannelID"
:
"2"
,
"ChannelNo"
:
"1479"
,
"ChannelName"
:
"CCTV-2财经(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"408"
,
"ChannelNo"
:
"1555"
,
"ChannelName"
:
"IPTV谍战剧场."
,
"ext"
:
""
},
{
"UserChannelID"
:
"1"
,
"ChannelNo"
:
"1491"
,
"ChannelName"
:
"CCTV-1综合(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"7"
,
"ChannelNo"
:
"2532"
,
"ChannelName"
:
"CCTV-6电影(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"405"
,
"ChannelNo"
:
"1594"
,
"ChannelName"
:
"IPTV6+"
,
"ext"
:
""
},
{
"UserChannelID"
:
"6"
,
"ChannelNo"
:
"1596"
,
"ChannelName"
:
"CCTV-5+体育赛事(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"404"
,
"ChannelNo"
:
"1593"
,
"ChannelName"
:
"IPTV5+"
,
"ext"
:
""
},
{
"UserChannelID"
:
"5"
,
"ChannelNo"
:
"2533"
,
"ChannelName"
:
"CCTV-5体育(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"407"
,
"ChannelNo"
:
"1496"
,
"ChannelName"
:
"收视指南."
,
"ext"
:
""
},
{
"UserChannelID"
:
"4"
,
"ChannelNo"
:
"3334"
,
"ChannelName"
:
"CCTV-4中文国际(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"406"
,
"ChannelNo"
:
"1595"
,
"ChannelName"
:
"IPTV8+"
,
"ext"
:
""
},
{
"UserChannelID"
:
"401"
,
"ChannelNo"
:
"1499"
,
"ChannelName"
:
"少儿动画."
,
"ext"
:
""
},
{
"UserChannelID"
:
"2021"
,
"ChannelNo"
:
"4113"
,
"ChannelName"
:
"自贡灯会慢直播"
,
"ext"
:
""
},
{
"UserChannelID"
:
"400"
,
"ChannelNo"
:
"2832"
,
"ChannelName"
:
"重广融媒"
,
"ext"
:
""
},
{
"UserChannelID"
:
"2020"
,
"ChannelNo"
:
"4153"
,
"ChannelName"
:
"2020测试"
,
"ext"
:
""
},
{
"UserChannelID"
:
"9"
,
"ChannelNo"
:
"2512"
,
"ChannelName"
:
"CCTV-8电视剧(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"403"
,
"ChannelNo"
:
"1592"
,
"ChannelName"
:
"IPTV3+"
,
"ext"
:
""
},
{
"UserChannelID"
:
"2023"
,
"ChannelNo"
:
"4133"
,
"ChannelName"
:
"2023测试"
,
"ext"
:
""
},
{
"UserChannelID"
:
"8"
,
"ChannelNo"
:
"1474"
,
"ChannelName"
:
"CCTV-7国防军事(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"402"
,
"ChannelNo"
:
"1495"
,
"ChannelName"
:
"魅力时尚."
,
"ext"
:
""
},
{
"UserChannelID"
:
"2022"
,
"ChannelNo"
:
"4135"
,
"ChannelName"
:
"2022测试"
,
"ext"
:
""
},
{
"UserChannelID"
:
"215"
,
"ChannelNo"
:
"1472"
,
"ChannelName"
:
"CCTV-2财经"
,
"ext"
:
""
},
{
"UserChannelID"
:
"216"
,
"ChannelNo"
:
"2495"
,
"ChannelName"
:
"CCTV-3综艺"
,
"ext"
:
""
},
{
"UserChannelID"
:
"19"
,
"ChannelNo"
:
"1014"
,
"ChannelName"
:
"重庆卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"214"
,
"ChannelNo"
:
"1435"
,
"ChannelName"
:
"CCTV-1综合"
,
"ext"
:
""
},
{
"UserChannelID"
:
"219"
,
"ChannelNo"
:
"2498"
,
"ChannelName"
:
"CCTV-6电影"
,
"ext"
:
""
},
{
"UserChannelID"
:
"18"
,
"ChannelNo"
:
"3754"
,
"ChannelName"
:
"CCTV-17农业农村(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"15"
,
"ChannelNo"
:
"1475"
,
"ChannelName"
:
"CCTV-少儿(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"217"
,
"ChannelNo"
:
"1734"
,
"ChannelName"
:
"CCTV-4中文国际"
,
"ext"
:
""
},
{
"UserChannelID"
:
"16"
,
"ChannelNo"
:
"4294"
,
"ChannelName"
:
"CCTV-15音乐(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"218"
,
"ChannelNo"
:
"2501"
,
"ChannelName"
:
"CCTV-5体育"
,
"ext"
:
""
},
{
"UserChannelID"
:
"13"
,
"ChannelNo"
:
"1476"
,
"ChannelName"
:
"CCTV-12社会与法(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"14"
,
"ChannelNo"
:
"4293"
,
"ChannelName"
:
"CCTV-13新闻(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"11"
,
"ChannelNo"
:
"1477"
,
"ChannelName"
:
"CCTV-10科教(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"12"
,
"ChannelNo"
:
"4313"
,
"ChannelName"
:
"CCTV-11戏曲(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"21"
,
"ChannelNo"
:
"3534"
,
"ChannelName"
:
"CQTV影视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"418"
,
"ChannelNo"
:
"3032"
,
"ChannelName"
:
"地理(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"20"
,
"ChannelNo"
:
"3314"
,
"ChannelName"
:
"CQTV新闻(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"417"
,
"ChannelNo"
:
"3036"
,
"ChannelName"
:
"音乐现场(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"416"
,
"ChannelNo"
:
"3038"
,
"ChannelName"
:
"古装剧场(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"415"
,
"ChannelNo"
:
"3037"
,
"ChannelName"
:
"军旅剧场(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"419"
,
"ChannelNo"
:
"3035"
,
"ChannelName"
:
"美妆(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"410"
,
"ChannelNo"
:
"1554"
,
"ChannelName"
:
"IPTV野外."
,
"ext"
:
""
},
{
"UserChannelID"
:
"414"
,
"ChannelNo"
:
"2593"
,
"ChannelName"
:
"开县本地电视1"
,
"ext"
:
""
},
{
"UserChannelID"
:
"413"
,
"ChannelNo"
:
"1497"
,
"ChannelName"
:
"经典电影."
,
"ext"
:
""
},
{
"UserChannelID"
:
"412"
,
"ChannelNo"
:
"1498"
,
"ChannelName"
:
"热播剧场."
,
"ext"
:
""
},
{
"UserChannelID"
:
"411"
,
"ChannelNo"
:
"1553"
,
"ChannelName"
:
"IPTV法治."
,
"ext"
:
""
},
{
"UserChannelID"
:
"220"
,
"ChannelNo"
:
"1436"
,
"ChannelName"
:
"CCTV-7国防军事"
,
"ext"
:
""
},
{
"UserChannelID"
:
"221"
,
"ChannelNo"
:
"2496"
,
"ChannelName"
:
"CCTV-8电视剧"
,
"ext"
:
""
},
{
"UserChannelID"
:
"222"
,
"ChannelNo"
:
"1453"
,
"ChannelName"
:
"CCTV-9纪录"
,
"ext"
:
""
},
{
"UserChannelID"
:
"223"
,
"ChannelNo"
:
"1450"
,
"ChannelName"
:
"CCTV-10科教"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1308"
,
"ChannelNo"
:
"3253"
,
"ChannelName"
:
"音乐直播(淘景立画)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"224"
,
"ChannelNo"
:
"1473"
,
"ChannelName"
:
"CCTV-11戏曲"
,
"ext"
:
""
},
{
"UserChannelID"
:
"225"
,
"ChannelNo"
:
"1471"
,
"ChannelName"
:
"CCTV-12社会与法"
,
"ext"
:
""
},
{
"UserChannelID"
:
"226"
,
"ChannelNo"
:
"1469"
,
"ChannelName"
:
"CCTV-13新闻"
,
"ext"
:
""
},
{
"UserChannelID"
:
"227"
,
"ChannelNo"
:
"1467"
,
"ChannelName"
:
"CCTV-少儿"
,
"ext"
:
""
},
{
"UserChannelID"
:
"228"
,
"ChannelNo"
:
"1468"
,
"ChannelName"
:
"CCTV-15音乐"
,
"ext"
:
""
},
{
"UserChannelID"
:
"229"
,
"ChannelNo"
:
"3753"
,
"ChannelName"
:
"CCTV-17农业农村"
,
"ext"
:
""
},
{
"UserChannelID"
:
"427"
,
"ChannelNo"
:
"3000"
,
"ChannelName"
:
"动画(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"426"
,
"ChannelNo"
:
"2999"
,
"ChannelName"
:
"早教(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"10"
,
"ChannelNo"
:
"1478"
,
"ChannelName"
:
"CCTV-9纪录(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"429"
,
"ChannelNo"
:
"3001"
,
"ChannelName"
:
"鉴赏(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"182"
,
"ChannelNo"
:
"1094"
,
"ChannelName"
:
"精彩导视"
,
"ext"
:
""
},
{
"UserChannelID"
:
"428"
,
"ChannelNo"
:
"3005"
,
"ChannelName"
:
"好学生(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"421"
,
"ChannelNo"
:
"2994"
,
"ChannelName"
:
"精选(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"420"
,
"ChannelNo"
:
"2995"
,
"ChannelName"
:
"美人(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"423"
,
"ChannelNo"
:
"2996"
,
"ChannelName"
:
"军事(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"422"
,
"ChannelNo"
:
"3039"
,
"ChannelName"
:
"解密(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"425"
,
"ChannelNo"
:
"2998"
,
"ChannelName"
:
"戏曲(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"424"
,
"ChannelNo"
:
"2997"
,
"ChannelName"
:
"国学(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"116"
,
"ChannelNo"
:
"572965386"
,
"ChannelName"
:
"世界地理HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"79"
,
"ChannelNo"
:
"1673"
,
"ChannelName"
:
"CGTN中国国际电视台"
,
"ext"
:
""
},
{
"UserChannelID"
:
"117"
,
"ChannelNo"
:
"572965326"
,
"ChannelName"
:
"女性时尚HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"114"
,
"ChannelNo"
:
"572965378"
,
"ChannelName"
:
"风云音乐HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"115"
,
"ChannelNo"
:
"572964343"
,
"ChannelName"
:
"第一剧场HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"112"
,
"ChannelNo"
:
"4353"
,
"ChannelName"
:
"魅力足球HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"113"
,
"ChannelNo"
:
"576952605"
,
"ChannelName"
:
"天元围棋HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"110"
,
"ChannelNo"
:
"4289"
,
"ChannelName"
:
"游戏风云HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"111"
,
"ChannelNo"
:
"4290"
,
"ChannelName"
:
"生活时尚HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"118"
,
"ChannelNo"
:
"572964340"
,
"ChannelName"
:
"风云剧场HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"119"
,
"ChannelNo"
:
"572965329"
,
"ChannelName"
:
"风云足球HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"435"
,
"ChannelNo"
:
"3008"
,
"ChannelName"
:
"高网(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"436"
,
"ChannelNo"
:
"3009"
,
"ChannelName"
:
"足球(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"433"
,
"ChannelNo"
:
"3010"
,
"ChannelName"
:
"爱生活(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"434"
,
"ChannelNo"
:
"3007"
,
"ChannelName"
:
"武术(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"431"
,
"ChannelNo"
:
"3003"
,
"ChannelName"
:
"光影(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"432"
,
"ChannelNo"
:
"3004"
,
"ChannelName"
:
"台球(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"430"
,
"ChannelNo"
:
"3002"
,
"ChannelName"
:
"墨宝(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"439"
,
"ChannelNo"
:
"3012"
,
"ChannelName"
:
"动作影院(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"87"
,
"ChannelNo"
:
"595279997"
,
"ChannelName"
:
"先锋乒羽"
,
"ext"
:
""
},
{
"UserChannelID"
:
"84"
,
"ChannelNo"
:
"3793"
,
"ChannelName"
:
"山东教育卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"437"
,
"ChannelNo"
:
"3006"
,
"ChannelName"
:
"武侠剧场(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"85"
,
"ChannelNo"
:
"3813"
,
"ChannelName"
:
"快乐垂钓(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"438"
,
"ChannelNo"
:
"3011"
,
"ChannelName"
:
"喜剧影院(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"67"
,
"ChannelNo"
:
"1492"
,
"ChannelName"
:
"嘉佳卡通."
,
"ext"
:
""
},
{
"UserChannelID"
:
"125"
,
"ChannelNo"
:
"572964990"
,
"ChannelName"
:
"央视文化精品HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"66"
,
"ChannelNo"
:
"1413"
,
"ChannelName"
:
"金鹰卡通."
,
"ext"
:
""
},
{
"UserChannelID"
:
"126"
,
"ChannelNo"
:
"572965325"
,
"ChannelName"
:
"早期教育HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"69"
,
"ChannelNo"
:
"1441"
,
"ChannelName"
:
"青海卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"68"
,
"ChannelNo"
:
"588989290"
,
"ChannelName"
:
"陶瓷(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"121"
,
"ChannelNo"
:
"572965341"
,
"ChannelName"
:
"兵器科技HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"122"
,
"ChannelNo"
:
"572964348"
,
"ChannelName"
:
"央视台球HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"123"
,
"ChannelNo"
:
"572964980"
,
"ChannelName"
:
"电视指南HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"124"
,
"ChannelNo"
:
"572965379"
,
"ChannelName"
:
"高尔夫网球HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"440"
,
"ChannelNo"
:
"2979"
,
"ChannelName"
:
"家庭影院(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"441"
,
"ChannelNo"
:
"3013"
,
"ChannelName"
:
"星影(测试)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"442"
,
"ChannelNo"
:
"3673"
,
"ChannelName"
:
"爱上4K"
,
"ext"
:
""
},
{
"UserChannelID"
:
"70"
,
"ChannelNo"
:
"1440"
,
"ChannelName"
:
"新疆卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"71"
,
"ChannelNo"
:
"1437"
,
"ChannelName"
:
"西藏卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"120"
,
"ChannelNo"
:
"572965337"
,
"ChannelName"
:
"怀旧剧场HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"72"
,
"ChannelNo"
:
"1597"
,
"ChannelName"
:
"纪实(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"59"
,
"ChannelNo"
:
"512"
,
"ChannelName"
:
"广东卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"58"
,
"ChannelNo"
:
"1489"
,
"ChannelName"
:
"湖南卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"57"
,
"ChannelNo"
:
"1439"
,
"ChannelName"
:
"内蒙古卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"56"
,
"ChannelNo"
:
"1481"
,
"ChannelName"
:
"辽宁卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"55"
,
"ChannelNo"
:
"1446"
,
"ChannelName"
:
"吉林卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"64"
,
"ChannelNo"
:
"589239514"
,
"ChannelName"
:
"中华美食(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"65"
,
"ChannelNo"
:
"1432"
,
"ChannelName"
:
"卡酷动画."
,
"ext"
:
""
},
{
"UserChannelID"
:
"62"
,
"ChannelNo"
:
"1454"
,
"ChannelName"
:
"宁夏卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"63"
,
"ChannelNo"
:
"1443"
,
"ChannelName"
:
"甘肃卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"60"
,
"ChannelNo"
:
"1452"
,
"ChannelName"
:
"河南卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"61"
,
"ChannelNo"
:
"3333"
,
"ChannelName"
:
"河北卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"49"
,
"ChannelNo"
:
"1438"
,
"ChannelName"
:
"山西卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"48"
,
"ChannelNo"
:
"1480"
,
"ChannelName"
:
"安徽卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"145"
,
"ChannelNo"
:
"1494"
,
"ChannelName"
:
"财富天下."
,
"ext"
:
""
},
{
"UserChannelID"
:
"45"
,
"ChannelNo"
:
"1672"
,
"ChannelName"
:
"云南卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"44"
,
"ChannelNo"
:
"3352"
,
"ChannelName"
:
"四川卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"47"
,
"ChannelNo"
:
"1488"
,
"ChannelName"
:
"黑龙江卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"46"
,
"ChannelNo"
:
"1451"
,
"ChannelName"
:
"广西卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"51"
,
"ChannelNo"
:
"1483"
,
"ChannelName"
:
"湖北卫视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"52"
,
"ChannelNo"
:
"4095"
,
"ChannelName"
:
"海南卫视HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"53"
,
"ChannelNo"
:
"1448"
,
"ChannelName"
:
"陕西卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"54"
,
"ChannelNo"
:
"3393"
,
"ChannelName"
:
"东南卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"50"
,
"ChannelNo"
:
"3734"
,
"ChannelName"
:
"江西卫视(超高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1011"
,
"ChannelNo"
:
"971"
,
"ChannelName"
:
"直播室1"
,
"ext"
:
""
},
{
"UserChannelID"
:
"109"
,
"ChannelNo"
:
"588988872"
,
"ChannelName"
:
"东方财经HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"108"
,
"ChannelNo"
:
"4288"
,
"ChannelName"
:
"金色频道HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"107"
,
"ChannelNo"
:
"4282"
,
"ChannelName"
:
"法治天地HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"106"
,
"ChannelNo"
:
"4283"
,
"ChannelName"
:
"乐游HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"105"
,
"ChannelNo"
:
"4287"
,
"ChannelName"
:
"动漫秀场HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"104"
,
"ChannelNo"
:
"4284"
,
"ChannelName"
:
"都市剧场HD"
,
"ext"
:
""
},
{
"UserChannelID"
:
"103"
,
"ChannelNo"
:
"4286"
,
"ChannelName"
:
"欢笑剧场4K"
,
"ext"
:
""
},
{
"UserChannelID"
:
"102"
,
"ChannelNo"
:
"3993"
,
"ChannelName"
:
"中国交通"
,
"ext"
:
""
},
{
"UserChannelID"
:
"101"
,
"ChannelNo"
:
"3913"
,
"ChannelName"
:
"CETV1(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"100"
,
"ChannelNo"
:
"3855"
,
"ChannelName"
:
"CETV4"
,
"ext"
:
""
},
{
"UserChannelID"
:
"97"
,
"ChannelNo"
:
"4196"
,
"ChannelName"
:
"求索纪录(4K)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"96"
,
"ChannelNo"
:
"4195"
,
"ChannelName"
:
"精彩影视(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"95"
,
"ChannelNo"
:
"4173"
,
"ChannelName"
:
"CHC影迷电影(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"94"
,
"ChannelNo"
:
"4175"
,
"ChannelName"
:
"CHC动作电影(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"93"
,
"ChannelNo"
:
"4174"
,
"ChannelName"
:
"CHC家庭影院(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"92"
,
"ChannelNo"
:
"3933"
,
"ChannelName"
:
"梨园"
,
"ext"
:
""
},
{
"UserChannelID"
:
"91"
,
"ChannelNo"
:
"3935"
,
"ChannelName"
:
"书画"
,
"ext"
:
""
},
{
"UserChannelID"
:
"90"
,
"ChannelNo"
:
"3936"
,
"ChannelName"
:
"茶频道(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"88"
,
"ChannelNo"
:
"595280747"
,
"ChannelName"
:
"武术世界(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"89"
,
"ChannelNo"
:
"595278931"
,
"ChannelName"
:
"文物宝库(高清)"
,
"ext"
:
""
},
{
"UserChannelID"
:
"240"
,
"ChannelNo"
:
"1463"
,
"ChannelName"
:
"四川卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"241"
,
"ChannelNo"
:
"1461"
,
"ChannelName"
:
"辽宁卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"245"
,
"ChannelNo"
:
"1457"
,
"ChannelName"
:
"河北卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"244"
,
"ChannelNo"
:
"1444"
,
"ChannelName"
:
"湖北卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"243"
,
"ChannelNo"
:
"1456"
,
"ChannelName"
:
"贵州卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"242"
,
"ChannelNo"
:
"1458"
,
"ChannelName"
:
"黑龙江卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"246"
,
"ChannelNo"
:
"1455"
,
"ChannelName"
:
"东南卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"230"
,
"ChannelNo"
:
"1465"
,
"ChannelName"
:
"江苏卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"1037"
,
"ChannelNo"
:
"595282174"
,
"ChannelName"
:
"游戏竞技频道2"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1036"
,
"ChannelNo"
:
"3474"
,
"ChannelName"
:
"直播室221"
,
"ext"
:
""
},
{
"UserChannelID"
:
"239"
,
"ChannelNo"
:
"1445"
,
"ChannelName"
:
"天津卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"232"
,
"ChannelNo"
:
"1459"
,
"ChannelName"
:
"东方卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"231"
,
"ChannelNo"
:
"1466"
,
"ChannelName"
:
"湖南卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"234"
,
"ChannelNo"
:
"1412"
,
"ChannelName"
:
"浙江卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"233"
,
"ChannelNo"
:
"1464"
,
"ChannelName"
:
"北京卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"236"
,
"ChannelNo"
:
"1460"
,
"ChannelName"
:
"安徽卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"235"
,
"ChannelNo"
:
"1433"
,
"ChannelName"
:
"深圳卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"238"
,
"ChannelNo"
:
"1447"
,
"ChannelName"
:
"广东卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"237"
,
"ChannelNo"
:
"1442"
,
"ChannelName"
:
"山东卫视."
,
"ext"
:
""
},
{
"UserChannelID"
:
"2025"
,
"ChannelNo"
:
"4375"
,
"ChannelName"
:
"云阳慢直播"
,
"ext"
:
""
},
{
"UserChannelID"
:
"2024"
,
"ChannelNo"
:
"4134"
,
"ChannelName"
:
"2024测试"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1017"
,
"ChannelNo"
:
"977"
,
"ChannelName"
:
"直播室7"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1016"
,
"ChannelNo"
:
"976"
,
"ChannelName"
:
"直播室6"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1013"
,
"ChannelNo"
:
"973"
,
"ChannelName"
:
"直播室3"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1012"
,
"ChannelNo"
:
"972"
,
"ChannelName"
:
"直播室2"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1015"
,
"ChannelNo"
:
"975"
,
"ChannelName"
:
"直播室5"
,
"ext"
:
""
},
{
"UserChannelID"
:
"1014"
,
"ChannelNo"
:
"974"
,
"ChannelName"
:
"直播室4"
,
"ext"
:
""
}]
\ No newline at end of file
app/src/main/java/com/android/smart/terminal/iptv/aidl/IServiceCfg.java
0 → 100644
View file @
a3eb444
package
com
.
android
.
smart
.
terminal
.
iptv
.
aidl
;
import
android.os.Binder
;
import
android.os.IBinder
;
import
android.os.IInterface
;
import
android.os.Parcel
;
import
android.os.RemoteException
;
//aidl接口
public
interface
IServiceCfg
extends
IInterface
{
boolean
getBoolean
(
String
key
,
boolean
defValue
)
throws
RemoteException
;
int
getInt
(
String
key
,
int
defValue
)
throws
RemoteException
;
String
getString
(
String
key
,
String
defValue
)
throws
RemoteException
;
boolean
putBoolean
(
String
key
,
boolean
value
)
throws
RemoteException
;
boolean
putInt
(
String
key
,
int
value
)
throws
RemoteException
;
boolean
putString
(
String
key
,
String
value
)
throws
RemoteException
;
abstract
class
Stub
extends
Binder
implements
IServiceCfg
{
private
static
final
String
DESCRIPTOR
=
"com.android.smart.terminal.iptv.aidl.IServiceCfg"
;
static
final
int
TRANSACTION_getBoolean
=
6
;
static
final
int
TRANSACTION_getInt
=
5
;
static
final
int
TRANSACTION_getString
=
4
;
static
final
int
TRANSACTION_putBoolean
=
3
;
static
final
int
TRANSACTION_putInt
=
2
;
static
final
int
TRANSACTION_putString
=
1
;
public
Stub
()
{
this
.
attachInterface
(
this
,
DESCRIPTOR
);
}
@Override
public
IBinder
asBinder
()
{
return
this
;
}
public
static
IServiceCfg
asInterface
(
IBinder
obj
)
{
if
(
obj
==
null
)
return
null
;
IInterface
iin
=
obj
.
queryLocalInterface
(
DESCRIPTOR
);
return
(
iin
instanceof
IServiceCfg
)
?
(
IServiceCfg
)
iin
:
new
Proxy
(
obj
);
}
@Override
public
boolean
onTransact
(
int
code
,
Parcel
data
,
Parcel
reply
,
int
flags
)
throws
RemoteException
{
switch
(
code
)
{
case
TRANSACTION_putString:
data
.
enforceInterface
(
DESCRIPTOR
);
boolean
resultPutString
=
putString
(
data
.
readString
(),
data
.
readString
());
reply
.
writeNoException
();
reply
.
writeInt
(
resultPutString
?
1
:
0
);
return
true
;
case
TRANSACTION_putInt:
data
.
enforceInterface
(
DESCRIPTOR
);
boolean
resultPutInt
=
putInt
(
data
.
readString
(),
data
.
readInt
());
reply
.
writeNoException
();
reply
.
writeInt
(
resultPutInt
?
1
:
0
);
return
true
;
case
TRANSACTION_putBoolean:
data
.
enforceInterface
(
DESCRIPTOR
);
boolean
resultPutBoolean
=
putBoolean
(
data
.
readString
(),
data
.
readInt
()
!=
0
);
reply
.
writeNoException
();
reply
.
writeInt
(
resultPutBoolean
?
1
:
0
);
return
true
;
case
TRANSACTION_getString:
data
.
enforceInterface
(
DESCRIPTOR
);
String
resultGetString
=
getString
(
data
.
readString
(),
data
.
readString
());
reply
.
writeNoException
();
reply
.
writeString
(
resultGetString
);
return
true
;
case
TRANSACTION_getInt:
data
.
enforceInterface
(
DESCRIPTOR
);
int
resultGetInt
=
getInt
(
data
.
readString
(),
data
.
readInt
());
reply
.
writeNoException
();
reply
.
writeInt
(
resultGetInt
);
return
true
;
case
TRANSACTION_getBoolean:
data
.
enforceInterface
(
DESCRIPTOR
);
boolean
resultGetBoolean
=
getBoolean
(
data
.
readString
(),
data
.
readInt
()
!=
0
);
reply
.
writeNoException
();
reply
.
writeInt
(
resultGetBoolean
?
1
:
0
);
return
true
;
case
1598968902
:
// Interface descriptor
reply
.
writeString
(
DESCRIPTOR
);
return
true
;
default
:
return
super
.
onTransact
(
code
,
data
,
reply
,
flags
);
}
}
private
static
class
Proxy
implements
IServiceCfg
{
private
final
IBinder
mRemote
;
Proxy
(
IBinder
remote
)
{
mRemote
=
remote
;
}
@Override
public
IBinder
asBinder
()
{
return
mRemote
;
}
@Override
public
boolean
getBoolean
(
String
key
,
boolean
defValue
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
boolean
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeInt
(
defValue
?
1
:
0
);
mRemote
.
transact
(
TRANSACTION_getBoolean
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readInt
()
!=
0
;
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
@Override
public
int
getInt
(
String
key
,
int
defValue
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
int
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeInt
(
defValue
);
mRemote
.
transact
(
TRANSACTION_getInt
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readInt
();
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
@Override
public
String
getString
(
String
key
,
String
defValue
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
String
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeString
(
defValue
);
mRemote
.
transact
(
TRANSACTION_getString
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readString
();
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
@Override
public
boolean
putBoolean
(
String
key
,
boolean
value
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
boolean
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeInt
(
value
?
1
:
0
);
mRemote
.
transact
(
TRANSACTION_putBoolean
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readInt
()
!=
0
;
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
@Override
public
boolean
putInt
(
String
key
,
int
value
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
boolean
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeInt
(
value
);
mRemote
.
transact
(
TRANSACTION_putInt
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readInt
()
!=
0
;
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
@Override
public
boolean
putString
(
String
key
,
String
value
)
throws
RemoteException
{
Parcel
data
=
Parcel
.
obtain
();
Parcel
reply
=
Parcel
.
obtain
();
boolean
result
;
try
{
data
.
writeInterfaceToken
(
DESCRIPTOR
);
data
.
writeString
(
key
);
data
.
writeString
(
value
);
mRemote
.
transact
(
TRANSACTION_putString
,
data
,
reply
,
0
);
reply
.
readException
();
result
=
reply
.
readInt
()
!=
0
;
}
finally
{
reply
.
recycle
();
data
.
recycle
();
}
return
result
;
}
}
}
}
app/src/main/java/com/android/smart/terminal/iptv/aidl/ServiceCfg.java
0 → 100644
View file @
a3eb444
package
com
.
android
.
smart
.
terminal
.
iptv
.
aidl
;
import
android.app.Service
;
import
android.content.Intent
;
import
android.os.IBinder
;
import
android.os.RemoteException
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
org.json.JSONArray
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
com.android.smart.terminal.iptv.aidl.IServiceCfg.Stub
;
import
com.topdraw.iptvlaunchertest.IptvConfig
;
import
com.topdraw.iptvlaunchertest.TestConfig
;
public
class
ServiceCfg
extends
Service
{
private
static
final
String
TAG
=
"ServiceCfg"
;
private
final
Stub
mBinder
;
private
IptvConfig
mConfig
;
public
ServiceCfg
()
{
this
.
mConfig
=
null
;
this
.
mBinder
=
new
Stub
()
{
@Override
public
boolean
getBoolean
(
String
key
,
boolean
defValue
)
throws
RemoteException
{
Log
.
d
(
TAG
,
"getBoolean() key = "
+
key
+
", defValue = "
+
defValue
);
return
defValue
;
}
@Override
public
int
getInt
(
String
key
,
int
defValue
)
throws
RemoteException
{
Log
.
d
(
TAG
,
"getInt() key = "
+
key
+
", defValue = "
+
defValue
);
return
defValue
;
}
@Override
public
String
getString
(
String
key
,
String
defValue
)
throws
RemoteException
{
String
value
=
defValue
;
if
(
TextUtils
.
isEmpty
(
key
))
{
return
value
;
}
switch
(
key
.
toLowerCase
())
{
case
"service/serviceinfo/iptvauthurl"
:
value
=
mConfig
.
getAuthAddress
();
break
;
case
"service/serviceinfo/iptvaccount"
:
case
"service/serviceinfo/userid"
:
value
=
mConfig
.
getBusinessUserId
();
break
;
case
"service/serviceinfo/iptvpassword"
:
value
=
mConfig
.
getBusinessPasswd
();
break
;
case
"service/serviceinfo/stbid"
:
value
=
mConfig
.
getStbID
();
break
;
case
"service/serviceinfo/usertoken"
:
value
=
mConfig
.
getValue
(
"usertoken"
);
break
;
case
"service/serviceinfo/epgdomain"
:
case
"service/serviceinfo/epginfo"
:
value
=
mConfig
.
getValue
(
"epgdomain"
);
break
;
case
"service/serviceinfo/epggroupnmb"
:
value
=
mConfig
.
getEPGGroupNMB
();
break
;
case
"service/serviceinfo/usergroupnmb"
:
value
=
mConfig
.
getUserGroupNMB
();
break
;
case
"service/serviceinfo/productmodel"
:
case
"service/serviceinfo/terminaltype"
:
value
=
IptvConfig
.
getStbType
();
break
;
case
"service/serviceinfo/areaid"
:
value
=
mConfig
.
getValue
(
"areaid"
);
break
;
case
"service/serviceinfo/countyid"
:
value
=
mConfig
.
getValue
(
"countyid"
);
break
;
case
"service/serviceinfo/romversion"
:
case
"service/serviceinfo/terminalversion"
:
value
=
IptvConfig
.
getSoftVersion
();
break
;
case
"service/serviceinfo/platforminfo"
:
value
=
getPlatform
();
break
;
case
"service/serviceinfo/manufacturerinfo"
:
value
=
"Fiberhome"
;
break
;
case
"service/serviceinfo/mac"
:
value
=
mConfig
.
getMac
();
break
;
case
"service/serviceinfo/livechannels"
:
value
=
mConfig
.
getValue
(
"livechannels"
);
break
;
case
"service/serviceinfo/stbhdflag"
:
value
=
"HD"
;
break
;
case
"service/serviceinfo/adshowstatus"
:
value
=
getADShowStatus
();
break
;
case
"service/serviceinfo/iptvstate"
:
value
=
mConfig
.
getIPTVState
();
break
;
case
"service/serviceinfo/ottcp"
:
value
=
mConfig
.
getOttCp
();
break
;
default
:
Log
.
e
(
TAG
,
"getString() unknown key = "
+
key
);
break
;
}
Log
.
d
(
TAG
,
"getString() key = "
+
key
+
", value = "
+
value
);
return
value
;
}
@Override
public
boolean
putBoolean
(
String
key
,
boolean
value
)
throws
RemoteException
{
Log
.
d
(
TAG
,
"putBoolean() key = "
+
key
+
", value = "
+
value
);
return
false
;
}
@Override
public
boolean
putInt
(
String
key
,
int
value
)
throws
RemoteException
{
Log
.
d
(
TAG
,
"putInt() key = "
+
key
+
", value = "
+
value
);
return
false
;
}
@Override
public
boolean
putString
(
String
key
,
String
value
)
throws
RemoteException
{
Log
.
d
(
TAG
,
"putString() key = "
+
key
+
", value = "
+
value
);
return
false
;
}
};
}
private
String
getADShowStatus
()
{
boolean
logoStatus
=
false
;
boolean
anmiStatus
=
false
;
boolean
authStatus
=
false
;
try
{
JSONObject
jsonData
=
new
JSONObject
();
JSONArray
arrayName
=
new
JSONArray
();
JSONArray
arrayValue
=
new
JSONArray
();
arrayName
.
put
(
"logo"
);
arrayValue
.
put
(
logoStatus
?
"1"
:
"2"
);
arrayName
.
put
(
"anmi"
);
arrayValue
.
put
(
anmiStatus
?
"1"
:
"2"
);
arrayName
.
put
(
"auth"
);
arrayValue
.
put
(
authStatus
?
"1"
:
"2"
);
jsonData
.
put
(
"adtype"
,
arrayName
);
jsonData
.
put
(
"advalue"
,
arrayValue
);
String
status
=
jsonData
.
toString
();
Log
.
d
(
TAG
,
"getADShowStatus() status = "
+
status
);
return
status
;
}
catch
(
JSONException
e
)
{
Log
.
e
(
TAG
,
"getADShowStatus() failed to generate JSON"
,
e
);
return
null
;
}
}
private
String
getPlatform
()
{
Log
.
d
(
TAG
,
"getPlatform() platform = "
+
TestConfig
.
platform
);
return
TestConfig
.
platform
;
}
@Override
public
IBinder
onBind
(
Intent
intent
)
{
Log
.
d
(
TAG
,
"service on bind"
);
return
mBinder
;
}
@Override
public
void
onCreate
()
{
super
.
onCreate
();
Log
.
d
(
TAG
,
"onCreate"
);
mConfig
=
IptvConfig
.
getInstance
(
this
);
}
@Override
public
void
onDestroy
()
{
super
.
onDestroy
();
Log
.
d
(
TAG
,
"onDestroy"
);
}
@Override
public
void
onRebind
(
Intent
intent
)
{
Log
.
d
(
TAG
,
"service on rebind"
);
super
.
onRebind
(
intent
);
}
@Override
public
void
onStart
(
Intent
intent
,
int
startId
)
{
Log
.
d
(
TAG
,
"service start id="
+
startId
);
}
@Override
public
boolean
onUnbind
(
Intent
intent
)
{
Log
.
d
(
TAG
,
"service on unbind"
);
return
super
.
onUnbind
(
intent
);
}
}
app/src/main/java/com/topdraw/iptvlaunchertest/IptvConfig.java
0 → 100644
View file @
a3eb444
package
com
.
topdraw
.
iptvlaunchertest
;
import
android.content.Context
;
import
android.util.Log
;
import
com.topdraw.iptvlaunchertest.common.JsonReader
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Map
;
/**
* iptv 参数
*/
public
class
IptvConfig
{
private
static
final
String
TAG
=
IptvConfig
.
class
.
getSimpleName
();
private
static
final
Map
<
String
,
String
>
iptvConfigMap
=
new
HashMap
<>();
private
static
volatile
IptvConfig
instance
=
null
;
public
static
final
String
IPTV_AUTH_URL
=
"iptvauthurl"
;
public
static
final
String
IPTV_ACCOUNT
=
"iptvaccount"
;
public
static
final
String
USER_ID
=
"userid"
;
public
static
final
String
IPTV_PASSWORD
=
"iptvpassword"
;
public
static
final
String
STB_ID
=
"stbid"
;
public
static
final
String
USER_TOEKN
=
"usertoken"
;
public
static
final
String
EPG_DOMAIN
=
"epgdomain"
;
public
static
final
String
EPG_INFO
=
"epginfo"
;
public
static
final
String
EPG_GROUP_NMB
=
"epggroupnmb"
;
public
static
final
String
USER_GROUP_NMB
=
"usergroupnmb"
;
public
static
final
String
PRODUCT_MODEL
=
"productmodel"
;
public
static
final
String
TERMINAL_TYPE
=
"terminaltype"
;
public
static
final
String
AREA_ID
=
"areaid"
;
public
static
final
String
COUNTY_ID
=
"countyid"
;
public
static
final
String
ROM_VERSION
=
"romversion"
;
public
static
final
String
TERMINAL_VERSION
=
"terminalversion"
;
public
static
final
String
MAC
=
"mac"
;
public
static
final
String
IPTV_STATE
=
"iptvstate"
;
public
static
final
String
OT_TCP
=
"ottcp"
;
public
static
final
String
LIVE_CHANNELS
=
"LiveChannels"
;
private
IptvConfig
(
Context
context
){
JSONObject
param
=
JsonReader
.
readJsonFromAssets
(
context
,
"iptv_param.json"
);
JSONArray
channels
=
JsonReader
.
readJsonArrFromAssets
(
context
,
"livechannels.json"
);
Log
.
d
(
TAG
,
"IptvConfig param:"
+
param
.
toString
());
Log
.
d
(
TAG
,
"IptvConfig channels:"
+
channels
.
toString
());
for
(
Iterator
<
String
>
it
=
param
.
keys
();
it
.
hasNext
();
)
{
String
key
=
it
.
next
();
iptvConfigMap
.
put
(
key
,
param
.
optString
(
key
,
""
));
}
iptvConfigMap
.
put
(
"LiveChannels"
,
channels
.
toString
());
}
public
static
IptvConfig
getInstance
(
Context
context
)
{
if
(
instance
==
null
){
synchronized
(
IptvConfig
.
class
){
if
(
instance
==
null
){
instance
=
new
IptvConfig
(
context
);
}
}
}
return
instance
;
}
public
static
String
getStbType
()
{
return
TestConfig
.
stbType
;
}
public
static
String
getSoftVersion
()
{
return
"1"
;
}
public
String
getAuthAddress
()
{
return
iptvConfigMap
.
get
(
IPTV_AUTH_URL
);
}
public
String
getBusinessUserId
()
{
return
iptvConfigMap
.
get
(
IPTV_ACCOUNT
);
}
public
String
getBusinessPasswd
()
{
return
iptvConfigMap
.
get
(
IPTV_PASSWORD
);
}
public
String
getStbID
()
{
return
iptvConfigMap
.
get
(
STB_ID
);
}
public
String
getValue
(
String
key
)
{
return
iptvConfigMap
.
get
(
key
);
}
public
String
getEPGGroupNMB
()
{
return
iptvConfigMap
.
get
(
EPG_GROUP_NMB
);
}
public
String
getUserGroupNMB
()
{
return
iptvConfigMap
.
get
(
USER_GROUP_NMB
);
}
public
String
getMac
()
{
return
iptvConfigMap
.
get
(
MAC
);
}
public
String
getIPTVState
()
{
return
iptvConfigMap
.
get
(
IPTV_STATE
);
}
public
String
getOttCp
()
{
return
iptvConfigMap
.
get
(
OT_TCP
);
}
}
app/src/main/java/com/topdraw/iptvlaunchertest/MainActivity.java
View file @
a3eb444
package
com
.
topdraw
.
iptvlaunchertest
;
import
android.Manifest
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.webkit.WebSettings
;
...
...
@@ -12,6 +13,9 @@ import androidx.core.graphics.Insets;
import
androidx.core.view.ViewCompat
;
import
androidx.core.view.WindowInsetsCompat
;
import
com.android.smart.terminal.iptv.aidl.ServiceCfg
;
import
com.topdraw.iptvlaunchertest.common.Authentication
;
public
class
MainActivity
extends
AppCompatActivity
{
private
WebView
webView
;
...
...
@@ -23,6 +27,7 @@ public class MainActivity extends AppCompatActivity {
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
startService
(
new
Intent
(
this
,
ServiceCfg
.
class
));
EdgeToEdge
.
enable
(
this
);
setContentView
(
R
.
layout
.
activity_main
);
ViewCompat
.
setOnApplyWindowInsetsListener
(
findViewById
(
R
.
id
.
main
),
(
v
,
insets
)
->
{
...
...
@@ -32,10 +37,10 @@ public class MainActivity extends AppCompatActivity {
});
webView
=
findViewById
(
R
.
id
.
webview
);
initWeb
();
initObject
();
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
M
)
{
requestPermissions
(
permissions
,
0
);
}
initObject
();
webView
.
loadUrl
(
TestConfig
.
homeUrl
);
}
...
...
@@ -51,6 +56,7 @@ public class MainActivity extends AppCompatActivity {
//注册接口
private
void
initObject
(){
webView
.
addJavascriptInterface
(
new
Authentication
(
MainActivity
.
this
),
"Authentication"
);
if
(
TestConfig
.
testDist
==
TestConfig
.
Skyworth
){
webView
.
addJavascriptInterface
(
new
com
.
topdraw
.
iptvlaunchertest
.
sky
.
STBAppManager
(
this
),
"STBAppManager"
);
}
else
if
(
TestConfig
.
testDist
==
TestConfig
.
FiberHome
){
...
...
app/src/main/java/com/topdraw/iptvlaunchertest/TestConfig.java
View file @
a3eb444
...
...
@@ -9,6 +9,11 @@ public class TestConfig {
//测试目标盒子
public
static
int
testDist
=
FiberHome
;
//测试平台
public
static
final
String
platform
=
"HUAWEI"
;
//"ZTE"
//设备名称
public
static
final
String
stbType
=
"IPTV-TEST"
;
//启动页地址
public
static
final
String
homeUrl
=
"http://1
39.196.145.150:8060/JsAppLaunch/JsAppStartUp
.html"
;
public
static
final
String
homeUrl
=
"http://1
72.23.51.26:8070/AppEngine/apps/startApp/jsview
.html"
;
}
...
...
app/src/main/java/com/topdraw/iptvlaunchertest/common/Authentication.java
0 → 100644
View file @
a3eb444
package
com
.
topdraw
.
iptvlaunchertest
.
common
;
import
android.content.Context
;
import
android.webkit.JavascriptInterface
;
import
com.topdraw.iptvlaunchertest.IptvConfig
;
import
java.util.HashMap
;
public
class
Authentication
{
private
static
final
HashMap
<
String
,
String
>
valueMap
=
new
HashMap
<>();
public
static
final
String
UserID
=
"UserID"
;
public
static
final
String
STBType
=
"STBType"
;
public
static
final
String
STBVersion
=
"STBVersion"
;
public
static
final
String
STBID
=
"STBID"
;
public
static
final
String
EPGDomain
=
"EPGDomain"
;
public
static
final
String
UserToken
=
"UserToken"
;
public
static
final
String
SessionID
=
"SessionID"
;
public
Authentication
(
Context
context
)
{
valueMap
.
put
(
UserID
,
IptvConfig
.
getInstance
(
context
).
getValue
(
IptvConfig
.
USER_ID
));
valueMap
.
put
(
STBType
,
IptvConfig
.
getStbType
());
valueMap
.
put
(
STBVersion
,
IptvConfig
.
getSoftVersion
());
valueMap
.
put
(
STBID
,
IptvConfig
.
getInstance
(
context
).
getStbID
());
valueMap
.
put
(
EPGDomain
,
IptvConfig
.
getInstance
(
context
).
getValue
(
"epgdomain"
));
valueMap
.
put
(
UserToken
,
IptvConfig
.
getInstance
(
context
).
getValue
(
"usertoken"
));
valueMap
.
put
(
SessionID
,
IptvConfig
.
getInstance
(
context
).
getValue
(
"sessionid"
));
}
@JavascriptInterface
public
String
CTCGetConfig
(
String
encryToken
){
return
valueMap
.
get
(
encryToken
);
}
@JavascriptInterface
public
String
CTCSetConfig
(
String
key
,
String
value
){
return
valueMap
.
put
(
key
,
value
);
}
}
app/src/main/java/com/topdraw/iptvlaunchertest/common/JsonReader.java
0 → 100644
View file @
a3eb444
package
com
.
topdraw
.
iptvlaunchertest
.
common
;
import
android.content.Context
;
import
android.content.res.AssetManager
;
import
org.json.JSONArray
;
import
org.json.JSONObject
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
public
class
JsonReader
{
public
static
JSONObject
readJsonFromAssets
(
Context
context
,
String
jsonFileName
)
{
AssetManager
assetManager
=
context
.
getAssets
();
JSONObject
jsonObject
=
null
;
try
(
InputStream
inputStream
=
assetManager
.
open
(
jsonFileName
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
inputStream
)))
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
stringBuilder
.
append
(
line
);
}
// 将 JSON 字符串转换为 JSONObject
jsonObject
=
new
JSONObject
(
stringBuilder
.
toString
());
}
catch
(
IOException
|
org
.
json
.
JSONException
e
)
{
e
.
printStackTrace
();
}
return
jsonObject
;
}
public
static
JSONArray
readJsonArrFromAssets
(
Context
context
,
String
jsonFileName
)
{
AssetManager
assetManager
=
context
.
getAssets
();
JSONArray
jsonArray
=
null
;
try
(
InputStream
inputStream
=
assetManager
.
open
(
jsonFileName
);
BufferedReader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
inputStream
)))
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
String
line
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
stringBuilder
.
append
(
line
);
}
// 将 JSON 字符串转换为 JSONObject
jsonArray
=
new
JSONArray
(
stringBuilder
.
toString
());
}
catch
(
IOException
|
org
.
json
.
JSONException
e
)
{
e
.
printStackTrace
();
}
return
jsonArray
;
}
}
Please
register
or
sign in
to post a comment