CNX에서 선정한 2017/2018 가장 좋은 안드로이드 TV BOX에
U5PVR 디럭스 제품이 선정되었네요 ^^

선정된 U5PVR 디럭스 기준은 ATV5버젼입니다만,
현재 ATV7버젼의 Sample이 전달 되지 않아서 그렇습니다. 

1년동안 U5team과 같이 협업으로 좋은 결과가 있어서 보람이 있습니다.


아쉬운점은 U5PVR디럭스 제품이 추가 양산 일정이 없는관계로,
빈티지 제품이 되어 있는 점이 아쉽네요 ^^


가장 좋은 Android TV Box (2017/2018 Edition)는 무엇인가요?


구입할 TV 상자를 자주 묻는 순간부터 "나는 최고의 안드로이드 TV 상자는 무엇입니까? "라는 가이드를 썼습니다 . "라고 말합니다. 시간이 지났고 신제품이 출시되었습니다. 더 많은 기기를 테스트하고 더 많은 독자 의견을 얻었으므로 업데이트 할 시간입니다.

아직 모든 장치를 관리하는 장치가 없으며 모두가 서로 다른 요구 사항과 가격대를 갖고 있기 때문에 최상의 Android TV 상자는 한 사람에게만 제공 될 수 있습니다. 다른 사람에게 쓰레기가 될 수 있습니다. TV 박스를 구입하기 전에, TV 박스로 무엇을 할 계획인지 고려해야하며, 필요와 예산에 맞는 장치를 찾으십시오. 먼저, 주목할 가치가있는 대안뿐만 아니라 눈에 띄는 3 개의 TV 박스 (특정 순서 없음)를 선택하기 전에 SoC / RAM 선택 옆에서 찾을 항목 목록을 제공 할 것입니다.

찾을 물건

이 목록은 기본적으로 작년과 동일합니다. 단 운영 체제에 대한 두 개의 섹션과 추가 기능을 추가했습니다.

  • 운영체제 - "안드로이드 TV 상자"가 "안드로이드" "TV 박스"를 의미했을 때가 있었지만 구글의 TV 박스 운영체제가 보편화되고 일부 회사는 안드로이드 / 리눅스 운영체제로 듀얼 OS 버전을 제공하기 시작했습니다 동시에 대부분 서버 용도로 사용됩니다. 다음은 고려할 수있는 옵션입니다.
    • 공식 Android TV OS - 희박한 실행기로 원래의 경험을 원하면 Hulu, Netflix와 같은 스트리밍 서비스에 액세스하려는 경우 이러한 장치를 선택하십시오. 이 운영 체제에는 스트리밍에 필요한 모든 라이센스가 포함되어 있어야하며, 특히 대형 스크린 용으로 특별히 고안되었으며 IR 리모콘으로 잘 작동합니다. 그러나 TV 용으로 특별히 고안된 앱 (예 : 사이드로드하지 않는 한 Chrome 브라우저 없음) 만 설치하면 시스템이 에어 마우스 또는 무선 키보드 / 터치 패드와 항상 잘 작동하지 않을 수 있습니다.
    • 비공식 Android TV OS - 일부 라이선스가 누락 될 수 있다는 점을 제외하면 위와 동일하므로 일부 스트리밍 서비스가 제대로 작동하지 않거나 표준 해상도가 제한 될 수 있습니다.
    • 안드로이드 OS - 중국에서 발견 할 수있는 모든 것을 말하는 것은 아니지만, 대형 스크린에 대한 사용자 정의가 가능한 스마트 폰 용 안드로이드 운영 체제를 실행하고 있습니다. 이러한 기기는 Google Play 스토어에서 모든 앱을 설치할 수 있으므로 큰 유연성을 제공하며 대형 화면 용 런처가 제공됩니다. 단점은 인터페이스 또는 일부 앱의 일부만 IR 리모콘과 함께 사용할 수 있으므로 기기를 잘 제어하려면 무선 마우스, 무선 키보드 또는 스마트 폰 앱을 사용해야합니다. 또한 대부분의 상자에는 적절한 DRM 및 기타 라이센스가 없으므로 액세스 할 수있는 스트리밍 서비스 또는 적어도 재생 해상도를 제한 할 수 있습니다.
    • Android + Linux - 듀얼 부팅 시스템은 오래 동안 사용되어 왔으며 IMHO는별로 유용하지 않습니다. 그래서 여기서는 미디어 재생을 위해 Android와 동시에 두 개의 운영 체제가 실행되는 시스템과 NAS / 서버 기능. 지금까지 OpenWrt 또는 Debian으로 장치를 보았습니다.
  • 정기적 인 펌웨어 업데이트 내역 - 회사에서 정기적으로 OTA (무선) 펌웨어 업데이트를 제공하는 경우 장치가 더 좋아지고 초과 근무를하게 될 것입니다. 가장 저렴한 TV 박스는 보통 ship-and-forget 모델을 따르므로 일부 커뮤니티 회원이 맞춤 펌웨어를 제공하지 않는 한 개선을 기대할 수 없습니다.
  • 지원 포럼 - 최종 사용자에게 판매하는 평판 좋은 회사는 지원 포럼을 제공합니다. 싸구려 박스의 경우 Freaktab 과 같은 커뮤니티를 통하는 경우를 제외하고는 지원을받지 못합니다 .
  • 4K 및 HDR 지원 - 4K 비디오 및 최신 HDR (High Dynamic Range 기능)을 지원할 장치를 구입하려면 HDMI 2.0a (3840 × 2160 또는 4096 × 2160 출력, 최대 60Hz)가있는 장치를 찾아야합니다 및 HDR. 4K 비디오 코덱 (10 비트 HEVC / H.265, VP9, ​​H.264)을 두 번 확인하고 비디오에 사용 된 프레임 속도를 디코딩 할 수 있는지 확인하십시오. 후자는 일반적으로 H.265에는 문제가되지 않지만 일부 시스템에서는 30fps 또는 24fps 만 처리 할 수 ​​있기 때문에 VP9 또는 H.264가 될 수 있습니다.
  • 5.1 또는 7.1 HD 오디오 패스 스루 지원 - Dolby TrueHD, Dolby Atmos, DTS HD Master, DTS HD 고해상도 또는 DTS : X를 처리 할 수있는 앰프 또는 A / V 수신기를 소유하고있는 경우, 이 사이트 또는 다른 사용자에 대한 리뷰는 많은 기기가 지원 요청에도 불구하고 부족합니다.
  • 자동 프레임 속도 전환 - 모니터 화면 재생 빈도를 비디오 프레임 속도와 일치시켜 마이크로 스터 터 (micro stutter)라는 현상을 피할 수있는 기능으로, 일정한 간격으로 비디오를 부드럽게 만들지 못하게합니다. 특히 비디오가 패닝됩니다. 24fps 비디오가 모니터에서 24Hz를 사용하여 재생 된 경우와 같이 제대로 구현되면 마이크로 셔터가 사라집니다.
  • HD 및 UHD 비디오 스트리밍을위한 DRM 지원 - Netflix와 같은 비디오 스트리밍 서비스에 비용을 지불하는 경우 Widewine Level 1 DRM이 필요하지만 HD에서 비디오를 재생하기에 충분하지 않은 조건을 지원해야합니다 또는 UHD (4K) 해상도. 대부분의 장치는 적절한 DRM  없고 "Netflix 라이센스"를 얻지 못 하기 때문에 SD 해상도의 비디오 만 스트리밍 할 수 있습니다 .
  • 열 디자인 및 저장 성능 - 많은 안드로이드 TV 박스는 비슷한 사양을 가지고 있지만, IMHO의 두 가지 중요한 디자인 선택은 외관상으로 유사한 장치 간의 성능에 특히 영향을 미칩니다. 일부 TV 상자는 시간이 지남에 따라 과열되어 몇 분 후에 성능이 저하되고 적절한 냉각 기능을 갖춘 TV 상자는 몇 시간 동안 동일한 성능을 보입니다. 빠른 저장 장치를 사용하면 기기가 빠르게 부팅되고 앱이 빠르게로드되며 앱이 백그라운드에서 설치 또는 업데이트되는 동안 기기의 속도가 느려지지 않습니다.
  • 추가 기능 - 당신이 원하는 것은 스트리밍을 원한다면 일반적으로 신경 쓰지 않겠지 만, TV 박스를 더 원하면 디지털 TV 튜너 (DVB-T / T2 / C, DVB-S2, ATSC ..), 내부 SATA 베이, 다른 장치에서 비디오를 녹화 또는 방송하기위한 HDMI 입력 등이 있습니다.

MINIX NEO U9-H 미디어 허브

확대하려면 클릭하십시오.

