安卓电视盒子由于某种原因停止了应用程序

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也行)教程,对盒子内的安卓系统改动最小

安卓及盒子│简直了,支持双平台的影视神器,电视电影统统免费看。

手机能远程控制电视盒子的软件都有哪些