0

1〜10の乱数を生成し、ランダムにチャンネル(501〜510)を選択してロードするGoogle TV用の簡単なアプリを作成しようとしています。

Google の公式ドキュメントを試しましたが、公式のサンプル プロジェクトがコンパイルされません。また、LG G2 で GTV チャンネル リスト/API の変更/サンプルが破損していますか?も読みました。これをGoogleバージョンに適応させようとしましたが、ロード時にアプリがクラッシュしました。

これは簡単な修正に違いないと確信しています。https://developers.google.com/tv/android/docs/gtv_providerのチュートリアルを使用して、チャネルに関する情報を取得したり検索したりする必要はありません。

どんな助けでも大歓迎です。

4

1 に答える 1

1

以下のコードを使用すると、プロバイダーへのアクセスが変更され、改善されるはずです。

権限:

<uses-permission android:name="com.google.android.tv.permission.READ_CHANNELS"/>
<uses-permission android:name="com.google.android.tv.mediadevices.permission.READ_STREAMS"/>

コード:

 public abstract class ChannelList {

    private static ChannelList mCL=null;

    public abstract String getPROVIDER_URI();

    public abstract String getCALL_SIGN_COLUMN();

    public abstract String getURI_COLUMN();

    public abstract String getNUMBER_COLUMN();

    public abstract String getNAME_COLUMN();

    public static ChannelList getChannelList() {
        if (mCL != null)
            return mCL;

        int mGtvLibraryVersion = 0;
        try {
            Class<?> cl = Class.forName("com.google.android.tv.Version");
            mGtvLibraryVersion = cl.getField("GTV_SDK_INT").getInt(null);
        } catch (Exception ex) {}

        Log.d("Resolution Test", "Version " + mGtvLibraryVersion);

        mCL= mGtvLibraryVersion > 0 ? new Version3ChannelList(): new Version2ChannelList();
        return mCL;
    }

    /**
     * Use the getChannelList factory to obtain an instance of a subclass of
     * ChannelList
     */

    private ChannelList() {
    }

    @Override
    public String toString() {
        return "SDK Provider: " + getPROVIDER_URI() + "\n" +
                "Columns: " + getCALL_SIGN_COLUMN() + " " + getURI_COLUMN() + " " + getNUMBER_COLUMN() + " "
                + getNAME_COLUMN();
    }



    public static final class Version2ChannelList extends ChannelList {

        @Override
        public String getPROVIDER_URI() {
            return "content://com.google.android.tv.provider/channel_listing";
        }

        @Override
        public String getCALL_SIGN_COLUMN() {
            return "callsign";
        }

        @Override
        public String getURI_COLUMN() {
            return "channel_uri";
        }

        @Override
        public String getNUMBER_COLUMN() {
            return "channel_number";
        }

        @Override
        public String getNAME_COLUMN() {
            return "channel_name";
        }

    }

    public static final class Version3ChannelList extends ChannelList {


        @Override
        public String getPROVIDER_URI() {
            return "content://com.google.tv.mediadevicesapp.MediaDevicesProvider/channel_list";
        }

        @Override
        public String getCALL_SIGN_COLUMN() {
            return "subName";
        }

        @Override
        public String getURI_COLUMN() {
            return "url";
        }

        @Override
        public String getNUMBER_COLUMN() {
            return "channelNumber";
        }

        @Override
        public String getNAME_COLUMN() {
            return "name";
        }

    }
于 2013-03-25T22:33:05.493 に答える