기준 :

  • 운영체제 - 안드로이드 6.0.1 OS
  • 정기적 인 펌웨어 업데이트 내역 - MINIX는 일반적으로 약 1 년 정도 장치를 업데이트합니다.
  • 지원 포럼 - MINIX 포럼 은 상당히 활동적이므로, MINIX 또는 사용자 커뮤니티로부터 적절한 지원을받을 수 있어야합니다.
  • 4K 및 HDR 지원 - 4K @ 60Hz의 HDMI 2.0a가 지원되며 4K 10 비트 H.265, VP9 및 H.264 비디오를 매우 잘 지원합니다.
  • 5.1 또는 7.1 HD 오디오 패스 스루 지원 - Dolby TrueHD 및 DTS HD 오디오 패스 스루가 모두 작동합니다.
  • 자동 프레임 속도 전환 - OK (Kodi 17.x)
  • HD 및 UHD 비디오 스트리밍을위한 DRM 지원 - Widewine Level 1 및 Microsoft PlayReady가 구현되었습니다. 그러나 Netflix는 별도의 계약이 필요하기 때문에 최대 SD 해상도 또는 최대 HD (720p)까지만 재생할 수 있습니다.하지만 풀 HD는 물론 UHD도 재생할 수 없습니다.
  • 열 설계 및 보관 성능 - 대형 방열판 덕분에 냉각이 잘되고 내부 저장 공간이 매우 빠릅니다.
  • 추가 기능 - 별도의 마이크 잭, 켄싱턴 잠금 장치

작년에 추천 한 MINIX NEO U1 과 마찬가지로 Netflix Full HD 또는 4K UHD 재생이 필요하지 않으며 사용자 지정 런처와 에어 마우스를 사용하면 행복합니다. MINIX NEO U9-H는 확실히 귀하의 목록에 있어야합니다. 고려해야 할 장치. MINIX NEO U9-H 리뷰  읽으십시오 . 2017 년 3 월에 검토 한 이후 버그가 수정되었을 수도 있습니다.

가격 : 아마존 미국 , GearBest , GeekBuying 및 기타 판매 업체의 NEO A3 Lite 에어 마우스로 $ 149.90 이상 . 약 $ 139.90에 대해서만 상자를 (에어 마우스없이) 찾을 수 있습니다.

U5PVR 디럭스 셋톱 박스 및 NAS

확대하려면 클릭하십시오.

U5PVR Deluxe는 튜너 및 3.5 "SATA 드라이브와 같은 모든 추가 기능과 Android TV OS (비공식) 및 Debian 모두를 실행한다는 사실 때문에 상위 3 개 목록에 포함되었습니다.

기준 :

  • 운영체제 - 비공식 Android TV 5.1 OS 및 데비안이 동시에 실행됩니다. Android TV 7.1 베타도 제공됩니다.
  • 정기적 인 펌웨어 업데이트 내역 - 회사는 검토 이후 여러 가지 펌웨어 업데이트를 발표 했습니다 . 이전 모델은 U4 쿼드 하이브리드 - 출시 : 2016 년 1 월 , 마지막으로 펌웨어 업데이트 : 2016 11월 . 따라서 펌웨어 업데이트가 1 년 미만입니다.
  • 지원 포럼 - SmartSTB 포럼 (다소 활발한 활동) 또는 Google+ (활발하지 않은 활동)에서 제공됩니다. 이 장치는 MINIX 모델만큼 대중적이지 않으므로 관련 사용자가 적습니다.
  • 4K 및 HDR 지원 - Media Center 앱에서 4K 10 비트 H.265, VP9 및 H.264 비디오를 매우 잘 지원하면서 최대 4K @ 60Hz의 HDMI 2.0a가 지원됩니다 (단, Kodi 17.x 지원은 약간의 작업이 필요함). )
  • 5.1 또는 7.1 HD 오디오 패스 스루 지원 - Media Center 앱에서 작동하는 Dolby TrueHD 및 DTS HD 오디오 패스 스루.
  • 자동 프레임 속도 전환 - OK (Media Center 앱)
  • HD 및 UHD 비디오 스트리밍을위한 DRM 지원  DRM 지원 없음
  • 열 설계 및 보관 성능 - 뛰어난 내부 보관 성능 및 냉각시 눈에 띄는 문제가 없음 ( 설계시 분해 참조 )
  • 추가 기능 - 2.5 "또는 3.5"드라이브, 듀얼 DVB-T / T2 튜너 용 SATA 베이

DVB-T / T2가 지원되는 국가 (또는 튜너 보드를 추가로 구입하면 DVB-T / T2 / C, ATSC, DVB-S2)에 거주 하고 Linux NAS 기능을 사용할 계획 인 경우, U5PVR Deluxe는 확실히 좋은 후보자로 보입니다. 그러나 Netflix, Hulu 및 기타 프리미엄 서비스의 비디오 스트림을 주로보고 Kodi를 사용하려는 경우 사용자의 요구에 더 잘 맞는 다른 장치가 있어야합니다.

가격 : Aliexpress에서 배송비를 포함하여 $ 229.99 .

엔비디아 쉴드 안드로이드 TV (2017 판)

엔비디아는 올해 초 인기있는 쉴드 안드로이드 TV의 더 작은 버전을 출시했다. 나는이 기기를 직접 리뷰하지는 않았지만 가장 인기있는 안드로이드 TV 박스 중 하나 다.

기준 :

  • 운영 체제 - 공식 Android TV 7.0 (Oreo로 업그레이드 예정)
  • 정기적 인 펌웨어 업데이트의 역사 - Nvidia는 2015 년부터 원래 모델 (연간 6 회 정도)
  • 지원 포럼 - Nvidia Geforce 포럼의 Active SHIELD Android TV 게시판
  • 4K 지원 - 최대 4K @ 60Hz의 HDMI 2.0a는 10 비트 H.265, VP9 및 H.264 비디오 재생 (60fps)을 지원합니다.
  • 5.1 또는 7.1 HD 오디오 패스 스루 지원 - Dolby TrueHD 및 DTS HD 오디오 패스 스루 지원
  • 자동 프레임 속도 전환 - 적어도 Kodi와 Plex는 괜찮습니다.
  • HD 및 UHD 비디오 스트리밍을위한 DRM 지원 - 공식적으로 지원되는 Netflix HD 및 4K, Amazon Video
  • 열 설계 및 스토리지 성능 - 좋은 스토리지 성능, 난 단지 과열에 고립 된 문제의 보고서를 읽고 (즉 아닌 설계 문제).
  • 추가 기능 - N / A

NVIDIA TV 상자는 모든 TV 박스 중에서 가장 강력한 GPU 기능을 갖추고있어 뛰어난 3D 게임 콘솔이기도합니다. 회사는 올해 더 많은 국가에서이 모델을 출시했지만 가용성은 여전히 ​​문제입니다. 이것은 또한 기기가 공식적으로 출시되지 않은 국가에서 구매할 경우 배송비, 관세 및 기타 수수료 (예 : 배송료)를 고려하면 기기가 꽤 비쌀 수 있음을 의미합니다. Android TV OS를 실행하는 다른 기기와 마찬가지로 모든 앱을 Play 스토어에서 사용할 수있는 것은 아닙니다.

가격 : Amazon 미국에서  200 달러 .

기타 대안

세 가지 장치 만 고려할 수있는 것은 아니며 다른 대안이 일부 사람들의 요구 사항을 충족시킬 수 있습니다.

  • $ 100 이상
  • $ 100 이하
    • Xiaomi Mi Box US - Vudu +, Hulu, YouTube, Netflix와 같은 서비스에서 동영상을 스트리밍하고 게임을 즐기는 데 신경 쓰지 않고 다른 작업을 위해 매우 높은 성능을 제공하는 경우 공식적으로 Android TV 옵션이 좋습니다.
    • Mecool M8S PRO + - 비공식 Android TV 7.1 펌웨어 , 최대 1080p의 Netflix 를 지원하는 2GB RAM / 16GB 저장 용량의 Amlogic S905X SoC 기반 보조 40 달러 박스 . [링크 된 게시물의 eMMC 플래시 버전에 대한주의 사항]
    • LibreELEC (Kodi Linux 배포판) 과 호환되는 다양한 저가의 Amlogic S905 / S905X TV 상자 . 이 상자의 재고 안드로이드 펌웨어는 그리 좋지 않을 수 있으므로 커뮤니티에서 지원하는 LibreELEC을 실행하는 것이 좋습니다.

이 가이드가 어떤 모델을 구매할 것인지 결정하는 데 도움이되기를 바랍니다. 다른 모델이 상위 3 개 또는 대안 목록에 포함되어야한다고 생각한다면 자유롭게 의견을 말하십시오.


https://www.cnx-software.com/2017/12/26/whats-the-best-android-tv-box-2017-2018-edition/





Posted by Benjamin Baxter, Developer Programs Engineer

How to integrate the Google Assistant in a TV app

Earlier this year, we announced that the Google Assistant will be coming to Android TV and it has arrived. The Google Assistant on Android TV will allow users to discover, launch and control media content, control smart devices like light bulbs, and much more. Your Assistant also understands that you're interacting on a TV, so you'll get the best experience possible while watching your favorite movies and TV shows.

The Google Assistant has a built-in capability to understand commands like "Watch The Incredibles", and media controls, like pause, fast forward, etc. This article will walk through how to integrate the Google Assistant into your application.

There are no new APIs needed to integrate with the Google Assistant. You just need to follow the pattern that the Google Assistant expects from your app. If you want to experiment and play with the APIs and the Assistant, you can download this sample from github.

