各位佬好, 有没有遇见坚果投影仪+moonlight 没有办法调整分辨率的

205 天前
 codingKingKong

各位大佬, 我在用坚果投影仪, 在上面安装了 moonlight, 打开之后调整分辨率时, 发现 moonlight 的弹窗在投影仪的系统上显示不全, 有没有什么方法能设置分辨率啊?

期待大佬和厂家的技术大佬…

1368 次点击
所在节点    问与答
10 条回复
boser1u
205 天前
插鼠标试试
codingKingKong
205 天前
@boser1u 试过了, 在点击分辨率设置之后, 那个弹窗渲染不全, 只有标题和关闭按钮, 没有选择分辨率的那些 radio;
muyi
205 天前
codingKingKong
205 天前
@muyi 还没有, 中午回去试试, 正在考虑重新打包 moonlight, 把默认分辨率的值改了, 对 android 不太熟悉, 得边做边学; 还有个思路是, 能不能通过找到配置存储的文件或者 adb, 直接修改存储的配置值, 因为坚果的系统开通了 adb 功能
codingKingKong
205 天前
@muyi 试了, 不行; 修改版没有修改设置菜单的实现方式, 调出来的弹窗还是系统级的那个;
muyi
205 天前
@codingKingKong #5 看到贴吧有人曾经改了代码的默认分辨率重新打包 apk ,但是 APP 其他菜单选项卡都为空,后续使用还有很多问题。那估计就是 UI 不兼容,试试阿西西的这个版本,它这个默认 UI 是全新的
https://github.com/Axixi2233/moonlight-android/releases
codingKingKong
205 天前
@muyi 我修改完了, 重新打了个包, debug 版本在模拟器上运行正常, release 版本安装失败, 可能是涉及到证书配置;
我打算晚上试试打包的版本是不是能正常运行, 不行的话, 我再试试 axixi 这个版本的;
ice000
205 天前
连上 adb ,修改投影仪的 wm size 试试
codingKingKong
205 天前
@muyi @ice000 用改默认值的方案解决了, 算是满足了我的需求, 短时间内不再计划折腾了;

另外我看了一下代码+Gemini 给的提示, moonlight 使用了<ListPreference>这个组件, 它会把选择的值存储在 SharedPreferences 中, 如果想要通过 adb 修改的话, 可以尝试:
```shell
adb shell
run-as com.limelight cat /data/data/com.limelight/shared_prefs/com.limelight_preferences.xml # 可选,但推荐
settings put global list_resolution "1920x1080"
am force-stop com.limelight
am start -n com.limelight/.MainActivity
exit
```
缺点应该是卸载就没有了, 需要重新设置;

另外上面的两个方案都是临时解决方案, 我猜测底层还是坚果魔改的系统对<ListPreference>兼容不好, 但我不是 android 开发, 所以纯属猜测; 从源码上看<com.limelight.preferences.SeekBarPreference>这个 moonlight 自定义的组件反而能正常显示, 所以自己写一个自定义的 list 类组件应该也可以; 或者尝试 @muyi 提供的三方 moonlight(qiin2333 这个试过了, 不行; axixi2333 的没有尝试;)
codingKingKong
205 天前
更新一下,
```shell
settings put global list_resolution "1920x1080"
am force-stop com.limelight
am start -n com.limelight/.MainActivity
exit
```
上述代码经测试不可用, moonlight 读取的不是这里的变量, 它读取的是 SharedPreferences 中的内容, 本质上是:
/data/data/com.limelight.debug/shared_prefs/com.limelight.debug_preferences.xml
这个文件里的内容;

我尝试使用如下 adb 命令更改 SharedPreferences, 但是失败了:
```shell
run-as com.limelight
app_process /system/bin --nice-name=sharedprefs com.android.shell settings get persistent com.limelight com.limelight.preferences list_resolution
app_process /system/bin --nice-name=sharedprefs com.android.shell settings put persistent com.limelight com.limelight.preferences list_resolution "1920x1080"
app_process /system/bin --nice-name=sharedprefs com.android.shell settings get persistent com.limelight com.limelight.preferences list_resolution
```
得到的错误是: Aborted

/data/data/com.limelight.debug/shared_prefs/com.limelight.debug_preferences.xml
这个文件不确定是否需要 root 才可以更改, 亦或者有对应的 api 我不知道;
如果有大佬对这个感兴趣, 尝试出了结果, 麻烦 @我一下, 谢谢;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1111088

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX