安卓电视盒子由于某种原因停止了应用程序
Posted
技术标签:
【中文标题】安卓电视盒子由于某种原因停止了应用程序【英文标题】:Android TV box stops the application for some reason 【发布时间】:2020-05-01 09:36:00 【问题描述】:我有一个媒体播放器应用程序。
在我的手机上,播放器很稳定,可以按预期工作。
但是在安卓电视盒上,它会在一段时间后停止。 (瑞芯微电视盒 Android 8.1.0 API 25)
我已经搜索到我需要添加一些配置才能使其在 android 电视盒上运行。
我已经按照这些步骤在这里 = https://developer.android.com/training/tv/start/start.html#prerequisites
但是玩家在一段时间后仍然停止。
这是从开始到被操作系统暂停的日志文件的链接,我建议查看:
https://www.scribd.com/document/442914371/Hilallogcat-Tvbox-Sem-Log
日志文件中有一些可疑部分:
01-13 21:24:00.009 454 454 W System.err: java.io.FileNotFoundException: /dev/fd628_dev (Permission denied)
01-13 21:24:00.009 454 454 W System.err: at java.io.FileOutputStream.open(Native Method)
01-13 21:24:00.009 454 454 W System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
01-13 21:24:00.010 454 454 W System.err: at java.io.FileOutputStream.<init>(FileOutputStream.java:108)
01-13 21:24:00.010 454 454 W System.err: at com.android.server.NetworkTimeUpdateService.fd628_display(NetworkTimeUpdateService.java:439)
01-13 21:24:00.010 454 454 W System.err: at com.android.server.NetworkTimeUpdateService$4.onReceive(NetworkTimeUpdateService.java:522)
01-13 21:24:00.010 454 454 W System.err: at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:1122)
01-13 21:24:00.010 454 454 W System.err: at android.os.Handler.handleCallback(Handler.java:755)
01-13 21:24:00.011 454 454 W System.err: at android.os.Handler.dispatchMessage(Handler.java:95)
01-13 21:24:00.011 454 454 W System.err: at android.os.Looper.loop(Looper.java:154)
01-13 21:24:00.011 454 454 W System.err: at com.android.server.SystemServer.run(SystemServer.java:358)
01-13 21:24:00.012 454 454 W System.err: at com.android.server.SystemServer.main(SystemServer.java:225)
01-13 21:24:00.012 454 454 W System.err: at java.lang.reflect.Method.invoke(Native Method)
01-13 21:24:00.012 454 454 W System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
01-13 21:24:00.012 454 454 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:802)
也是这样的:
01-13 21:24:12.227 1595 1606 W art : Suspending all threads took: 16.847ms
这个:
01-13 21:26:17.182 193 6998 E RockFFPlayer: file_read: offset=9473373, c->offset=0, c->length=9473373
这个:
01-13 21:26:17.970 193 7000 W AudioDecoder: audio decode error send exception error
但我无法弄清楚原因。
更新:
在@CuriousMind 的建议下,我已将 setTime 添加到我的应用程序类中。但我们无法避免FileNotFoundException
。
这是我在应用程序开始时设置时间时的日志文件:
https://www.scribd.com/document/442936061/hilallogcat-tvbox-setTime
更新 2:
/system/etc/
文件夹内:
NOTICE.html.gz
audio_policy.conf
event-log-tags
init/
media_codecs_performance.xml
mkshrc
ppp/
recovery-resource.dat
smbpasswd
wifi/
alarm_filter.xml
bluetooth/
firmware/
media_codecs.xml
media_codecs_rk_vpu.xml
operator_table
preferred-apps/
seccomp_policy/
smbusers
apns-conf.xml
clatd.conf
fonts.xml
media_codecs_google_audio.xml
media_profiles_default.xml
package_performance.xml
preloaded-classes
security/
spn-conf.xml
audio_effects.conf
compiled-classes
hosts
media_codecs_google_video.xml
mixer_paths.xml
permissions/
public.libraries.txt
smb.conf
sysconfig/
【问题讨论】:
你可以试试这个,只是为了调试它:当你的应用启动时,设置时间。根据文档,它应该禁用 setTime void setTime (long millis) 设置系统挂钟时间。此方法不保证重新启动后的持久性。此方法还禁用来自 NTP 的自动时间更新。可以帮助调试的一件事(在这种情况下,检查 NetworkTimeUpdateService 的第 439 行中发生了什么,将了解您正在使用的 android 风格/版本。您可以将其添加到问题中吗? 是的,等着看它是否会再次发生。以编程方式进行。如果不再发生,则问题出在 NetworkTimeUpdateService 中。我建议您还检查您正在使用的风味或 api 编号,以便检查 NetworkTimeUpdateService 的正确来源。如果您阅读日志中提到的那一行 - .fd628_display(NetworkTimeUpdateService.java:439) - 第 439 行......也许我们可以从中得到一些东西。表面问题是代码试图访问某些文件并且没有获得权限(堆栈跟踪的第一行).. @CuriousMind 我在 Application 类中添加了这些行Date d = new Date();
d.setTime(1000);
。但是当我运行命令./adb logcat -d *:I
时我仍然看到这些行,我将再次共享日志文件。或者也许我应该将这些行添加到服务类中?因为应用内部有前台服务。
请检查:developer.android.com/reference/com/google/android/things/… 有一个使用 TimeManager 设置时间的示例。由于评论太长,无法在此处复制粘贴。这就是应该禁用 NTP 同步的方法。不要忘记添加权限。如果可能,请检查您使用的是哪个 api……应该会有所帮助。
您可以在时钟设置中禁用自动时间,我认为它会禁用来自 ntp 的轮询。请禁用后重新检查。
【参考方案1】:
我发现,由于我的盒子没有 LED,它无法找到文件 fd628,因为它只存在于有 LED 的设备上,正如我从这里理解的那样:
https://github.com/LibreELEC/linux_openvfd
所以我尝试使用一个我已经拥有的带有 LED 的盒子,它是 TX9,但这个错误没有出现并且盒子从未停止过。
但我仍然不知道是什么调用了该 fd628 文件,我无法避免这种情况,但至少我知道应用程序停止的原因。
【讨论】:
以上是关于安卓电视盒子由于某种原因停止了应用程序的主要内容,如果未能解决你的问题,请参考以下文章
网络盒子显示AirPlayServer已停止运行!怎么办?从那找这个软件?
最简单的斐讯p1(斐讯n1)电视盒子刷centos7系统(其他linux发行版如armbian也行)教程,对盒子内的安卓系统改动最小