Discovery

The Google Assistant has made some changes to improve finding information on Android TV.

There are a few ways to expose your content to users through the Google Assisant.

Server side integration. (Requires registration and onboarding)

You need to provide your content catalog to Google. This data is ingested and available to the Google Assistant outside of your app.

This is not specific for Google Assistant. It will also enable other Google services such as search and discovery on Google Search, Google Play, Google Home App, and Android TV.

Client side integration. (Available to all apps)

If your app is already searchable, then you only need to handle the EXTRA_START_PLAYBACKflag, which we go into more detail later. Content will auto-play if the app name is explicitly specified in the search results or if the user is already in your app.

Once your app is searchable, you can test by asking the Assistant or, if you are in a loud area, test quietly by running the following adb command:

adb shell am start -a "android.search.action.GLOBAL_SEARCH" --es query \"The Incredibles\" 

Each app that responds to the search query will have a row displaying their search results. Notice that YouTube and the sample app, Assistant Playback, each receive their own rows for content that match the search query.

For specific searches such as "Play Big Buck Bunny", the Assistant will present a card with a button for each app that exactly matched the search query. In the screenshot below, you can see the sample app, Assistant Playback, shows up as an option to watch Big Buck Bunny.

There are times when the Google Assistant will launch an app directly to start playing content. An example of when this occurs is when content is exclusive to the app; "Play the Netflix original House of Cards".

Launching

When the user selects a video from search results, an intent is sent to your app. The priority order for the intent actions are as follows:

  1. Intent specified in the cursor returned from the search (SUGGEST_COLUMN_INTENT_ACTION).
  2. Intent specific in the searchable.xml file with the searchSuggestIntentAction value.
  3. Defaults to ACTION_VIEW.

In addition, the Assistant will also pass an extra to signal if playback should begin immediately. You app should be able to handle the intent and expect a boolean extra called EXTRA_START_PLAYBACK.

import static android.support.v4.content.IntentCompat.EXTRA_START_PLAYBACK;

public class SearchableActivity extends Activity {

   @Override
   protected void onCreate(@Nullable Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       if (getIntent() != null) {
           // Retrieve video from getIntent().getData().

           boolean startPlayback = getIntent().getBooleanExtra(EXTRA_START_PLAYBACK, false);
           Log.d(TAG, "Should start playback? " + (startPlayback ? "yes" : "no"));

           if (startPlayback) {
               // Start playback.
               startActivity(...);
           } else {
               // Show details for movie.
               startActivity(...);
           }
       }
       finish();
   }
}

You can test this by modifying and running the following adb command. If your app has a custom action, then replace android.intent.action.VIEW with the custom action. Replace the value of the -d argument with the URI you return from the Assistant's query.

adb shell 'am start -a android.intent.action.VIEW --ez
android.intent.extra.START_PLAYBACK true -d <URI> -f 0x14000000'

The -f argument is the logical OR value from FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TOP. This will force your activity to be freshly launched.

For example, in the sample app, you can run the following command to launch playback of "Big Buck Bunny" as if the assistant had launched it.

adb shell 'am start -a android.intent.action.VIEW --ez
android.intent.extra.START_PLAYBACK true -d 
content://com.example.android.assistantplayback/video/2 -n
com.example.android.assistantplayback/.SearchableActivity -f 0x14000000'

