Android chromecast 在 2.3 上崩溃

Posted

技术标签:

【中文标题】Android chromecast 在 2.3 上崩溃【英文标题】:Android chromecast crash on 2.3 【发布时间】:2013-10-16 10:08:48 【问题描述】:

我们的 chromecast 集成在搭载 android 2.3.x 的设备上崩溃

这可能是由设备供应商覆盖的一些样式属性以及与投射 SDK/媒体路由器中对 Holo 样式的引用的组合引起的……

在三星 Galaxy S2 和 HTC Wildfire 510 SE 上测试。您是否经历过类似的事情并知道如何解决它?

01-14 23:49:32.343: E/AndroidRuntime(7298): FATAL EXCEPTION: main
01-14 23:49:32.343: E/AndroidRuntime(7298): java.lang.RuntimeException: Unable to start activity ComponentInfocom.mycompany.androidclient/com.mycompany.androidclient.FavoritesActivity: android.view.InflateException: Binary XML file line #39: Error inflating class android.support.v7.app.MediaRouteButton
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.os.Looper.loop(Looper.java:130)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread.main(ActivityThread.java:3691)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at java.lang.reflect.Method.invokeNative(Native Method)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at java.lang.reflect.Method.invoke(Method.java:507)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at dalvik.system.NativeStart.main(Native Method)
01-14 23:49:32.343: E/AndroidRuntime(7298): Caused by: android.view.InflateException: Binary XML file line #39: Error inflating class android.support.v7.app.MediaRouteButton
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.createView(LayoutInflater.java:518)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.parseInclude(LayoutInflater.java:707)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:619)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:215)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.Activity.setContentView(Activity.java:1663)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at com.mycompany.androidclient.FavoritesActivity.onCreateInternal(FavoritesActivity.java:170)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at com.mycompany.androidclient.mycompanyComActivity.onCreate(mycompanyComActivity.java:100)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
01-14 23:49:32.343: E/AndroidRuntime(7298):     ... 11 more
01-14 23:49:32.343: E/AndroidRuntime(7298): Caused by: java.lang.reflect.InvocationTargetException
01-14 23:49:32.343: E/AndroidRuntime(7298):     at java.lang.reflect.Constructor.constructNative(Native Method)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.LayoutInflater.createView(LayoutInflater.java:505)
01-14 23:49:32.343: E/AndroidRuntime(7298):     ... 26 more
01-14 23:49:32.343: E/AndroidRuntime(7298): Caused by: android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValuet=0x2/d=0x7f01000c a=3
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.content.res.Resources.loadDrawable(Resources.java:1907)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.content.res.TypedArray.getDrawable(TypedArray.java:653)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.view.View.<init>(View.java:1985)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:121)
01-14 23:49:32.343: E/AndroidRuntime(7298):     at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:117)
01-14 23:49:32.343: E/AndroidRuntime(7298):     ... 29 more

【问题讨论】:

【参考方案1】:

马克, 示例应用程序是否也会在这些设备上崩溃,或者它只是您编写的应用程序?我会尝试找一部运行 2.3 的手机(现在不太容易)并自己测试示例应用程序,但我认为您可能已经测试过了。如果示例应用程序也崩溃了,那么我可以更轻松地进行调试并回信给您可能的解决方案。

【讨论】:

我们尝试了来自github.com/googlecast/cast-android-sample 的示例代码,但它也在装有 Android 2.3.6 的 Galaxy S2 上崩溃。我们将 minSdkVersion 从 13 降低到 9(这应该是 chromecast SDK 的最小值),以便在设备上安装它。 我拿到了一部 2.3.4 的三星手机。当我将 minSdkVersion 降低到 9 时,它抱怨主题,但由于 appcompat (support-v7-appcompat) 在项目中用作库,我将应用程序的主题更改为 AppCompat 主题之一:android:theme="@ style/Theme.AppCompat.Light”,然后编译运行应用程序成功。你用的是什么主题?您能否在示例应用上测试此更改,看看它是否在您的手机上成功运行,如果是,请在您的应用中尝试相同的更改? 我们可以使用@style/Theme.Base.AppCompat解决它,谢谢,阿里!

以上是关于Android chromecast 在 2.3 上崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在android中重新启动应用程序时如何重新连接chromecast设备

来自android的Chromecast不使用样式接收器

Chromecast - 如何使用 android 为视频添加字幕

当 Android 应用程序在后台时使用 Chromecast 设置音量

如何在 Android SDK for Chromecast 中切换活动

从 android 4.2 在 chromecast 上启用字幕