안드로이드 Navigation Key가 Software인지 Hardware인지 확인하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public boolean hasSoftwareKeys() { boolean hasSoftwareKeys = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){ Display display = getWindowManager().getDefaultDisplay(); DisplayMetrics realMetrics = new DisplayMetrics(); display.getRealMetrics(realMetrics); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); hasSoftwareKeys = (realMetrics.widthPixels - metrics.widthPixels) > 0 || (realMetrics.heightPixels - metrics.heightPixels) > 0; } else { boolean hasMenuKey = ViewConfiguration.get(this).hasPermanentMenuKey(); boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK); hasSoftwareKeys = !hasMenuKey && !hasBackKey; } return hasSoftwareKeys; } |
안드로이드 StatusBar, ActionBar, NavigationBar 높이 가져오기
StatusBar
1 2 3 4 5 | int statusBarHeight = 0; int resId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resId > 0) { statusBarHeight = getResources().getDimensionPixelSize(resId); } |
ActionBar
1 2 3 4 5 6 | int actionBarHeight = 0; final TypedArray styledAttributes = getTheme().obtainStyledAttributes( new int[] { android.R.attr.actionBarSize } ); actionBarHeight = (int) styledAttributes.getDimension(0, 0); styledAttributes.recycle(); |
NavigationBar
1 2 3 4 5 | int navigationBarHeight = 0; int resId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); if (resId > 0) { navigationBarHeight = getResources().getDimensionPixelSize(resId); } |
Docker 한글 문제와 TimeZone 수정하는 방법
Docker를 활용하여 필요한 Image를 만들어서 사용하는 경우가 있는데 한글이 제대로 표시되지 않거나 한글 파일명 처리에 문제가 발생하는 경우가 있습니다. 또한 TimeZone의 기본값이 UTC이기 때문에 필요에 따라 변경을 해야하는 경우가 있습니다. 이런 경우 간단하게 Dockerfile을 몇 줄만 추가하여 주시면 됩니다. Dockerfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # 사용하려는 Docker Image FROM ubuntu:16.04 # fonts-noto-cjk는 일본어/중국어도 필요한 경우에만 추가해 주시면 됩니다. RUN apt-get update && apt-get install -y \ language-pack-ko \ fonts-nanum \ fonts-nanum-coding \ fonts-noto-cjk # 언어 설정 RUN locale-gen ko_KR.UTF-8 ENV LANG ko_KR.UTF-8 ENV LANGUAGE ko_KR.UTF-8 ENV LC_ALL ko_KR.UTF-8 # TimeZone 설정 ENV TZ Asia/Seoul RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone |
Build and Run
1 2 3 | docker build -t myimage:1.0 . docker run -d -it --name mycontainer myimage:1.0 /bin/bash |
Verify
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | root@a3c20cb6212d:/$ locale LANG=ko_KR.UTF-8 LANGUAGE=ko_KR.UTF-8 LC_CTYPE="ko_KR.UTF-8" LC_NUMERIC="ko_KR.UTF-8" LC_TIME="ko_KR.UTF-8" LC_COLLATE="ko_KR.UTF-8" LC_MONETARY="ko_KR.UTF-8" LC_MESSAGES="ko_KR.UTF-8" LC_PAPER="ko_KR.UTF-8" LC_NAME="ko_KR.UTF-8" LC_ADDRESS="ko_KR.UTF-8" LC_TELEPHONE="ko_KR.UTF-8" LC_MEASUREMENT="ko_KR.UTF-8" LC_IDENTIFICATION="ko_KR.UTF-8" LC_ALL=ko_KR.UTF-8 root@a3c20cb6212d:/$ date 2017. 10. 24. (화) 18:04:53 KST |
시놀로지 Audio Station에서 파일명으로 보는 방법
시놀로지 Audio Station에서 Top 100곡 등 파일 명으로 순서가 관리되는 경우 제대로 표시 할 수 없는 문제가 있습니다. 이때 MP3파일의 ID3 Tag를 지워주면 Audio Station에 파일명이 노래 제목으로, 폴더명이 앨범명으로 표시되게 됩니다. 하지만 Audio Station에서는 ID3 Tag를 편집하는 기능을 제공해 주지면 제거 할 수 있는 기능은 제공해주지 않습니다. 그래서 특정 폴더 내의 모든 MP3파일의 ID3 […]