The URI above is defined by the value of android:searchSuggestIntentData in searchable.xml(content://com.example.android.assistantplayback/video/) in addition to the value of SearchManager.SUGGEST_COLUMN_INTENT_DATA_ID (2) returned from the query.

Note that intents may be cached by the Google Assistant up to 7 days. Your app could receive a request to play content that is no longer available. The intent handler should be designed to be stateless and not rely on any previously knowledge to handle the deep link. Your app should gracefully handle this situation. One solution would be to show an error message and let the user land on your main activity or another relevant activity.

Playback

If your app implements MediaSession correctly, then your app should work right away with no changes.

The Google Assistant assumes that your app handles transport controls. The Assistant uses the TransportControls to send media commands to your app's MediaSession. Video apps must support the following controls wherever possible:

  • Play/Pause/Stop
  • Previous/Next
  • Rewind/Fast Forward (implemented with seekTo())

You can easily get a hook for these controls by implementing a MediaSession.Callback. If you play videos using PlaybackTransportControlGlue, then all your callback needs to do it sync the glue and the MediaSession. Otherwise use this callback to sync your player.

public class MyMediaSessionCallback extends MediaSessionCompat.Callback {

   private final PlaybackTransportControlGlue<?> mGlue;

   public MediaSessionCallback(PlaybackTransportControlGlue<?> glue) {
       mGlue = glue;
   }

   @Override
   public void onPlay() {
       Log.d(TAG, "MediaSessionCallback: onPlay()");
       mGlue.play();
       updateMediaSessionState(...);
   }

   @Override
   public void onPause() {
       Log.d(TAG, "MediaSessionCallback: onPause()");
       mGlue.pause();
       updateMediaSessionState(...);
   }

   @Override
   public void onSeekTo(long position) {
       Log.d(TAG, "MediaSessionCallback: onSeekTo()");
       mGlue.seekTo(position);
       updateMediaSessionState(...);
   }

   @Override
   public void onStop() {
       Log.d(TAG, "MediaSessionCallback: onStop()");
       // Handle differently based on your use case.
   }

   @Override
   public void onSkipToNext() {
       Log.d(TAG, "MediaSessionCallback: onSkipToNext()");
       playAndUpdateMediaSession(...);
   }

   @Override
   public void onSkipToPrevious() {
       Log.d(TAG, "MediaSessionCallback: onSkipToPrevious()");
       playAndUpdateMediaSession(...);
   }
}

Continue learning

Check out the following articles and training documents to continue learning about MediaSession and Video apps.

To play around with the Google Assistant on Android TV, download the sample app and run it on Nvidia Shield running Android M or above.

If you would like to continue the discussion, leave a response or talk to me on Twitter.

https://android-developers.googleblog.com/2017/10/video-playback-with-google-assistant-on.html



추천 채널에 콘텐츠 표시

Android TV 홈 화면 또는 홈 화면 은 권장 콘텐츠를 채널 및 프로그램 테이블로 표시하는 UI를 제공 합니다 . 각 행은 채널입니다. 채널에는 해당 채널에서 사용할 수있는 모든 프로그램의 카드가 있습니다.


TV 홈 화면

이 문서는 홈 화면에 채널과 프로그램을 추가하고, 콘텐츠를 업데이트하고, 사용자 작업을 처리하고, 사용자에게 최상의 경험을 제공하는 방법을 보여줍니다. (API에 대해 더 자세히 알고 싶다면 홈 화면 코드 랩을 시도 하고 I / O 2017 Android TV 세션을 시청하십시오 .)

참고 : 추천 채널은 Android 8.0 (API 레벨 26) 이상에서만 사용할 수 있습니다. Android 8.0 (API 레벨 26) 이상에서 실행되는 앱에 대한 권장 사항을 제공하려면이 코드를 사용해야합니다. 이전 버전의 Android에서 실행되는 앱에 대한 권장 사항을 제공하려면 앱에서 추천 행을 대신 사용해야합니다 .

홈 스크린 UI


앱은 새로운 채널을 만들고 채널에서 프로그램을 추가, 제거 및 업데이트하고 채널에서 프로그램의 순서를 제어 할 수 있습니다. 예를 들어 앱은 '새로운 기능'이라는 채널을 만들고 새로 사용 가능한 프로그램에 대한 카드를 보여줄 수 있습니다.

앱은 채널이 홈 화면에 표시되는 순서를 제어 할 수 없습니다. 앱이 새 채널을 만들면 홈 스크린이 채널 목록의 맨 아래에 채널을 추가합니다. 사용자는 채널을 재정렬, 숨기기 및 표시 할 수 있습니다.

다음 채널보기

홈 화면에 나타나는 첫 번째 채널에는 '다음보기'라는 라벨이 지정됩니다. 시스템은이 채널을 생성하고 유지 관리합니다. 앱에서이 채널을 이동, 제거 또는 숨길 수 없습니다. 이 채널에 프로그램을 추가 할 수 있습니다. 예를 들어 사용자가 재미 있다고 표시하거나 중간에 시청을 중단 한 프로그램 또는 사용자가보고있는 콘텐츠와 관련된 프로그램 (예 : 프로그램의 다음 시즌 또는 다음 에피소드) .

앱 채널

앱에서 만드는 채널은 모두 다음 라이프 사이클을 따릅니다.

  1. 사용자가 앱의 채널을 검색하여 홈 화면에 추가하도록 요청합니다.
  2. 앱이 채널을 생성하고 채널에 추가합니다 TvProvider(이 시점에서는 채널이 표시되지 않음).
  3. 앱이 시스템에 채널을 표시하도록 요청합니다.
  4. 시스템에서 사용자에게 새 채널을 승인하도록 요청합니다.
  5. 새 채널이 홈 화면의 마지막 행에 나타납니다.

기본 채널

앱에서 사용자가 홈 화면에 추가 할 수있는 모든 채널을 제공 할 수 있습니다. 사용자는 일반적으로 홈 스크린에 나타나기 전에 각 채널을 선택하고 승인해야합니다. 모든 앱에는 하나의 기본 채널 을 만들 수있는 옵션이 있습니다. 기본 채널은 홈 화면에 자동으로 나타나기 때문에 특별합니다. 사용자는 명시 적으로 요청할 필요가 없습니다.

선결 요건


Android TV 홈 화면은 Android TvProviderAPI를 사용하여 앱에서 만드는 채널과 프로그램을 관리합니다. 공급자의 데이터에 액세스하려면 앱의 매니페스트에 다음 권한을 추가하십시오.

<uses-permission android:name="com.android.providers.tv.permission.READ_EPG_DATA" />
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA" />

TvProvider지원 라이브러리는 쉽게 공급자를 사용 할 수 있습니다. build.gradle파일 의 종속성에 추가 하십시오.

compile 'com.android.support:support-tv-provider:27.0.0'

채널과 프로그램을 사용하려면 프로그램에 다음과 같은 지원 라이브러리 가져 오기를 포함해야합니다.

import android.support.media.tv.Channel;
import android.support.media.tv.TvContractCompat;
import android.support.media.tv.ChannelLogoUtils;
import android.support.media.tv.PreviewProgram;
import android.support.media.tv.WatchNextProgram;

채널


앱에서 만드는 첫 번째 채널이 기본 채널이됩니다. 기본 채널이 홈 화면에 자동으로 나타납니다. 사용자가 만든 다른 모든 채널은 홈 화면에 나타나기 전에 사용자가 선택하고 수락해야합니다.

채널 만들기

앱이 포 그라운드에서 실행될 때만 새로 추가 된 채널을 표시하도록 시스템에 요청해야합니다. 이렇게하면 사용자가 다른 앱을 실행하는 동안 채널 추가 승인 대화 상자가 앱에 표시되지 않습니다. 백그라운드에서 실행 중일 때 채널을 추가하려고하면 활동의 onActivityResult()메소드가 상태 코드를 반환합니다 RESULT_CANCELED.

채널을 만들려면 다음 단계를 따르십시오.

  1. 채널 빌더를 만들고 속성을 설정하십시오.

    Channel.Builder builder = new Channel.Builder();
    // Every channel you create must have the type `TYPE_PREVIEW`
    builder
    .setType(TvContractCompat.Channels.TYPE_PREVIEW)
           
    .setDisplayName("Channel Name")
           
    .setAppLinkIntentUri(uri);

    채널 유형은이어야합니다 TYPE_PREVIEW필요에 따라 더 많은 속성 을 추가하십시오 .

  2. 제공자에게 채널을 삽입하십시오.

    Uri channelUri = context.getContentResolver().insert(
     
    TvContractCompat.Channels.CONTENT_URI, builder.build().toContentValues());

    채널에 프로그램을 나중에 추가하려면 채널 ID를 저장해야합니다. 반환 된 URI에서 채널 ID를 추출합니다.

    long channelId = ContentUris.parseId(channelUri);

  3. 채널 로고를 추가해야합니다. 용도 Uri또는 Bitmap:

    // Choose one or the other
    storeChannelLogo
    (Context context, long channelId, Uri logoUri); // also works if logoUri is a URL
    storeChannelLogo
    (Context context, long channelId, Bitmap logo);

    로고 아이콘은 80dp x 80dp 여야하며 불투명해야합니다. 원형 마스크 아래에 표시됩니다.

    TV 홈 화면 아이콘 마스크

  4. 기본 채널 만들기 (선택 사항) :

    앱이 첫 번째 채널을 만들면 기본 채널로 만들어 사용자 작업없이 바로 홈 화면에 나타낼 수 있습니다 .

    TvContractCompat.requestChannelBrowsable(context, channelId);

    사용자가 만든 다른 모든 채널은 사용자가 명시 적으로 선택 하지 않으면 표시되지 않습니다 .

채널 업데이트 중

채널을 업데이트하는 것은 채널을 만드는 것과 매우 유사합니다.

다른 Channel.Builder속성을 사용 하여 변경할 속성을 설정하십시오.

를 사용하여 ContentResolver채널을 업데이트하십시오. 채널을 처음 추가 할 때 저장 한 채널 ID를 사용하십시오.

context.getContentResolver().update(TvContractCompat.buildChannelUri(channelId),
    builder
.build().toContentValues(), null, null);

채널의 로고를 업데이트하려면를 사용하십시오 storeChannelLogo().

채널 삭제하기

context.getContentResolver().delete(TvContractCompat.buildChannelUri(channelId), null, null);

프로그램


앱 채널에 프로그램 추가하기

만들기 PreviewProgram.Builder및 해당 특성을 설정 하십시오 .

PreviewProgram.Builder builder = new PreviewProgram.Builder();
builder
.setChannelId(channelId)  
       
.setType(TvContractCompat.PreviewPrograms.TYPE_CLIP)
       
.setTitle("Title")
       
.setDescription("Program description")
       
.setPosterArtUri(uri)
       
.setIntentUri(uri)
       
.setInternalProviderId(appProgramId);

프로그램 유형에 따라 더 많은 특성을 추가하십시오. (각 유형의 프로그램에서 사용할 수있는 속성을 보려면 아래 표를 참조하십시오 .)

공급자를 프로그램에 삽입하십시오.

Uri programUri = context.getContentResolver().insert(TvContractCompat.PreviewPrograms.CONTENT_URI,
      builder
.build().toContentValues());

나중에 참조 할 수 있도록 프로그램 ID를 검색하십시오.

long programId = ContentUris.parseId(programUri);

다음 채널보기에 프로그램 추가

다음 채널보기에 프로그램을 삽입하는 것은 프로그램을 자신의 채널에 삽입하는 것과 같습니다. 4 종류의 프로그램이 있습니다. 적절한 유형을 선택하십시오.

유형노트
WATCH_NEXT_TYPE_CONTINUE사용자가 콘텐츠를 보는 중간에 앱을 중지 할 때 앱에 의해 삽입됩니다.
WATCH_NEXT_TYPE_NEXT사용자가보고있는 시리즈에서 다음 사용 가능한 프로그램을 제안하기 위해 앱에 삽입되었습니다. 예를 들어, 사용자가 시리즈의 에피소드 3을보고있는 경우 앱은 다음에 에피소드 4를 시청할 것을 제안 할 수 있습니다.
WATCH_NEXT_TYPE_NEW새 콘텐츠를 사용할 수있을 때 앱에 의해 삽입됩니다 (시리즈 또는 새 시즌의 새 에피소드). 예를 들어 사용자가 시리즈에서 5 번 에피소드를보고 있고 6 번을 시청할 수있게됩니다.
WATCH_NEXT_TYPE_WATCHLIST사용자가 특정 프로그램을 저장하겠다고 표시하면 시스템이나 앱에 의해 삽입됩니다.

다음을 사용하십시오 WatchNextProgram.Builder:

WatchNextProgram.Builder builder = new WatchNextProgram.Builder();
builder
.setType(TvContractCompat.WatchNextPrograms.TYPE_CLIP)
       
.setWatchNextType(TvContractCompat.WatchNextPrograms.WATCH_NEXT_TYPE_CONTINUE)
       
.setLastEngagementTimeUtcMillis(time)
       
.setTitle("Title")
       
.setDescription("Program description")
       
.setPosterArtUri(uri)
       
.setIntentUri(uri)
       
.setInternalProviderId(appProgramId);

Uri watchNextProgramUri = context.getContentResolver()
       
.insert(TvContractCompat.WatchNextPrograms.CONTENT_URI, builder.build().toContentValues());

사용 TvContractCompat.buildWatchNextProgramUri(long watchNextProgramId)만들기 위해 Uri당신이 시계 다음 프로그램을 업데이트해야합니다.

사용자가 Watch Next 채널에 프로그램을 추가하면 시스템은 채널에 프로그램을 복사합니다. 그것은 TvContractCompat.ACTION_PREVIEW_PROGRAM_ADDED_TO_WATCH_NEXT프로그램이 추가되었음을 앱에 알리기 위한 의도 를 보냅니다 인 텐트에는 복사 된 프로그램 ID와 다음 채널보기 채널에서 프로그램 용으로 생성 된 프로그램 ID가 포함됩니다.

프로그램 업데이트

프로그램의 정보를 변경할 수 있습니다. 예를 들어 영화 대여 가격을 업데이트하거나 사용자가 시청 한 프로그램의 양을 보여주는 진행률 막대를 업데이트 할 수 있습니다.

를 사용하여 PreviewProgram.Builder변경해야하는 속성을 설정 한 다음 getContentResolver().update프로그램을 업데이트하기 위해 호출 하십시오. 프로그램을 처음 추가 할 때 저장 한 프로그램 ID를 지정하십시오.

context.getContentResolver().update(TvContractCompat.buildPreviewProgramUri(programId),
    builder
.build().toContentValues(), null, null);

프로그램 삭제하기

context.getContentResolver().delete(TvContractCompat.buildPreviewProgramUri(programId), null, null);

사용자 작업 처리


앱을 사용하면 채널을 표시하고 추가 할 수있는 UI를 제공하여 사용자가 콘텐츠를 쉽게 찾을 수 있습니다. 앱이 홈 화면에 표시된 후에도 채널과의 상호 작용을 처리해야합니다.

채널 발견 및 추가

앱에서 채널을 선택하고 추가 할 수있는 UI 요소 (예 : 채널 추가를 요청하는 버튼)를 제공 할 수 있습니다. 사용자가 특정 채널을 요청하면이 코드를 실행하여 홈 화면 UI에 추가 할 수있는 권한을 얻습니다.

Intent intent = new Intent(TvContractCompat.ACTION_REQUEST_CHANNEL_BROWSABLE);
intent
.putExtra(TvContractCompat.EXTRA_CHANNEL_ID, channelId);
try {
   activity
.startActivityForResult(intent, 0);
} catch (ActivityNotFoundException e) {
 
// handle error
}

시스템은 사용자에게 채널 승인을 요청하는 대화 상자를 표시합니다. onActivityResult활동 의 방법 ( Activity.RESULT_CANCELED또는 Activity.RESULT_OK에서 요청의 결과를 처리하십시오 .

Android TV 홈 화면 이벤트

사용자가 앱에서 게시 한 프로그램 / 채널과 상호 작용하면 홈 화면에서 앱에 인 텐트를 전송합니다.

  • 홈 스크린은 Uri사용자가 채널의 로고를 선택할 때 채널의 APP_LINK_INTENT_URI 속성에 저장된 앱을 앱으로 보냅니다 앱은 기본 UI 또는 선택한 채널과 관련된보기를 시작해야합니다.
  • 홈 화면은 Uri사용자가 프로그램을 선택할 때 프로그램의 INTENT_URI 속성에 저장된 것을 앱에 보냅니다 앱에서 선택한 콘텐츠를 재생해야합니다.
  • 사용자는 더 이상 프로그램에 관심이없고 홈 화면의 UI에서 제거하려고 함을 나타낼 수 있습니다. 시스템은 UI에서 프로그램을 제거하고 프로그램의 ID와 함께 프로그램을 소유 한 앱에 인 텐트 (android.media.tv.ACTION_PREVIEW_PROGRAM_BROWSABLE_DISABLED 또는 android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED)를 보냅니다. 앱은 프로 바이더로부터 프로그램을 삭제해야하고 다시 삽입해서는 안됩니다.

Uris홈 화면이 사용자 상호 작용을 위해 보내는 모든 것에 대한 인 텐트 필터를 만들어야합니다 예 :

<receiver
   
android:name=".WatchNextProgramRemoved"
   
android:enabled="true"
   
android:exported="true">
   
<intent-filter>
       
<action android:name="android.media.tv.ACTION_WATCH_NEXT_PROGRAM_BROWSABLE_DISABLED" />
   
</intent-filter>
</receiver>

모범 사례


  • 앱은 기본 채널을 삽입하고 가능한 한 빨리 사용자에게 콘텐츠를 제공해야합니다. 앱을 설치 한 후 시스템이 전송 BroadcastReceiver하는 android.media.tv.action.INITIALIZE_PROGRAMS"wakeup"인 텐트를 수신 하는 장치 를 추가하여이 작업을 수행 할 수 있습니다 드물 긴하지만 사용자가 앱을 시작하면 앱에서 '깨우기'브로드 캐스트를 수신 할 수 있습니다. 코드에서 기본 채널을 두 번 이상 추가하면 안됩니다.
  • 앱이 포 그라운드에 있지 않고 채널이나 프로그램을 업데이트해야하는 경우에는 JobScheduler을 사용 하여 작업을 예약하십시오 ( JobScheduler 및 JobService 참조 ).
  • 앱이 오작동하는 경우 시스템에서 앱의 제공자 권한을 취소 할 수 있습니다 (예 : 데이터로 제공자를 지속적으로 스팸하는 경우). 보안 예외를 처리하려면 try-catch 절을 사용하여 공급자에 액세스하는 코드를 래핑해야합니다.
  • 프로그램 및 채널을 업데이트하기 전에 공급자에게 데이터를 업데이트하고 조정해야하는 데이터를 쿼리하십시오. 예를 들어 사용자가 UI에서 제거하려는 프로그램을 업데이트 할 필요가 없습니다. 기존 데이터를 쿼리 한 다음 채널 승인을 요청한 후 공급자에 데이터를 삽입 / 업데이트하는 백그라운드 작업을 사용하십시오. 앱이 시작될 때와 앱이 데이터를 업데이트해야 할 때마다이 작업을 실행할 수 있습니다.

     try (Cursor cursor =
              context
    .getContentResolver()
                     
    .query(
                             
    TvContractCompat.buildChannelUri(channelId),
                             
    null,
                             
    null,
                             
    null,
                             
    null)) {
         
    if (cursor != null && cursor.moveToNext()) {
             
    Channel channel = Channel.fromCursor(cursor);
             
    if (channel.isBrowsable()) {
                 
    //update channel's programs
             
    }
         
    }
     
    }
  • 모든 이미지 (로고, 아이콘, 내용 이미지)에 대해 고유 한 Uris를 사용하십시오. 이미지를 업데이트 할 때 다른 Uri를 사용해야합니다. 모든 이미지가 캐싱됩니다. 이미지를 변경할 때 Uri를 변경하지 않으면 이전 이미지가 계속 나타납니다.

  • WHERE 절은 허용되지 않으며 WHERE 절을 사용하여 공급자에 대한 호출은 보안 예외를 throw합니다.

이전 버전과의 호환성


속성


이 절에서는 채널 및 프로그램 속성을 별도로 설명합니다.

채널 속성

모든 채널에 대해 다음 속성을 지정해야합니다.

속성노트
유형로 설정됩니다 TYPE_PREVIEW.
DISPLAY_NAME채널 이름으로 설정하십시오.
APP_LINK_INTENT_URI사용자가 채널의 로고를 선택하면 시스템은 채널과 관련된 컨텐츠를 제공하는 활동을 시작하기위한 의도를 보냅니다. 이 액티비티의 인 텐트 필터에 사용 된 Uri에이 애트리뷰트를 설정한다.

또한 채널에는 내부 앱 사용을 위해 예약 된 6 개의 입력란이 있습니다. 이 입력란은 앱이 채널을 내부 데이터 구조에 매핑하는 데 도움이되는 키 또는 기타 값을 저장하는 데 사용할 수 있습니다.

  • INTERNAL_PROVIDER_ID
  • INTERNAL_PROVIDER_DATA
  • INTERNAL_PROVIDER_FLAG1
  • INTERNAL_PROVIDER_FLAG2
  • INTERNAL_PROVIDER_FLAG3
  • INTERNAL_PROVIDER_FLAG4

프로그램 속성

비디오 프로그램 속성

비디오 프로그램의 속성은 프로그램 유형에 따라 다릅니다. 비디오 프로그램은 다음 유형 중 하나 일 수 있습니다.

  • TYPE_MOVIE
  • TYPE_TV_SERIES
  • TYPE_TV_SEASON
  • TYPE_TV_EPISODE
  • TYPE_CLIP
  • TYPE_EVENT
  • TYPE_CHANNEL

속성은 두 개의 그룹, 즉 필수 속성과 선택적 속성에 속합니다.

필수 동영상 속성

모든 유형의 비디오 프로그램에 대해 다음 속성을 지정해야합니다.

  • INTENT_URI
  • CHANNEL_ID
  • 표제
  • POSTER_ART_ASPECT_RATIO
  • POSTER_ART_URI

이러한 속성은 일부 유형의 비디오 프로그램에 필요하며 다른 속성에는 선택적입니다. 속성이 선택 사항 인 경우 괄호로 묶습니다.

속성영화TV 시리즈TV 시즌TV 에피소드클립행사채널
CONTENT_RATING(✔)(✔)(✔)
DURATION_MILLIS(✔)
EPISODE_DISPLAY_NUMBER
SEASON_DISPLAY_NUMBER
선택적 비디오 속성

이러한 선택적 속성은 프로그램 유형에 따라 사용할 수 있습니다.

속성영화TV 시리즈TV 시즌TV 에피소드클립행사채널
저자
유효성
CANONICAL_GENRE
EPISODE_TITLE
INTERACTION_COUNT
INTERACTION_TYPE
INTERNAL_PROVIDER_ID
ITEM_COUNT
살고 있다
LOGO_URI
가격을 제시하다
PREVIEW_VIDEO_URI
출시일
REVIEW_RATING
REVIEW_RATING_STYLE
간단한 설명
STARTING_PRICE
THUMBNAIL_ASPECT_RATIO
THUMBNAIL_URI
VIDEO_HEIGHT
VIDEO_WIDTH
무게
이미지 미리보기

미리보기 이미지에 권장되는 크기는 다음과 같습니다.

종횡비신장
16:9272dp153dp
3:2229.5dp153dp
4:3204dp153dp
1:1153dp153dp
2:3102dp153dp

최상의 품질을 얻으려면 미리보기 비디오가 16 : 9 또는 4 : 3이고 위의 표에 지정된 크기 이상이어야합니다. 로고는 또한 최상의 사용자 경험을 위해 불투명해야합니다.

VIDEO_WIDTH 및 VIDEO_HEIGHT를 사용하여 정확한 미리보기 비디오 크기를 지정할 수 있습니다.

오디오 프로그램 속성

오디오 프로그램의 속성은 프로그램 유형에 따라 다릅니다. 오디오 프로그램은 다음 유형 중 하나 일 수 있습니다.

  • TYPE_TRACK
  • TYPE_ALBUM
  • TYPE_ARTIST
  • TYPE_PLAYLIST
  • TYPE_STATION

속성은 두 개의 그룹, 즉 필수 속성과 선택적 속성에 속합니다.

필수 오디오 속성

모든 유형의 오디오 프로그램에 대해 다음 속성을 지정해야합니다.

  • INTENT_URI
  • CHANNEL_ID
  • POSTER_ART_URI
  • POSTER_ART_ASPECT_RATIO
  • 표제

또한 DURATION_MILLIS오디오 트랙에 필요합니다.

선택적 오디오 속성

이러한 선택적 속성은 프로그램 유형에 따라 사용할 수 있습니다.

속성선로앨범예술가재생 목록
저자
유효성
INTERACTION_COUNT
INTERACTION_TYPE
INTERNAL_PROVIDER_ID
살고 있다
LOGO_URI
가격을 제시하다
PREVIEW_VIDEO_URI
출시일
간단한 설명
STARTING_PRICE
THUMBNAIL_ASPECT_RATIO
THUMBNAIL_URI
VIDEO_HEIGHT
VIDEO_WIDTH
무게

다음 프로그램 속성보기

다음 비디오보기 채널에 오디오 또는 비디오 프로그램을 추가 할 때 오디오 / 비디오의 필수 및 선택 속성 외에도 다음 속성을 포함해야합니다.

속성노트
WATCH_NEXT_TYPE다음 채널보기 프로그램 유형 중 하나를 선택하십시오 .
LAST_ENGAGEMENT_TIME_UTC_MILLIS사용자 / 앱이 마지막으로 프로그램에 참여한 시간입니다.
LAST_PLAYBACK_POSITION_MILLISWATCH_NEXT_TYPE_CONTINUE에만 필요합니다.
DURATION_MILLISWATCH_NEXT_TYPE_CONTINUE에만 필요합니다.

https://developer.android.com/training/tv/discovery/recommendations-channel.html



안드로이드TV OS (ATV OS)에서 맨 상단의 추천 컨텐츠 라인이 없어질 것 이라고 합니다.

그러나, 안드로이드 TV 8 버젼에서 부터 지원됩니다.




Google, Android TV의 Oreo 레거시 권장 사항 행 폐지


2017 년 12 월 26 일 - John Anon 저


지난 주말 Google 은 Android TV 에서 기존 권장 사항을 단계적으로 중단한다고 발표했습니다 확인은 Android 개발자 블로그를 통해 이루어졌습니다. 발표는 주로 Android TV 앱 개발자에게 변경 사항을 알리기 위해 고안되었습니다. 변경 사항을 적용하기 전에 앱에 필요한 사항을 변경하고 설명을 위해 Android 8.0 (Oreo)을 실행하는 기기에만 영향을 미칩니다.

이것은 근본적으로 전통적인 '추천 행'이 더 이상 Android TV (leanback) 실행기 인터페이스에 표시되지 않음을 의미합니다. 이것은 안드로이드 TV가 시작된 이래로 필수품이었으며 따라서 상당히 제거되었습니다. 발표가 발표됨에 따라 Android TV 앱의 일반적인 권장 사항이 계속 표시되므로 앱을 완전히 삭제하지는 못합니다. 그들이 보관되어있는 행의 차이점은 전용 권장 사항 섹션 대신 '채널'양식을 채택한 행이있는 실행기 맨 위에서 맨 아래로 재배치됩니다.


사실, '채널'은 왜이 변화가 지금 예정되어 있는지에 대한 이유 중 하나입니다. Google이 Oreo 업데이트를 처음 발표했을 때Android TV의 경우 Android TV 채널의 개념을 도입했습니다. 이를 통해 Android TV 앱 개발자는 홈페이지에 전용 채널을 만드는 기능을 사용할 수 있습니다. 그러면 해당 앱의 여러 가지 추천 프로그램 / 클립이 강조 표시됩니다. 따라서 장치가 Oreo를 실행 중일 때 각 앱은 이전에 비해 출시 된 Leanback에서 볼 수있는 훨씬 더 많은 권장 컨텐츠를 볼 수 있습니다. 실제 권장 행을 요구 사항에 다소 과잉되게 만듭니다. 아직 새 채널 형식으로 전환하지 않은 앱의 경우 기울기 방지 실행 프로그램은 하단의 새 채널 섹션에 권장 사항을 표시합니다. 따라서 여전히 눈에 띄는 반면, 이전보다 더 많은 스크롤링이 필요합니다. Android TV (Android TV)의 이전 버전 (Nougat) 이하는 새로운 채널 기반 디자인을 사용하지 않기 때문에, 이 변경 사항은 적용되는 표준 권장 사항 행과 관련이 없습니다. 다음은 Google에서 제공하는 이미지의 예입니다 (아래쪽 아래쪽) "앱에서 추천 한 "채널은 앞으로 Android Oreo에서 보입니다.



https://www.androidheadlines.com/2017/12/google-phasing-out-android-tvs-oreo-legacy-recommendation-row.html





게시자 : Bejamin Baxter, 개발자 프로그램 엔지니어

Google I / O 2017 에서 Android TV 홈 화면의 재 설계를 발표 했습니다. 추천 행 개념을 확장하여 각 앱이 홈 화면에서 자체 행 (또는 여러 행)의 콘텐츠를 가질 수 있도록했습니다. 새로운 홈 화면이 출시 된 이후 Android Oreo에 대한 새로운 추천 채널이 다양한 앱에서 채택되었습니다.


새로운 채널을 사용하여 고품질 권장 사항이 부상하는 앱이 점점 더 많아지면서 Android O의 새로운 홈 화면에 있는 기존 권장 행 은 내년에 단계적으로 사라집니다.


현재 앱이 레거시 알림 기반 API로 추천을 만들면 해당 앱의 채널에 콘텐츠가 추가됩니다. Android N (또는 그 이하)에서 업그레이드 할 때 권장되는 콘텐츠가있는 경우 채널이 이미 존재할 수 있습니다. 앱 채널이없는 경우 자동으로 생성됩니다. 두 경우 모두 채널에서 프로그램을 추가하거나 제거 할 수는 없지만 채널을 이동, 숨기기 및 표시 할 수는 있습니다. 앱이 새 API를 사용하여 자체 채널을 추가하기 시작하면 시스템에서 자동 생성 채널을 삭제하고 앱이 콘텐츠 표시를 제어합니다.


내년에는 채널 자동 생성을 단계적으로 중단 할 예정입니다. 각 앱의 기존 권장 사항에 대해 하나씩 여러 채널을 생성하는 대신 모든 기존 권장 사항에 대해 하나의 채널을 삽입 합니다. 이 채널은 채널 목록 하단에 나타납니다. 사용자가 이동하거나 제거 할 수 있습니다. 사용자가 Android O로 업그레이드하면 Android N (및 그 이하)의 이전 추천 행이 홈 화면 하단의 채널이됩니다.

홈 화면의 새 채널에 콘텐츠를 게시하도록 앱을 업데이트하지 않은 경우 시작하려면 설명서 ,코드 랩 및 샘플 을 살펴보십시오.

우리는 홈 스크린의 새로운 변화를 이용하는 점점 더 많은 앱을 기대합니다. 의견을 보내 주시면 G + 의 Android TV 개발자 커뮤니티 를 방문하여 의견을 보내주세요 .


https://android-developers.googleblog.com/2017/12/phasing-out-legacy-recommendations-on.html




Google Mini 및 Logitech 하모니를 사용하여 TV를 제어하는 ​​방법



TV 리모컨을 사용하는 것보다 더 시원합니까? 음성으로 TV를 원격 제어. 그동안 Google 홈 미니 상자 밖으로 Chromecast를 TV와 Chromecast가와 호환됩니다 (자세한 내용은 Chromecast를 Google 홈 미니를 사용하는 방법을 참조하십시오), 당신은 또한 같은 중간 사용하여 다른 TV를 작동하도록 설정할 수 있습니다 로지텍의 하모니 허브 . 하모니 허브 (Harmony Hub)와 Google 홈 미니 (Google Home Mini)을 설치했다면 함께 사용할 수 있습니다.

 
03:39


1. "OK Google, 하모니에게 내 계정 연결을 요청하십시오."라고 말하십시오. 계정이 아직 연결되어 있지 않은 경우 Google 홈은 스마트 폰이나 태블릿에서 Google 홈 앱을 열라는 메시지를 표시합니다.

2. 스마트 폰 또는 태블릿에서 Google 홈 앱을 엽니 다.




3. 목록 맨 위에는 하모니 계정을 연결하도록 초대하는 카드가 있습니다. 목록이 보이지 않으면 목록을 새로 고치려면 상단에서 아래로 당겨 야 할 수도 있습니다. 링크를 살짝 누르십시오.

4. 다음 화면에서 인증 방법을 선택하십시오. 하모니 계정 설정 방법에 따라 Facebook 계정, Google 계정 또는 이메일 주소로 로그인 할 수 있습니다.

5. 필요한 경우 자격 증명을 입력하십시오.

6. Google이 Logitech 계정에 액세스하도록 허용하십시오 . 화면에서 Google이 액세스 할 수있는 기능을 자세하게 설명해야합니다. 내용을 확인한 다음 만족 스러울 때 승인을 누릅니다.


7. 하모니 계정에 연결된 장치를 기반으로 Logitech은 음성으로 트리거 할 수있는 가능한 활동 목록을 작성합니다. 해당 활동 옆에있는 친숙한 이름 추가 버튼을 눌러 다른 이름 (예 : 거실 TV의 경우 "거실")을 추가 할 수도 있습니다. 특정 활동으로 Google 홈을 사용하지 않으려는 경우, 해당 활동 옆의 확인란을 선택 취소하십시오. 끝나면 오른쪽 상단에있는 오른쪽 방향 화살표를 탭하십시오.

8. Google 홈을 설정하여 특정 TV 방송국에 음성으로 요청할 수도 있습니다. 하모니 앱을 통해 이미 좋아하는 TV 채널을 구성해야합니다. 이 화면을 사용하여 CBS, FOX, PBS 등과 같은 친숙한 이름을 지정할 수 있습니다. 추가하려면 친숙한 이름 추가를 누릅니다. 작업이 끝나면 오른쪽 상단에있는 오른쪽 방향 화살표를 탭합니다.

9. 마지막 화면에서 계정 연결을 눌러 프로세스를 완료하십시오.

10. 이제 구성 활동을 음성으로 실행하고 "OK Google, 하모니에게 TV 켜기"라고 말하여 TV를 켜십시오. 하모니에게 볼륨을 위아래로 돌리거나, 앞으로 건너 뛰거나, 일시 중지하거나, 특정 채널로 이동하고, 끝나면 TV를 끄도록 요청할 수 있습니다.  

11. 매번 "하모니 (ask harmony)"라고 말할 필요가 없도록 이러한 활동에 대한 바로 가기를 구성 할 수도 있습니다 Google 홈 앱 왼쪽 상단의 메뉴 버튼을 탭합니다.


12. 기타 설정을 누릅니다. 

13. 아래로 스크롤하여 바로 가기를 선택하십시오.

14. 오른쪽 하단의 새 바로 가기 (+) 버튼을 누릅니다.

15. "When I Say"텍스트 필드 옆의 마이크를 누릅니다.

16.이 화면에서 마이크 단추를 누르고 만들려는 바로 가기를 말하십시오. 예를 들어, "TV 켜기"

17. 바로 가기 추가 화면 이 나타나면 "The Google Assistant should ..."필드 옆의 마이크를 누릅니다.


18. 마이크를 누르고 바로 가기를 말할 때 Google 홈에서 수행 할 명령 을 말합니다. 이 경우에는 "하모니에게 TV 켜기를 요청하십시오."

19. 저장을 누릅니다.


20. 이제 "OK Google, TV 켜기"라고 말할 수 있습니다. 다른 명령의 바로 가기를 만들려면 14-19 단계를 반복하십시오. 예를 들어 "TV 켜기"대신 "TV보기"를 원할 경우 단일 명령에 대해 여러 개의 바로 가기를 추가 할 수도 있습니다.


https://www.tomsguide.com/us/google-home-mini-logitech-harmony-setup,review-5012.html








Ubuntu에서 Android 앱 지원을 제공하는 UBPorts (Anbox를 통해)


캐 노니 컬 (Canonical)  이 올해 초 스마트 폰용 우분투 리눅스 소프트웨어 개발을 포기한 이후, UBPorts 개발자 그룹은 캐 노니 컬 (Canonical)이 중단 한 부분을 선택하기로 결정했다 .

커뮤니티 기반 프로젝트는 캐 노니 컬 (Canonical)과 같은 회사의 자원을 가지고 있지 않지만 개발자는 여전히 스마트 폰에서 우분투를 실행하는 아이디어를 좋아하기 때문에 소프트웨어 개발을 계속하고 공식 및 비공식 빌드를 출시 했습니다. 다수의 장치 .

물론 스마트 폰에서 Android 나 iOS 이외의 다른 것을 실행하는 데있어서 가장 큰 문제 중 하나는 대다수의 모바일 앱이 작동하지 않는다는 것입니다.하지만 UBPorts가 솔루션을 과시하기 시작했습니다. Android 앱은 기본적으로 일부 우분투 전화. 거의.

최신 커뮤니티 업데이트에서 개발 팀은 Ubuntu Touch 버전이 올해 초에 논의한 도구 인 Anbox를 지원한다고 발표했습니다.이 도구는 GNU / Linux 운영 체제에서 Android 응용 프로그램을 실행할 수있게합니다.

Anbox를 사용하면 기본적으로 Android 시스템을 Ubuntu (또는 다른 GNU / Linux 배포판)와 동일한 Linux 커널을 사용하여 장치와 상호 작용하는 컨테이너에 넣을 수 있으므로 Android 응용 프로그램을 기본 응용 프로그램처럼 실행할 수 있습니다.

이 시점에서 Ubuntu Touch 용 Anbox는 아직 많은 작업이 진행 중입니다. 컨테이너 방식이기 때문에 스마트 폰 카메라 나 다른 하드웨어를 아직 지원할 수 없습니다.

UBPorts 개발자들은 소프트웨어가 비교적 강력한 기능을 필요로하기 때문에 Ubuntu Touch를 실행할 수있는 모든 휴대 전화에서 작동하지 않을 것이라고 말합니다. 예를 들어 Ubuntu와 함께 출하되었던 저렴한 BQ 스마트 폰은 아마도 처음에는 지원되지 않을 것입니다.

수백만 개의 Android 앱을 실행할 수있는 Ubuntu 기반 휴대 전화를 꿈꾸는 경우라면 꿈이 현실이되는 데 조금 더 가깝습니다.

를 통해 CuriousPost , UBPorts 포럼 및 UBPorts 커뮤니티 업데이트 (19) (33 개의 분 후 시작)

https://liliputing.com/2017/12/ubports-bringing-android-app-support-ubuntu-phones-via-anbox.html






U5 SBC PCB 레이아웃 초안 171227

 

안녕하십니까 ?  EddyLab입니다.

이전에 U5 SBC 제품 개발 관련 이야기를 드린 바 있습니다.


U5 SBC 제품발표 및 개발 비하인드 스토리 (1)




오늘은 후속 이야기로 실질적인 제품 개발 과정을 소개해 드립니다.


U5 SBC PCB 레이아웃 초안 171227 입니다.  ^^

아직 일부 부품 변경이 아직 있을 예정입니다만,
전체적인 레이아웃은 그대로 진행될 것 같습니다.

PCB사이즈는 100*100mm 입니다.

PCB 색상은 블랙으로 정하기로 하였습니다.



U5 SBC_Pcb 초안 171227.pdf






RPi 3 Model BU5 SBC (tentative Project name)
SOCBCM2837Hi3798CV200
CPUQuard core A53@1.2GHzQuad core A53 @1.6GHz
GPUVideocore IVMail T720
RAM1GB SDRAM DDR32GB SDRAM DDR4
Storagemicro-SD16G eMMC 5.0
OSNOOBS, RASPBIA
LIBEELEC, UBUNTU MATE etc

Commercial Android TV OS 7.x with AoL (Android over Linux)    Native Linux : Debian (2018 will support)

Ethernet10/100100/1000
Wireless802.11/n Bluetooth 4.0none
Video OutputHDMI / CompositHDMI 2.0a
Audio OutputHDMI / HeadphoneHDMI / I2S / Passthrouth ATMOS & DTS-X support
GPIO40pin (3.3V, 5V Support)40pin (3.3V, 5V, 12V Support)
Tuner Module 사용시, 40pin 중 I2C1, I2C2 핀 사용불가
DRMnoneWidevine Level 1
Video 
Resolution

1080P@60fps@MP4

3840 x 2160@60fps, HEVC Profile1, 
10bit, BT2020, HDR10 Suppoort
Codec 
License
none, 
MP2 / VC-1 (Purchase separately)
include MP2 / Dolby AC3
SATA portnone1EA with HDD power connector 
(2.5inch HDD / 3.5inch HDD support)
USB 2.0 Port4x USB 2.0 Ports2x USB 2.0 Ports
USB 3.0 Portnone1x USB 3.0 Ports
Media CenterBlu-ray ISO, File folder Direct to Play, PQ Engine,
3D Subtitle, Post wall, Blu-ray Navigation (Menu) support
InputnoneIR / Mic input support
Boradcast Tunernone

ATSC 2.0 Tuner Slot (ATSC 2tuner Support)

Support AppAndroid : Netflix HD(1080p) / 4K, Youtube 4K@60fps, 
Google Move, Google Music
AoL (Andorid over Linux) : Torrent server, tvheadend, MiniDLNA Server etc..
Power5V/2.5A12V 2A (2.5inch HDD) 
12V3A (3.5inch HDD)





WiFi / BT 동글은 Sample을 입수하여 test를 진행하고 있습니다.




아직 U5PVR에 Sample 동글을 꼽아서는 인식을 하지 않았고 (SW이슈),
PC에 꼽아서는 Realtek 8828U  WiFi와 BT인식은 성공하였습니다.


3. 개발 일정


2018년 구정전까지 알파 test 샘플보드 생산하여 기본동작 test를 진행 할 예정입니다.


이번 U5 SBC는 다양한 기능 추가보다는 

안정적으로 동작하는 SBC 보드를 개발 할 목적이고,

외부 인터페이스 연결 기능을 기초로 응용가능한 범위를 넓혀보고자 합니다.







안녕하십니까 ?  EddyLab입니다.  

전주에 U5PVR 비디오 설정관련으로 하기 내용을 언급해 드린 것이 있었습니다. 


관련 내용을 U5team 사무실에 방문하여 LG OLED 기반에서 test를 해 보았습니다.

결론은 썩 좋은 결론은 아닙니다.  ^^

원본 UHD파일 자체가 아직은 4:2:0이고, 최대가 4:2:2 정도 입니다.

비디오 재생기의 환경설정을 4:4:4로 변경해도, 큰 변화는 느끼지 못하였습니다.

그리고 영화가 24fps 또는 30fps이기 때문에, 
해상도 설정값을 2160P@30fps로 설정하면서 4:4:4 10bit로 설정이 가능해 지지만,

오히려 U5PVR에서 4K@60fps 유투브 재생시에는 원인 모를 에러가 발생되고,
프레임드랍이 심하게 발생되는 내용이 확인이 되었습니다.


그러므로, U5PVR 비디오 설정관련으로는
2160P@60fps / 4:2:0 10bit를 권장 해 드립니다.

UHD영화 재생시에는 미디어센터(보라색)내에서 24Hz나 30Hz로 맞춰주는
Auto 프레임 기능을 활용하시는 것을 권장해 드립니다...
(아직 잘 동작하지 않을 수도 있습니다. ^^;;)


감사합니다.

 


Magic Leap의 증강 현실 안경은 2018 년에 나옵니다.


Magic Leap은 수년간 첨단 증강 현실 시스템을 제공 할 것으로 기대되어 왔으며, 이제는 Magic Leap One 헤드셋 과 함께 헤드셋 의 "Creator Edition"을 제공 할 예정입니다. 2018 년 개발자


회사는 지금까지 투자자로부터 거의 20 억 달러를 모았지만 Magic Leap은 지금까지 하드웨어에 대해 상당히 비밀 스럽다.

Magic Leap One 시스템에 대한 기술적 인 세부 사항은 여전히 ​​많지 않지만  Rolling Stone에는  Magic Leap One을 실제로 사용하는 것과 같은 내용이 있습니다.

우리가 알고있는 사실은 반투명 디스플레이가 달린 한 쌍의 안경, 모든 카메라와 센서, 그리고 터치 표면이 내장 된 무선 모션 컨트롤러가 있다는 것입니다.

이 시스템에는 벨트 또는 바지 주머니에 클립핑 할 수있는 "라이트 팩"컴퓨터도 포함되어 있습니다. Lightpack에 처리 능력을 오프로드함으로써, Magic Leap은 기존 버추얼 리얼리티 헤드셋보다 훨씬 편안하게 착용 할 수있는 헤드셋을 만들었습니다.

아, 그리고 정상적인 안경 위에이 헤드셋을 착용하는 방법에 대해 궁금해하시는 분은 없을 것입니다. Magic Leap은 처방 렌즈와 함께 작동하는 버전을 개발할 계획이므로 안경을 끼고 헤드셋을  교체 하십시오.

Magic Leap은 약속 한대로 현실감있게 현실감있게 가상 물체를 겹쳐 볼 수 있습니다. 그것은 우리가 휴대폰 에서 보기 시작 하는 일종의 기술 이지만, Star Wars와 Stranger Things 문자 를 휴대폰의 5.5 인치 디스플레이에 쏟아내는 대신 Magic Leap One을 일반적인 시야로 배치하여 사용자와 상호 작용할 수있게합니다 마치 그들이 같은 방에 실제로있는 것처럼.

룸 매핑 기술 덕분에 객체는 배치 된 위치에 머 무르므로 가상 항목으로 공간을 꾸밀 수 있으며 나중에 다시 반환 할 수 있습니다.

Magic Leap은 헤드셋에는 또한 사운드의 미묘한 변화를 통해 거리 및 기타 세부 사항을 전달함으로써 스테레오 사운드를 뛰어 넘는 3D와 같은 경험을 제공하는 "사운드 필드 오디오"시스템이 포함되어 있다고합니다.

Magic Leap One Creators Edition의 가격은 얼마인지에 대해서는 아직 알려지지 않았지만 Magic Leap은 헤드셋을 2018 년에 출시 할 예정인 "2018 년 초"에 소프트웨어 개발 키트를 제공하기 시작할 것이라고 말합니다. 이 시점에서 회사는 증강 현실 시스템의 소비자 버전을 출하 할 계획입니다.



















https://liliputing.com/2017/12/magic-leaps-augmented-reality-glasses-coming-2018.html




사진으로 보는 매직리프 CE, 어떤 기기일까?


체육관고래 영상으로 전 세계를 경악케했던 개발사 매직리프가 드디어 본격적인 항해에 나선다. 매직리프는 20일 자사 홈페이지를 통해 신규 HMD라인업인 '매직리프 크레이터 에디션(이하 매직리프CE)'을 공개했다. 




http://www.vrn.co.kr/news/articleView.html?idxno=8274

HDR10+ 마침내 100 편이 넘는 영화가 탄생했습니다. Amazon 4ime TV에서

에 의해  에 2017 12월 16일


삼성에서 발표 한 이번 주부터 아마존 프라임 비디오는 프라임 비디오 HDR 라이브러리 전체를 HDR10 + 포맷으로 스트리밍한다. HDR10 + 포맷은 프리미엄 QLED TV 모델을 포함 해 삼성의 2017 UHD TV 라인업 전체와 호환 될 것입니다.

HDR10 +는 이전 HDR10 하이 다이내믹 레인지 포맷보다 월등히 우수한 Dolby Vision 하이 다이나믹 레인지 포맷의 새로운 대안으로 아마존 및 다른 주요 업체와 공동으로 삼성에서 개발되었으므로 현재 HDR10의 개선 된 버전을 제공합니다 공개 표준. HDR10 표준 자체는 장면 특정 밝기 수준에도 불구하고 재생 중에 변경되지 않는 정적 메타 데이터를 사용합니다. HDR10 +는 각 장면의 톤 매핑을 적용하고 개별화하는 Dynamic Tone Mapping을 추가하여 장면 단위로 밝기 수준을 조정하고 프레임 단위로도 놀라운 밝기 수준을 조정하여 놀라운 시청 경험을 제공합니다.

HDR10 +는 여전히 Dolby Vision만큼 좋지 않습니다. HDR10 + 및 Dolby Vision은 모두 HDR 마스터 링을 위해 프레임 별 지침을 전달하는 동적 메타 데이터를 사용하지만 HDR10 +는 여전히 10 비트 색상 깊이로 고정되어 있으며 Dolby는 12 비트 팔레트 를 제공하고 최대 10,000 니트 밝기까지 지원합니다 HDR10 + 또는 이전 모델이 지원하도록 설계된 것을 초과합니다.

기존 라이벌 하이 다이나믹 레인지 표준과 함께 HDR10

기존 라이벌 하이 다이나믹 레인지 표준과 함께 HDR10

반면 Dolby Vision은 기술 사용료를 부과하는 반면 삼성의 HDR10 및 HDR10 +는 공개 표준으로 다른 TV 회사에서 무료로 채택 할 수 있습니다. 이것은 HDR 텔레비전 제조 비용  줄이고 형식을 홍보하고 인증 프로그램을 수립하기 위해 일종의 HDR10 + 동맹을 형성하기 위해 20 세기 폭스와 파나소닉 같은 다른 거대 기업에 HDR10 +을 채택하도록 권장했습니다. Netflix는 가까운 장래에 HDR10 +를 지원할 가능성에 대해서도 언급했습니다.

Amazon Prime Video HDR10 + 카탈로그에는 Prime Originals Grand Tour, Maisel, Mrs. Maisel, Jean-Claude Van Johnson, The Tick, 고 성의 남자 등 수백 시간의 컨텐츠가 포함되어 있습니다.

http://4k.com/news/hdr1-finally-arrives-with-over-100-titles-from-amazon-prime-for-samsung-tvs-22655/

+ Recent posts