[Android教學] 如何在Android TV主畫面新增喜歡的頻道?
Android TV的使用者,
一定有看過以下畫面。
當看完Youtube影片後,回到主畫面後,
突然發現怎麼多了一列Youtube的顯示!?
其實這是Google將您最近觀看過的影片
顯示在主畫面,
對於使用者來說,是很體貼的設計,
不用再重新收尋之前的頻道或節目。
但是,Android TV只能推薦Google想推薦的影片而已嗎?
如果想在主畫面推薦自家的APP的話,
又該怎麼做呢?
關於這個問題,
Google有推出Tvprovider類別,
讓開發者只要將資料存到Tvprovider中,
Android就會自動幫您的資料顯示在主畫面中。
如何將資料存到Tvprovider呢?
這就需要用到另外一個實作ContentProvider類別
ContentResovler,並且使用以下的query、insert、delete、update進行資料的處理。
以下範例是在主畫面上推薦自己做的APP,
首先,我們先要有推薦Channel和Program的認知
以下範例,黃色框為Channel,綠色框是包含在Channel裡面的PreviewProgram,
這個一定要清楚,不然資料會塞錯。
了解之後,我們就開始教學囉~
首先,我們要先創建Channel,設定好Channel資料後
在用insert的方法建立Channel
Channel channel = new Channel.Builder() .setDisplayName("Ailefrom") .setDescription("Ailefrom") .setDisplayNumber("Ailefrom_NUMBER") .setType(TvContractCompat.Channels.TYPE_PREVIEW) .setInputId("Ailefrom_123") .setOriginalNetworkId(1) .build(); Uri channelUri = getContentResolver().insert(TvContractCompat.Channels.CONTENT_URI, channel.toContentValues());
insert之後會有Uri回傳,此Uri就像Channel的身分一樣,若有需要,要自行存起來。
Channel建立好之後,接下來就是創建PreviewProgram內容了。
(提醒:若創建Channel,沒有PreviewProgram的內容的話,是沒辦法顯示的)
PreviewProgram的創建方法和Channel大同小異,
要注意的地方是setChannelId,
setChannelId(ContentUris.parseId(channelUri))
ChannelId是指要將目前的PreviewProgram新增到哪一個Channel中,
例如現在有A、B、C、D、E,五個Channel,但是PreviewProgram我現在只想塞到D Channel中,此時就需要將D Channel的Uri設給PreviewProgram。
Uri logoUri = Uri.parse("android.resource://" + PACKAGE_NAME + "/" + R.drawable.lb_ic_loop); PreviewProgram content = new PreviewProgram.Builder() .setChannelId(ContentUris.parseId(channelUri)) .setType(TvContractCompat.PreviewPrograms.TYPE_TV_SERIES) .setTitle("Ailefrom Program_"+ContentNum) .setDescription("Ailefrom Program_Descripton_"+ContentNum) .setAuthor("Ailefrom") .setIntent(SetIntent()) .setPosterArtUri(logoUri) .build(); ContentNum++; Uri contentUri = getContentResolver().insert(TvContractCompat.PreviewPrograms.CONTENT_URI, content.toContentValues());
資料完成後,在用Insert的方式將資料存到Tvprovider就完成了
最後完成的畫面
是不是很簡單呢~
============================================
有興趣的讀者
可以到以下的GitHub網站下載Source Code,歡迎留言交流~
GitHub:
https://github.com/Ailefrom/AddRecommandChannel.git
Youtube影片 :
https://www.youtube.com/watch?v=0oNXi0qubgI
============================================