私は Android アプリを持っており、 https://developers.google.com/cast/cast_2nd-screen_app_tutorialの指示に従って、Google キャストをそれに統合して試してみようとしています。このアプリは、Android API 16 を念頭に置いて構築されています。このため、私のアプリはサポート ライブラリを使用してビルドされていません。ただし、MediaRouteButton を使用するための条件は、FragmentActivity から拡張することです。
サポートされていない同等のライブラリの代わりにサポート ライブラリを使用するようにコードを変換することは、大きな問題になっています。API 11 以降のみをサポートするアプリに使用する代替コンポーネントはありますか? それとも、MediaRouteButton の使用を控えますか?
(デバイスを選択するための独自のボタンを作成できることがわかりましたが、非 FragmentActivity と互換性を持たせる以外に、これに新しい機能を追加するつもりはありません。)
アクティビティが FragmentActivity であることは、ボタンを使用するための要件にすぎず、他の MediaRouter API は必要ないことを願っています。
編集:スローされる例外は次のとおりです。
10-24 17:25:02.568: E/AndroidRuntime(25502): FATAL EXCEPTION: main
10-24 17:25:02.568: E/AndroidRuntime(25502): java.lang.IllegalStateException: The activity must be a subclass of FragmentActivity
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.support.v7.app.MediaRouteButton.showDialog(MediaRouteButton.java:225)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.support.v7.app.MediaRouteButton.performClick(MediaRouteButton.java:285)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.view.View$PerformClick.run(View.java:18350)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.os.Handler.handleCallback(Handler.java:730)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.os.Handler.dispatchMessage(Handler.java:92)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.os.Looper.loop(Looper.java:137)
10-24 17:25:02.568: E/AndroidRuntime(25502): at android.app.ActivityThread.main(ActivityThread.java:5368)
10-24 17:25:02.568: E/AndroidRuntime(25502): at java.lang.reflect.Method.invokeNative(Native Method)
10-24 17:25:02.568: E/AndroidRuntime(25502): at java.lang.reflect.Method.invoke(Method.java:525)
10-24 17:25:02.568: E/AndroidRuntime(25502): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1041)
10-24 17:25:02.568: E/AndroidRuntime(25502): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:857)
10-24 17:25:02.568: E/AndroidRuntime(25502): at dalvik.system.NativeStart.main(Native Method)
編集 2:ああ、サポートされていないMediaRouteButtonバージョンがあるようです。利用可能なリストの下でchromecastデバイスを検出しますが、接続していないようです。(このバージョンにはsetRouteSelector
、support.v7 バージョンのようなメソッドはありません) しかし、これを使用して、代替手段があるかどうかを確認します。
編集 3:回答済みセクションで最終的に何をしたかを書き留めました。