Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
286 commits
Select commit Hold shift + click to select a range
ac5986d
1.修改了按键编辑后的保存逻辑
WACrown Feb 20, 2024
489eb58
1.增加双击隐藏编辑界面的ui
WACrown Feb 20, 2024
8d79efd
1.增加鼠标按键
WACrown Feb 20, 2024
fbdec79
增加调整鼠标灵敏度功能
WACrown Feb 20, 2024
07df6c9
修复switch按键一直触发的bug
WACrown Feb 21, 2024
d215051
Merge remote-tracking branch 'kmreisi/back_menu'
Feb 21, 2024
9a73652
feat: add shortcuts
Feb 23, 2024
7c823bd
kpad只能设置键盘值
WACrown Feb 23, 2024
77b42b9
Merge branch 'moonlight-stream:master' into master
qiin2333 Feb 25, 2024
c007c6a
Merge branch 'moonlight-stream:master' into master
qiin2333 Feb 28, 2024
d476bfa
Update README.md
qiin2333 Feb 28, 2024
1dd21dd
Update README.md
qiin2333 Feb 28, 2024
b3168ee
优化pad的按键发送方式,重复的按键不再发送,减少带宽占用
WACrown Mar 1, 2024
55fb3b1
修改device windows的操作方式,现在可以指定显示哪些设备的windows
WACrown Mar 1, 2024
aef3a91
修复submodule HEAD不对的问题
WACrown Mar 1, 2024
f0511ba
Revert "修复submodule HEAD不对的问题"
WACrown Mar 1, 2024
d50144f
修复submodule的HEAD到5de4a5b
WACrown Mar 1, 2024
89cdf8b
merge master 1b1b100e63e to dev-new
WACrown Mar 1, 2024
89729db
1.编辑模式中,修复选中按钮会先选中下层按钮。
WACrown Mar 1, 2024
1401e51
暂时先屏蔽导出配置按钮,下一个版本再加上
WACrown Mar 1, 2024
13020e4
Merge remote-tracking branch 'upstream/master' into feat-combine
Mar 3, 2024
9ee75d8
feat: better performace monitor
Mar 4, 2024
4350ab8
feat: add options for request scaled resolution
Mar 7, 2024
b4e168d
Merge branch 'request-resolution' into feat-combine
Mar 7, 2024
92cb320
feat: better performace monitor
Mar 7, 2024
e388f57
Merge branch 'better-monitor' into feat-combine
Mar 7, 2024
46373e2
feat: add options for request scaled resolution
Mar 7, 2024
320fe59
feat: add options for request scaled resolution
Mar 7, 2024
4b625cd
feat: add options for request scaled resolution
Mar 7, 2024
855e6fc
feat: add options for request scaled resolution
Mar 7, 2024
398f72d
feat: add options for request scaled resolution
Mar 7, 2024
d3b8ffe
feat: add options for request scaled resolution
Mar 7, 2024
ed2972b
fix: resolution send fixed
Mar 7, 2024
3c7a7f9
Merge branch 'request-resolution' into feat-combine
Mar 7, 2024
7f22e60
fix: resolution send fixed
Mar 7, 2024
16305cf
Merge branch 'request-resolution' into feat-combine
Mar 7, 2024
1d1402a
feat: better performace monitor
Mar 8, 2024
88f431a
Merge branch 'better-monitor' into feat-combine
Mar 8, 2024
2e863b0
rename App
TrueZhuangJia Mar 18, 2024
285d628
Re-enable native multi-touch.
TrueZhuangJia Mar 18, 2024
67d26d0
feat: translate back menu
Apr 4, 2024
f402d51
Merge branch 'moonlight-stream:master' into master
qiin2333 Apr 4, 2024
1c3472c
Enhanced touch with manipulated pointer coordinates, and long press j…
TrueZhuangJia May 6, 2024
3452365
Add multi-finger tap to toggle Android on-screen keyboard
TrueZhuangJia May 6, 2024
9bbba77
Improve multi-finger tap in native touch (invoking keyboard toggle), …
TrueZhuangJia May 7, 2024
0ec9ed0
Cancel multiFingerTapChecker in ACTION_UP
TrueZhuangJia May 8, 2024
4b5a21e
Merge branch 'branchForUpdate' into Moonlight-TZJ-EnhancedTouch
TrueZhuangJia May 8, 2024
d40223f
Resolve conflicts
TrueZhuangJia May 8, 2024
d065e6e
Update README.md
TrueZhuangJia May 9, 2024
1ca6d02
Update README.md
TrueZhuangJia May 9, 2024
af0aea4
Refactor NativeTouchHandler to NativeTouchContext
TrueZhuangJia May 11, 2024
8ce5b1f
Use Map instead of ArrayList to store NativeTouchContext.Pointer inst…
TrueZhuangJia May 11, 2024
f72d5a8
Update README.md
TrueZhuangJia May 12, 2024
0789afa
all NativeTouchContext related codes switched ON/OFF by prefConfig.en…
TrueZhuangJia May 12, 2024
b60fec9
Cancel fixed X(horizontal) velocity, since it deosn't make much sense.
TrueZhuangJia May 12, 2024
e679c65
Merge branch 'NativeTouchContext.Pointer_Map' into Moonlight-TZJ-Enha…
TrueZhuangJia May 12, 2024
7bf05bc
Set max pointer velocity factor to 500%, for better view rotation twe…
TrueZhuangJia May 14, 2024
626472a
feat: up to 800m bitrate
May 15, 2024
dc934aa
增加键盘stick,优化键盘pad的代码,为手柄pad做铺垫
WACrown Jun 4, 2024
7be1754
优化按键触发逻辑;所有按键都可以设置成键盘、鼠标和手柄的按键;增加手柄的相关逻辑;增加手柄摇杆
WACrown Jun 5, 2024
f02dd50
增加手柄按键
WACrown Jun 7, 2024
0bfdb4c
增加设置中导入导出功能
WACrown Jun 14, 2024
a090aa6
增加按钮透明度设置
WACrown Jun 14, 2024
2df5f56
修复在键盘打开的时候,将键盘设置为不可见,导致键盘无法关闭的bug
WACrown Jun 14, 2024
00f785f
Merge remote-tracking branch 'TZJ/Moonlight-TZJ-EnhancedTouch' into f…
Jun 21, 2024
68c57fa
Set max pointer velocity factor to 500%, for better view rotation twe…
TrueZhuangJia May 14, 2024
606b0d6
feat: add ime switch
Jun 27, 2024
c65802e
修复平板设备不能选中按键的bug
WACrown Jun 29, 2024
84f81d4
Merge remote-tracking branch 'wg/dev-master' into feat-combine
Jun 29, 2024
2999d9e
add function:1.enable/disable touch;2.change touch mode
WACrown Jul 1, 2024
59ae35d
feat: 优化性能数据显示
Jul 1, 2024
bbcf07d
fix bug:fixed keyboard win key not working
WACrown Jul 1, 2024
1663400
change:The name of the element can be in Chinese characters;update da…
WACrown Jul 2, 2024
0c9de79
change:The name of the config can be in Chinese characters;
WACrown Jul 2, 2024
37369e5
Merge remote-tracking branch 'wg/dev-master' into feat-combine
Jul 5, 2024
68ad98b
refactor: build up
Jul 5, 2024
fb40b4d
feat: 增加主机键盘捷径
Jul 9, 2024
e65b9f3
feat: app commands
Jul 24, 2024
9fc7300
feat: game menu 增加一键退出串流
Aug 13, 2024
bc14ef5
feat: add prefer use vdd option
Sep 18, 2024
d69216e
Merge remote-tracking branch 'custom-res/master' into feat-combine
qiin2333 Sep 18, 2024
86e7cc7
Ui美化
qiin2333 Sep 20, 2024
7734328
列表页美化
qiin2333 Sep 27, 2024
db0c683
fix: 超窄屏的列表布局
qiin2333 Sep 30, 2024
eccc91c
四大金刚键移到游戏菜单中
qiin2333 Oct 16, 2024
740519d
feat: app顺序跟随sunshine设置
qiin2333 Oct 18, 2024
df81b5c
Merge branch 'dev-master' of https://github.com/WACrown/moonlight-and…
qiin2333 Oct 22, 2024
f4e2e86
Merge branch 'dev-master' of https://github.com/WACrown/moonlight-and…
qiin2333 Oct 25, 2024
3e0f8de
Merge branch 'moonlight-stream:master' into master
qiin2333 Oct 25, 2024
47f4965
Merge branch 'master' into x-wg
qiin2333 Oct 25, 2024
1f212c3
Merge branch 'master' into x-wg
qiin2333 Oct 25, 2024
3a4583c
默认分辨率改为1080P
qiin2333 Oct 27, 2024
eb7f8ae
特性:组按键已添加全部按键,完成子按键属性跟随,非编辑模式下移动等基本功能
qiin2333 Oct 27, 2024
e35d63d
优化:组按键与子按键一起移动卡顿问题
WACrown Oct 28, 2024
bd49ad7
修复:修复了一些组按键移动边界问题
WACrown Oct 28, 2024
03e4d88
特性:完善组按键的删除功能
WACrown Oct 28, 2024
9671b05
特性:digital common button增加搓按键功能
WACrown Oct 28, 2024
086cc61
特性:增加数字小键盘和鼠标滚轮
WACrown Oct 28, 2024
66333ec
修复:键盘横向填满屏幕
WACrown Oct 29, 2024
950b2dd
修复:V1版本的按键存档导入V2版本中组合键的问题
WACrown Oct 29, 2024
a4e3d49
修复:摇杆按键触发错误的bug
WACrown Oct 30, 2024
3be609f
修复:按键隐藏后还会被触发的bug
WACrown Oct 31, 2024
65d1c79
优化:组按键移动卡顿
WACrown Oct 31, 2024
4a2b105
修复:不同设备之间导入导出配置时,有按钮超出屏幕
WACrown Nov 1, 2024
e9c2f86
特性:增加调整层级
WACrown Nov 5, 2024
5c277a0
优化:优化代码结构
WACrown Nov 5, 2024
7c67c02
特性:增加合并存档功能
qiin2333 Nov 7, 2024
6677832
特性:正常模式下,长按才能拖动组按键
WACrown Nov 5, 2024
6943ade
特性:添加编辑网格
WACrown Nov 6, 2024
0952cfe
优化:优化组按键边界代码
WACrown Nov 6, 2024
309e343
优化:优化文字大小
WACrown Nov 7, 2024
9102daf
优化:按键重叠时,搓按键不会同时触发
WACrown Nov 7, 2024
a6f557e
优化:组按键属性跟随分为位置跟随和其他跟随
WACrown Nov 7, 2024
e4ec39b
特性:将一些功能加入到按键值中
WACrown Nov 7, 2024
8603376
feat: 增加nvhttp携带信息
qiin2333 Nov 12, 2024
359f932
feat: 涩图保存
qiin2333 Nov 27, 2024
4fd546b
feat: 增加一些解锁帧率
qiin2333 Dec 10, 2024
017d036
优化:重构superpage的逻辑
WACrown Nov 22, 2024
929a3e0
特性:通过点击来选择组按键的子按键
WACrown Nov 25, 2024
1af3597
特性:添加游戏震动和按键震动
WACrown Nov 26, 2024
91abe9c
特性:修改图标
WACrown Nov 26, 2024
d6ebae6
优化:修复有些设备按键不能移动到边缘的bug
WACrown Nov 26, 2024
8d90fb2
优化:修复有些设备按键不能移动到边缘的bug(2)
WACrown Nov 28, 2024
aac5c0e
fix: 某些语言系统监控信息闪退问题
qiin2333 Dec 21, 2024
e54db56
增加常驻完全退出串流按钮
qiin2333 Jan 19, 2025
c8c96b2
feat: 背景API定制
qiin2333 Jan 19, 2025
2dbdea9
feat: 实现多场景预设切换能力
qiin2333 Feb 23, 2025
9518e6b
Merge pull request #9 from qiin2333/feat-multi-scene
qiin2333 Feb 23, 2025
cacc390
feat: 实现多场景预设切换能力
qiin2333 Feb 25, 2025
b8d28b4
Merge branch 'feat-multi-scene' into x-wg
qiin2333 Feb 25, 2025
21a6c93
feat: 串流画面位置调整能力
qiin2333 Mar 28, 2025
01c012d
feat: 码率非线性调整
qiin2333 Apr 3, 2025
e46ae81
feat(ui): 主机选中态强化
qiin2333 Apr 7, 2025
2b1df61
Merge branch 'x-wg'
qiin2333 Apr 7, 2025
057dbf6
merge x-wg (#18)
qiin2333 Jul 6, 2025
d5daa97
feat: 支持sunshine端修改客户端配对名字
qiin2333 Jul 17, 2025
7e75599
feat: Implementi mic redirection (#20)
qiin2333 Jul 29, 2025
ccdb6f4
fix: 增强式多点触摸下触控笔正常操作
qiin2333 Jul 29, 2025
837e576
fix: 优化麦克风延迟
qiin2333 Jul 31, 2025
514c603
refactor: 重构游戏菜单添加麦克风按钮控制
qiin2333 Aug 5, 2025
9734448
refactor: 统一dialog风格
qiin2333 Aug 7, 2025
9ae509b
refactor: 重构串流等待页面
qiin2333 Aug 7, 2025
3aad865
feat: 优化自定义分辨率编辑
qiin2333 Aug 8, 2025
eae5e58
feat: 更好的融合王冠功能
qiin2333 Aug 13, 2025
c00fb26
feat: 增加实时码率调整功能 (#22)
qiin2333 Aug 20, 2025
1aa156a
添加切换触控菜单,可切换为触控板模式 (#23)
cjcxj Aug 20, 2025
4ac97f9
发送特殊按键可添加自定义按键,菜单项过多时,菜单项显示不完全,不能垂直滑动的问题 (#24)
cjcxj Aug 21, 2025
8970ba6
feat: 优先使用AV1 codec (#28)
qiin2333 Aug 27, 2025
035711d
feat: 减少码率调整路径 (#30)
qiin2333 Aug 27, 2025
95f05ac
feat(game-menu): 增强自定义按键 (#31)
cjcxj Aug 28, 2025
b518f89
feat (gamemenu): 支持控制器调整码率 (#32)
qiin2333 Aug 28, 2025
a49f178
Update README.md
qiin2333 Aug 29, 2025
b6d1f8b
fix: app列表特定情况下顺序错乱 (#33)
qiin2333 Aug 29, 2025
cc28227
fix: 选择自动编码器时 当服务端不支持AV1, 客户端会错误的回退到AVC而不是HEVC
qiin2333 Aug 30, 2025
4805387
feat: add update checker
qiin2333 Aug 30, 2025
f0bf01a
feat: DS5与NSpro控制器的驱动支持
qiin2333 Aug 30, 2025
3e8a444
feat(game): 添加王冠功能配置和虚拟按键显隐功能 (#34)
cjcxj Aug 30, 2025
7afa228
build: 打包v12.3
qiin2333 Aug 31, 2025
88091bb
build: add github actions
qiin2333 Aug 31, 2025
72ac3ba
feat: add gyro control card
qiin2333 Aug 31, 2025
dc797f9
feat: 允许配置菜单卡片
qiin2333 Aug 31, 2025
5a169c3
fix: ci yaml
qiin2333 Aug 31, 2025
2264460
feat: 使用代理检查更新 (#35)
qiin2333 Aug 31, 2025
775eab2
build: 增加 tag 发布
qiin2333 Sep 1, 2025
8b2eb5d
feat(WheelPad): 新增轮盘按键功能 (#36)
cjcxj Sep 1, 2025
b5aea19
fix: gyro模拟摇杆调教 (#37)
qiin2333 Sep 1, 2025
062fb1a
chore: app about
qiin2333 Sep 2, 2025
f99b352
优化王冠功能配置逻辑,轮盘按钮添加组合按键 (#39)
cjcxj Sep 2, 2025
bbbd66e
Update README.md [skip ci]
qiin2333 Sep 2, 2025
0932965
build: bump version to 12.3.3 (#40)
qiin2333 Sep 4, 2025
400fed4
chore: 保存偏好&补全一些翻译
qiin2333 Sep 6, 2025
5e2a058
feat(binding): 王冠按键颜色设置支持颜色选择器 (#41)
cjcxj Sep 6, 2025
c77a9cc
feat: 外接模式下信息位置变化防止烧屏 (#42)
qiin2333 Sep 7, 2025
0e74c7c
feat: 虚拟控制器也可以使用体感助手
qiin2333 Sep 8, 2025
137b974
王冠功能添加虚拟鼠标滚轮按住功能 (#44)
cjcxj Sep 9, 2025
5719b38
fix: 外接屏幕指针错位
qiin2333 Sep 10, 2025
ae1d1eb
王冠功能更新 (#47)
cjcxj Sep 15, 2025
a339f9a
feat: 添加多地址主机支持与地址选择功能 (#49)
qiin2333 Sep 15, 2025
24a6aaf
fix: 串流中使用选择的地址
qiin2333 Sep 15, 2025
62cd793
轮盘按键可添加组按键,修复错误 (#51)
cjcxj Sep 15, 2025
7860278
fix(input): 修复了轮盘不能添加手柄按键的错误。在没有默认开启王冠模式下,在菜单开启王冠模式后立马调整卡片会闪退的错误 (#52)
cjcxj Sep 16, 2025
c3235fd
fix: 右键菜单恢复串流也带入app信息
qiin2333 Sep 16, 2025
da07d53
Feat:无障碍捕获外接键盘事件 (#54)
cjcxj Sep 19, 2025
9e5fc8f
fix: 性能覆盖的HDR状态不够准确
qiin2333 Sep 19, 2025
4781ffa
build: bump ver 12.3.7
qiin2333 Sep 19, 2025
b36df78
chore: 补充一些翻译
qiin2333 Sep 21, 2025
5ffcbed
fix: 某些解码器信息展示过长
qiin2333 Sep 22, 2025
0e5534e
chore: 增加一些小课堂文案
qiin2333 Sep 22, 2025
61a6961
Feat:虚拟按键可更改字体属性 (#56)
cjcxj Sep 22, 2025
6ca45b4
build: bump ver 12.3.8
qiin2333 Sep 24, 2025
0235b02
fix: 多地址选择支持控制器操作
qiin2333 Sep 28, 2025
f19c048
feat: Complete Spanish translation - Add 223 missing Spanish string t…
qiin2333 Sep 28, 2025
f44ec00
组按键,普通按键,性能监控,轮盘按键,编辑模式,断开连接后锁定屏幕 (#60)
cjcxj Oct 2, 2025
df28fd1
feat: 创建快捷方式的图标裁剪优化 (#61)
qiin2333 Oct 2, 2025
5269f0b
fix: android Q的tv不额外添加视图边距
qiin2333 Oct 3, 2025
a1242b0
feat: 可以使用上一次设置启动对应APP (#63)
qiin2333 Oct 7, 2025
23c941b
build: bump version 12.3.10
qiin2333 Oct 7, 2025
c4380a2
feat: Add frame pacing mode - Surface Flinger
qiin2333 Oct 8, 2025
e7e4f89
fix: 精确时间控制SF
qiin2333 Oct 9, 2025
6d52598
feat: 添加空间音频支持 (Android 13+)
qiin2333 Oct 10, 2025
8485dbf
feat: 主机页面可以一键恢复上次会话 (#65)
qiin2333 Oct 12, 2025
98ad0a4
feat: 麦克风支持回音消除 (#64)
qiin2333 Oct 12, 2025
f6fdb65
build: bump version 12.3.12
qiin2333 Oct 17, 2025
3e69625
feat & fix: 在串流视频显示和虚拟控制器上的一些优化改进 (#68)
chenx-dust Oct 20, 2025
4714ca5
fix: app列表过多时可能定位错误的问题 (#72)
qiin2333 Oct 22, 2025
e764a0a
feat: 提供 STUN 的开关 (#71)
chenx-dust Oct 22, 2025
aa3a374
fix: 一键恢复会话支持查找多个主机
qiin2333 Oct 24, 2025
8f0f6fe
chore: pcview 翻译补全
qiin2333 Oct 25, 2025
e226672
build: bump version 12.3.13
qiin2333 Oct 29, 2025
5d3b78d
fix(hdr): notify system HDR state on Android Q+ and correct setColorM…
qiin2333 Oct 29, 2025
d767ac2
集成EasyTier (#76)
cjcxj Oct 30, 2025
32a46e7
feat: 退出按钮提供选项:仅断开连接而不退出应用 (#77)
ShadowLemoon Oct 30, 2025
56cac7b
fix: 解决许多系统不支持GameManager导致启动闪退问题 (#81)
Yundi339 Nov 5, 2025
80912dc
feature: GAME MUNE适配竖屏 (#83)
cjcxj Nov 5, 2025
b631588
build: bump version 12.3.15
Yundi339 Nov 5, 2025
166e769
fix: 快速配置应用提示失败
qiin2333 Nov 8, 2025
66c5d34
feat: 在AppView左上角添加设置按钮 (#84)
ShadowLemoon Nov 16, 2025
404a310
添加显示隐藏远程光标选项,优化easytier配置保存 (#88)
cjcxj Nov 20, 2025
300ce13
性能监控添加固定模式,王冠添加打开游戏菜单按键 (#89)
cjcxj Nov 22, 2025
53910c0
fix: 优化AppView UI并修复地址选择对话框管理 (#91)
qiin2333 Nov 25, 2025
ad77375
Update version badge to 12.4.2
qiin2333 Nov 25, 2025
ce7574e
fix: 本地鼠标指针模式匹配本机与外接显示屏分辨率 (#95)
SionInory Dec 6, 2025
0235617
feat: 添加本地鼠标模式预设功能,支持无触摸屏设备默认使用本地鼠标指针 (#105)
qiin2333 Dec 10, 2025
b4a9812
feat: 添加麦克风图标颜色配置功能 (#106)
Yundi339 Dec 11, 2025
6b57e39
Feat:设置导航栏增加展开和缩小按钮 (#107)
Yundi339 Dec 11, 2025
fbfc732
fix: 优化设置码率的线性逻辑 (#110)
Yundi339 Dec 11, 2025
f8a822d
feat: 设置码率添加控件加减号 (#111)
Yundi339 Dec 11, 2025
7b33326
feat: send brightness range to host
qiin2333 Dec 12, 2025
53531d2
feat: 添加控制流only模式支持并修复时间单位问题
qiin2333 Dec 15, 2025
4d9e600
fix: 旋转屏幕焦点框错位
qiin2333 Dec 15, 2025
50d58b5
build: bump version 12.4.7
qiin2333 Dec 15, 2025
f3fdba9
fix: 对齐时间单位
qiin2333 Dec 16, 2025
6ead46e
Add perf battery 性能图层增加 电池电量展示 (#117)
devh0407 Dec 17, 2025
ff09022
feat: 实现多屏幕选择串流
qiin2333 Dec 17, 2025
19097b2
feat: 客户端可设置屏幕组合策略
Dec 18, 2025
f43b144
fix: strings
qiin2333 Dec 18, 2025
f3fe0d1
feat(game-menu):为特殊按键添加卡片功能
cjcxj Nov 26, 2025
c7f6e1a
feat(settings): 添加可选择本地图片为背景
cjcxj Nov 27, 2025
f6e5212
feat(input): 触摸板模式添加本地光标渲染功能支持
cjcxj Nov 28, 2025
b96a59b
feat(cursor): 实现多类型光标支持与网络同步功能
cjcxj Nov 29, 2025
afc5c4a
feat(game): 外接鼠标光标同步远程光标更改
cjcxj Dec 1, 2025
a64aaee
feat(vpn): 激活 IPv6 协议栈以支持双栈通信
cjcxj Dec 1, 2025
eb01e82
feat(stream): 添加自动恢复串流功能
cjcxj Dec 2, 2025
ee0ed04
fix(game): 调整本地光标渲染逻辑与配置默认值
cjcxj Dec 2, 2025
dc0b588
feat(game): 优化自动恢复串流功能逻辑
cjcxj Dec 3, 2025
d88ba9a
fix(game): 修复本地光标渲染逻辑
cjcxj Dec 11, 2025
0b3cf29
fix(game): 优化后台恢复逻辑以支持更多场景
cjcxj Dec 11, 2025
0ed8bf5
feat(performance): 添加时钟显示功能到性能页面
cjcxj Dec 11, 2025
faa317c
fix(PcView): 修复背景图片刷新接收器注册问题
cjcxj Dec 1, 2025
02582b0
Merge branch 'master' into feat/display-select
qiin2333 Dec 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
210 changes: 210 additions & 0 deletions .github/workflows/android-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: Android CI

on:
pull_request:
branches:
- master
types:
- opened
- synchronize
- reopened
push:
branches:
- master
tags: [ 'v*' ]
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: write
packages: write

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
fetch-tags: true

- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'

- name: Set up Android SDK/NDK
uses: android-actions/setup-android@v3
with:
packages: platform-tools platforms;android-34 build-tools;34.0.0 ndk;27.0.12077973

- name: Accept Android licenses
run: yes | sdkmanager --licenses > /dev/null

- name: Remove local.properties (if present)
run: rm -f local.properties

- name: Create google-services.json from secrets
shell: bash
run: |
if [ -n "${{ secrets.GOOGLE_SERVICES_JSON }}" ]; then
mkdir -p app
# 清理并验证 JSON 格式
echo '${{ secrets.GOOGLE_SERVICES_JSON }}' | tr -d '\r' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' > app/google-services.json
# 验证 JSON 格式
if python3 -m json.tool app/google-services.json > /dev/null 2>&1; then
echo "Created valid google-services.json from secrets"
else
echo "ERROR: Invalid JSON format in GOOGLE_SERVICES_JSON secret"
exit 1
fi
else
echo "GOOGLE_SERVICES_JSON not set; skipping file creation"
fi

- name: Grant execute permission for Gradle
run: chmod +x gradlew

- name: Get version from tag
if: startsWith(github.ref, 'refs/tags/')
run: |
VERSION=${GITHUB_REF#refs/tags/}
VERSION=${VERSION#v}
echo "VERSION_NAME=$VERSION" >> $GITHUB_ENV
echo "Using version from tag: $VERSION"

- name: Update version in build.gradle
if: startsWith(github.ref, 'refs/tags/')
run: |
VERSION=${GITHUB_REF#refs/tags/}
# 移除版本号前缀 'v' 如果存在
VERSION=${VERSION#v}
echo "Updating version to: $VERSION"

# 读取当前 versionCode 并递增
CURRENT_VERSION_CODE=$(grep -o 'versionCode = [0-9]*' app/build.gradle | grep -o '[0-9]*')
NEW_VERSION_CODE=$((CURRENT_VERSION_CODE + 1))

# 更新 versionName
sed -i "s/versionName \".*\"/versionName \"$VERSION\"/" app/build.gradle

# 更新 versionCode
sed -i "s/versionCode = [0-9]*/versionCode = $NEW_VERSION_CODE/" app/build.gradle

echo "Updated versionName to: $VERSION"
echo "Updated versionCode from $CURRENT_VERSION_CODE to $NEW_VERSION_CODE"

- name: Build NonRoot Debug APK
run: ./gradlew :app:assembleNonRootDebug --no-daemon --stacktrace

- name: Upload APK artifact
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: app-nonroot-debug-apk
path: |
app/build/outputs/apk/nonRoot/debug/*.apk

# ===== Release (Signed) Build (tags only) =====
- name: Decode keystore for Release
if: startsWith(github.ref, 'refs/tags/')
shell: bash
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
run: |
echo "$KEYSTORE_BASE64" | base64 -d > my-release.keystore
ls -l my-release.keystore

- name: Build signed NonRoot Release APK
if: startsWith(github.ref, 'refs/tags/')
env:
KEYSTORE_PATH: ${{ github.workspace }}/my-release.keystore
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: ./gradlew :app:assembleNonRootRelease --no-daemon --stacktrace

- name: Rename Release APK to Moonlight.V+.<version>.apk
if: startsWith(github.ref, 'refs/tags/')
shell: bash
run: |
set -e
REL_DIR=app/build/outputs/apk/nonRoot/release
# 优先使用 tag 版本号,否则从 metadata 读取
if [ -n "$VERSION_NAME" ]; then
VERSION="$VERSION_NAME"
echo "Using tag version: $VERSION"
else
VERSION=$(python3 -c "import json; data=json.load(open('$REL_DIR/output-metadata.json')); print(data['elements'][0]['versionName'])")
echo "Using metadata version: $VERSION"
fi
SRC_APK=$(ls "$REL_DIR"/*.apk | head -n 1)
DEST="$REL_DIR/Moonlight.V+.${VERSION}.apk"
mv "$SRC_APK" "$DEST"
echo "Renamed APK to: $DEST"
echo "REL_APK=$DEST" >> $GITHUB_ENV

- name: Generate cute release notes
if: startsWith(github.ref, 'refs/tags/')
shell: bash
run: |
set -e
DATE=$(date +'%Y-%m-%d')
V="${VERSION_NAME:-${GITHUB_REF#refs/tags/}}"; V="${V#v}"
CUR_TAG="${GITHUB_REF#refs/tags/}"
PREV_TAG=$(git tag --sort=-creatordate | sed -n '2p' || true)
if [ -n "$PREV_TAG" ]; then
CHANGES=$(git log --pretty=format:'- %s (%h)' "${PREV_TAG}..${CUR_TAG}" || true)
else
CHANGES=$(git log --pretty=format:'- %s (%h)' -n 100 || true)
fi
[ -z "$CHANGES" ] && CHANGES="- 初始发布"
cat > release_notes.md << EOF
## 🌙 Moonlight V+ ${V}

感谢你使用 Moonlight V+!如果喜欢,记得点亮一颗 ⭐~

### ✨ 更新内容
${CHANGES}

### 📦 下载
- APK 文件:Moonlight.V+.${V}.apk

### 🧭 另外
- 如遇到问题,请在 Issues 反馈。祝你游戏顺利、低延迟满帧!🎮

—— 发布于 ${DATE}
EOF

- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ github.ref_name }}
name: ${{ env.VERSION_NAME != '' && env.VERSION_NAME || github.ref_name }}
draft: false
prerelease: ${{ contains(github.ref_name, '-rc') || contains(github.ref_name, '-beta') }}
body_path: release_notes.md
files: |
${{ env.REL_APK }}
app/build/outputs/mapping/nonRootRelease/mapping.txt
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload Release APK and mapping
if: startsWith(github.ref, 'refs/tags/')
uses: actions/upload-artifact@v4
with:
name: app-nonroot-release-signed
path: |
app/build/outputs/apk/nonRoot/release/Moonlight.V+.*.apk
app/build/outputs/mapping/nonRootRelease/mapping.txt

8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ out/
bin/
gen/

# Local configuration file (sdk path, etc)
# Local configurationItem file (sdk path, etc)
local.properties

# Windows thumbnail db
Expand All @@ -41,4 +41,8 @@ build/
app/.externalNativeBuild/

# NDK stuff
.cxx/
.cxx/
app/src/main/jni/moonlight-core/Build.txt
app/src/main/jni/moonlight-core/build-openssl.sh
.vscode/
app/google-services.json
3 changes: 2 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
[submodule "app/src/main/jni/moonlight-core/moonlight-common-c"]
path = app/src/main/jni/moonlight-core/moonlight-common-c
url = https://github.com/moonlight-stream/moonlight-common-c.git
url = https://github.com/qiin2333/moonlight-common-c.git
branch = mic
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"java.configuration.updateBuildConfiguration": "interactive",
"commentTranslate.targetLanguage": "zh-CN"
}
120 changes: 120 additions & 0 deletions PRIVACY_POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# Moonlight Android 增强版隐私政策

## 概述

本隐私政策适用于 Moonlight Android 增强版应用(以下简称"本应用")。本应用基于开源的 Moonlight 项目开发,并增加了统计分析功能以改善用户体验。

> **注意**:本应用基于 [Moonlight](https://moonlight-stream.org/) 项目开发,您可以查看 [Moonlight 官方隐私政策](https://moonlight-stream.org/privacy.html) 了解更多信息。

## 数据收集

### 1. 统计分析数据

本应用集成了 Firebase Analytics 服务来收集匿名使用统计数据,包括:

#### 应用使用统计
- **应用启动次数**:记录应用被启动的次数
- **使用时长**:记录每次应用会话的持续时间
- **会话信息**:记录应用进入前台和后台的时间

#### 游戏流媒体统计
- **流媒体时长**:记录每次游戏流媒体的持续时间
- **电脑信息**:记录连接的电脑名称(仅用于统计,不包含个人身份信息)
- **应用信息**:记录启动的游戏应用名称(仅用于统计,不包含个人身份信息)

#### 设备信息统计
- **设备基本信息**:设备制造商、型号、Android版本等(用于兼容性分析)
- **SOC信息**:处理器制造商和型号(用于性能优化和兼容性分析)
- **硬件信息**:CPU核心数、内存大小、GPU类型等(用于性能分析)
- **网络信息**:网络类型和连接状态(用于网络优化)

### 2. 数据匿名化

所有收集的统计数据都是完全匿名的:
- 不收集个人身份信息(如姓名、邮箱、电话号码等)
- 不收集设备唯一标识符
- 不收集用户行为轨迹
- 数据仅用于统计分析,不会用于其他目的

### 3. 数据收集频率

- **设备信息**:仅在应用首次启动或设备信息发生变化时收集,避免频繁上报
- **使用统计**:每次应用启动和关闭时记录
- **流媒体统计**:每次游戏流媒体开始和结束时记录

### 4. 第三方服务

#### Firebase Analytics
- **服务提供商**:Google LLC
- **用途**:应用使用统计和分析
- **数据存储**:数据存储在 Google 的服务器上
- **隐私政策**:[Firebase 隐私政策](https://firebase.google.com/support/privacy)

## 数据使用

收集的统计数据仅用于:
- 了解应用使用情况
- 改善用户体验
- 优化应用性能
- 识别最受欢迎的功能

## 数据保护

### 1. 数据安全
- 所有数据传输都使用加密协议
- 数据存储在安全的云服务器上
- 定期审查数据安全措施

### 2. 数据保留
- 统计数据保留期限为 26 个月
- 用户可以随时删除其数据
- 应用卸载后,相关数据将被自动删除

## 用户权利

### 1. 数据控制
- 用户可以通过 Android 系统设置禁用应用的数据收集
- 用户可以在应用设置中选择退出统计分析
- 用户可以要求删除其数据

### 2. 透明度
- 本隐私政策公开说明所有数据收集活动
- 用户可以随时查看本隐私政策
- 如有重大变更,将通知用户

## 儿童隐私

本应用不专门针对 13 岁以下儿童设计,也不会故意收集 13 岁以下儿童的个人信息。如果发现收集了儿童信息,将立即删除。

## 国际数据传输

数据可能传输到美国等其他国家进行处理。我们确保所有数据传输都符合适用的数据保护法律。

## 隐私政策更新

我们可能会不时更新本隐私政策。重大变更将通过以下方式通知用户:
- 应用内通知
- 更新应用时在应用商店中说明
- 在本页面发布更新

## 联系我们

如果您对本隐私政策有任何疑问或建议,请通过以下方式联系我们:

- **GitHub Issues**:[项目 Issues 页面](https://github.com/qiin2333/moonlight-android/issues)
- **邮箱**:通过 GitHub 项目页面联系

## 相关链接

- **Moonlight 官方隐私政策**:[https://moonlight-stream.org/privacy.html](https://moonlight-stream.org/privacy.html)
- **Firebase 隐私政策**:[https://firebase.google.com/support/privacy](https://firebase.google.com/support/privacy)

## 法律声明

本隐私政策受中华人民共和国法律管辖。如有争议,应通过友好协商解决。

---

**最后更新时间**:2025年9月

**版本**:1.0.1
Loading