글쓴이 보관물: Toughman

샤오미 미박스S 글로벌 버전

개요

샤오미 미박스S 글로벌 버전 은 순전히 개인적인 취향과 상황에 따라 선택했습니다. 별도의 지원을 받은 사실이 없습니다.

라즈베리파이로 구축된 동영상 및 넷플릭스 서버를 잘 이용하고 있었습니다. 특히 넷플릭스를 잘 보고 있었는데 어느날 부터인가 동영상이 재생은 되는데 화면이 이상하게 나타나는 현상이 있었습니다. 원래 라즈베리파이에서는 넷플릭스 프로그램이 지원되지 않습니다. 이것저것 바로 잡으려고 해 보았지만 잘 되지 않았고 해결될지도 확실하지 않았습니다. 그래서 셋탑박스를 구매하기로 마음 먹었습니다.

이름없는 제조사의 제품부터 가격이 꽤 나가는 제품까지 꽤 다양했는데 샤오미 미박스S 글로벌 버전이 필자에게는 적당해서 구매하게 되었습니다. 직구를 통해서 구매했는데 생각보다 배송이 빠르지는 않았습니다.

개봉

샤오미 미박스S 상자
샤오미 미박스S 상자

먼길(?)을 와서 그런지 상자가 약간 찌그러졌습니다. 하지만 안의 내용물은 문제없었습니다. 열어보니 본체가 바로 보입니다.

상자를 열어본 처음상태
상자를 열어본 처음상태

생각했던 것보다는 크기도 작고 가벼웠습니다. 윗면은 로고만 있고 아래는 다음과 같이 시리얼 정보가 있습니다.

아래 이미지
아래 이미지

상자 안쪽을 보니 전원어댑터, 리모콘, HDMI케이블 및 설명서가 같이 들어 있었습니다. 전원 어댑터는 EU 플러그로 구매했습니다. 리모콘용 건전지는 동봉되어 있지 않아서 AAA 건전지 2개를 사용했습니다.

전원어댑터, 리모콘, HDMI케이블
전원어댑터, 리모콘, HDMI케이블
본체와 설명서
본체와 설명서

설정

무선인터넷 접속 정보를 준비하고 전원, 모니터에 연결하니 잠시 후 설정 화면이 나타났습니다. 별다르게 어려운 것은 없으니 안내대로 진행하면 됩니다. 구글 계정에 로그인 하고 진행하면 넷플릭스, 유뷰브가 평소에 보던것과 같이 나타납니다.

구글 계정 로그인
구글 계정 로그인

장점

  1. 넷플릭스, 유튜브, 기타 동영상이 잘 재생됩니다.
  2. 구글 드라이브 같은 클라우드 저장소에 동영상 파일을 올려서 바로 재생할 수 있는 것이 매우 편했습니다. 파일 관리 앱을 설치해서 설정하면 됩니다.

단점

  1. USB 2.0 포트만 지원해서 외장 드라이브로 파일을 복사하거나 할 때 오래 소요됩니다.
  2. 간혹 리모콘, 시스템이 반응하지 않는 경우가 있습니다. 내부적으로 무엇인가 작업을 하는 것 같은데 진행상황을 알 수 없어 될때까지 기다려야 합니다.
  3. 리모콘 음성 찾기가 잘 되지 않았습니다. 발음이 나쁜것인지 요령이 없어서인지 원하는 컨텐츠를 검색하기가 어려웠습니다.
  4. 완전종료가 없고 리모콘의 전원버튼을 길게 누르면 재부팅만 있습니다. 필자의 경우 많이 사용하지 않는 편이라 그럴때는 완전히 시스템을 종료하고 싶은데 불가능합니다.
  5. 출력이 약해서 앰프기능이 없는 스피커를 연결하면 소리가 작습니다. 필자는 사용하던 앰프를 연결해서 문제가 없었는데 샤오미 박스S 자체만으로 큰 출력을 내기는 어렵습니다.

개인적으로 느끼는 단점의 개수가 많지만 이것을 모두 감수할 만큼 동영상 재생은 아주 만족스러웠습니다.

Android view binding 적용

개요

개발 중인 앱에서 kotlin 버전 변경 후 다음과 같은 경고가 나타났습니다.

The ‘kotlin-android-extensions’ Gradle plugin is deprecated. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.android.com/topic/libraries/view-binding) and the ‘kotlin-parcelize’ plugin.

경고 메시지

kotlin-android-extensions gradle 플러그인이 deprecated 되었으니 가이드를 참고해서 마이그레이션하라는 내용입니다. 해당 링크를 확인해 보면 그 방법이 잘 안내되어 있습니다. View binding의 기능과 기존 Activity 에 적용하는 방법을 알아보도록 하겠습니다.

View binding

View binding 에 대한 내용은 이곳에서 확인하실 수 있습니다. 요약하자면 View 와 상호작용하는 코드를 더 쉽게 작성할 수 있게 해 주는 기능입니다. 대부분의 경우 findViewById 를 대치한다고 합니다. 코드내에서 findViewById 를 사용할 필요가 없게 됩니다. findViewById 와는 달리 Null 참조 위험이 없고 Type 도 레이아웃내의 요소와 일치하기 때문에 이전에 발생할 수 있었던 불일치 문제가 없다고 합니다. 레이아웃 XML 과 대응되는 binding class 가 생성되고 그 이름은 레이아웃 파일명에 camel case 가 적용된 후 뒤쪽에 Binding 이 추가된 형태가 됩니다. 예를 들면 다음과 같습니다.

activity_main.xml -> ActivityMainBinding

마이그레이션

먼저 모듈 수준 build.gradle 파일에 다음 내용을 추가합니다.

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

그 다음 앱 수준 build.gradle 파일에서 다음 내용을 삭제합니다.

apply plugin: `kotlin-android-extensions`

Activity 코드에서 다음과 같이 수정합니다.

private lateinit var viewBinding: ActivityMainBinding

super.onCreate(savedInstanceState)
viewBinding = ActivityMainBinding.inflate(layoutInflater)
val view = viewBinding.root
setContentView(view) //setContentView(R.layout.activity_main) 기존 코드

viewBinding.userName.text = "text" //userName.text = "text" 기존 코드

1행에서 변수를 정의합니다. 4~6 행과 같이 레이아웃 설정 부분을 수정합니다. 8행과 같이 레이아웃에 있는 요소를 참조하면 됩니다. 참고로 기존의 코드도 주석 뒤쪽에 넣었습니다.

이상으로 view binding 을 기존 activity 에 적용하는 방법을 알아보았습니다.