구글 I/O Extended Seoul에서 발표한 Android N



구글 IO때 예상된 일정에는 차질 없다. 빠른 시일내에 N테스트를 해야한다.


스크린 줌 설정

런타임시 화면 밀도가 바뀔 수 있으니 테스트해봐야 한다. Bitmap을 캐쉬해두는 경우 문제가 될수 있다. 고사양 기기가 sw320dp를 가질 수도 있으니 염두해둔다.


멀티스크린

가로/세로 모드를 반드시 구현해라.
멀티스크린 모드로 인해 화면이 작아 질수 있으니 최소 220dp(w/h)가 지원되도록 개발해야한다.
사용자가 화면크기를 늘리거나 줄일떄 기본으로 Activity가 재 생성되며, 필요에 따라 onConfigurationCahaged() 이벤트로 처리 할 수 있다.
attr#resizedableActivity값은 기본적으로 TRUE이며 필요에 따라 속성을 변경 하면된다. 단, Root Activity의 FLAG의 속성에 따라 작동 유무가 판단된다.

targetSdk 24를 쓰면서 멀티스트린 지원하지 않게 하는 팁!
* targetSdk = 24
* resizedableActivity = false
* launchMode = singleInstance | singleTask

앱간의 Drag and Drop API도 있으니 필요시에 사용가능하다.


배터리 최적화 모드(Doze)

Doze on the Go (light Doze모드) 새기능 추가
움직임이 있더라도 사용자가 폰을 일정시간 사용하지 않으면 doze모드 진입
네트워크 작업 중단, 잡스케줄러 지연
이미 Doze모드에 최적화된 앱은 별도로 신경 쓸 필요는 없다.

테스트

#adb shell dumpsys deviceidle step light

Doze모드 whitelist에 추가 하는 API도 있는데 잘못 하용하면 앱이 내려갈 수 있다.

참고: 안드로이드 앱 배터리 최적화 무시방법


메모리 최적화 모드

Broadcast 이벤트를 처리시 많은 앱에서 동시에 처리 하는경우 문제가 된다. 동시에 수많은 앱에서 이벤트를 처리 하기때문에 성능적으로 문제가 되며, 특히 사용하고 있지 않는 앱도 이벤트를 받는등 불필요한 작업이 있을 수 있다.

런타임시에 등록한 경우는 작동되나 안드로이드 메니페스트에서 선언한 Broadcast의 경우 작동하지 않는다.
CONNECTIVITY_CHANGE, NEW_PICTURE, NEW_VIDEO는 메니페스트에서 선언한 Broadcast의 경우 N부터 작동하지 않는다.

테스트

#adb shell cmd appops set <package-name> RUN_IN_BACKGROUND igenore



유용한 맥 OS X TIP

윈도우 환경에서는 별도의 프로그램을 써야 하는 기능들이 맥에는 기본적으로 제공하지만 잘 알지 못해 쓰지 못는 경우가 있다. 유용하게 쓸수 있고 많이 쓰이는 팁을 몇가지 소개 하겠다.
숨긴 파일및 디렉토리 표시
 
터미널에서 다음과 같이 명령어를 입력.
defaults write com.apple.finder AppleShowAllFiles -bool true

대기상태로 진입
빠르게 단축 키를 통해 진입 가능하다.
⌘(command) +⌥(option) + (eject)

화면 캡쳐
특정 영역 선택해서 캡쳐
⌘(command) + ⇧(shift) + 4
특정 창만 선택해서 캡쳐
⌘(command)  + ⇧(shift) + 4 누른 후 스페이스 키
전체 화면 캡쳐
⌘(command)  + ⇧(shift) + 3

연결된 와이파이 상태 자세히 보기
상단 상태바의 와이파이 모양을 option키를 누른 상태에서 클릭

 

 

구글 웨어러블 장치를 위한 Android Wear 공개

금일 구글은 웨어러블 장치를 위한 안드로이드 Wear이라는 운영체제 시스템을 공개했습니다. 이 시스템은 스마트워치를 중점으로 설계되었으며, 구글은 스마트워치의 인터페이스가 어떻게 작동되는지에 대해 두가지의 영상도 공개했습니다.

스마트워치는 모토로라와 LG에서 먼저 제조할 것 이며 LG는 다음분기에 출시할 것이라고 엔가젯에서 내다보고 있습니다. 이외에 삼성이나 아수스, HTC등의 파트너사에서도 제조할 것 입니다. 이 외에도 패션 브랜드가 분명히 Wear 운영체제를 사용한 스마트워치를 내 놓을 것이라고 생각됩니다.

몇 가지 주요기능중 가장 중점을 둘것은 피트니스가 아닐까 싶습니다. 스마트워치의 다양한 센서를 통해서 실시간 속도, 이동거리등 다양한 정보를 수집해서 사용자에게 보여줄 수 있습니다. 


안드로이드의 노티피케이션의 모든 알림을 Wear로 전송이 가능합니다. 이뿐만아니라 Wear를 통해서 구글의 다양한 기기들과 연결이 가능합니다. 예를 들어 구글 크롬케스트를 통해 비디오나 음악을 듣고 있는 경우 스마트워치의 음성명령을 통해 재생을 컨트롤 할 수 있습니다.  

기존의 안드로이드 스마트폰에서 서포트 라이브러리(wearable-preview-support.jar)를 통해서 Wear과 연결을 쉽고, 다양한 기능을 개발 할 수 있도록 지원해줍니다. 아직 많은 정보를 공유를 안해서 모르겠는데, 내부 센서 제어및 센서의 데이터를 어떻게 처리하는지에 대해서는 아직 모르겠습니다. 이번 2014년 구글  I/O를 통해서 많은 내용들이 밝혀질 것 같기도 합니다. 


Wear는 스마트워치용 O/S여서 보다 안드로이드의 스마트폰과 결합 했을때의 무궁 무진한 활용성이 강력한 무기입니다. 기존의 피트니스 관련앱이나 메시징 관련 앱들이 스마트워치를 통해서 좀 더 활용성이 높일 수 있을 것이라 생각됩니다.  

http://developer.android.com/wear

Daum DevDay 15th 후기

Daum Devday에 다녀온지 벌써 일주일이 지났네요. 후기를 적어야지적어야지 생각만 하다가, 간단히 적어봅니다. 이번 15회 다음 DevDay는 10개의 팀을 선정하여 제주도에서 1박 2일로 앱개발을 하였습니다. 다음에서 음성인식 API의 새로운 버전을 활용하여 개발을 목적으로 하고있고, 5.7:1의 경쟁률에 당당히 선정되었습니다. 총 10개의 팀으로 대학생, 고등학생, 일반인들이 골고루 분배된것 같았습니다. 


다음의 음성인식 API의 새로운 버전은 기존의 검색타입 3가지에서 고립어 검색타입이 추가 되었습니다.

  • 웹검색
  • 연속어
  • 지도
  • 고립어
고립어 타입은 정해진 문자열 배열에서 음성인식을 통해 문자열중 가장비슷한 문자를 반환해줍니다. 예를 들어 “예”, “아니요”로만 대답하는 경우 예, 아니오를 고립어 타입으로 문자열을 넘기게 되면 “예” 또는 “아니오” 로만 음성인식이 되기 때문에 음성인식률이 상당히 높아집니다.

우리팀 프로젝트 소개


우리팀은 음성인식 API를 이용해서 어떠한 화면에서 어떠한 작업을 하고 있던 간단한 작동으로 앱을 실행하는 앱을 개발하는 것이 목표였습니다. 수 많은 앱중 실행하고 싶은 앱을 찾기가 힘든 분들이 가장 빠르고 정확하게 앱을 실행 할 수 있도록 도와주는 것입니다.

어떠한 화면에서 한번의 터치를 통해 음성입력을 받아야 하기때문에 Facebook 메신저의 Chathead방식을 사용해서 원형의 아이콘이 화면에 항상 떠있도록 구현하였습니다. 물론 불 필요 한경우 가장자리로 이동하여 삭제 할 수 있습니다.


그리고 앱의 명칭을 정확하게 말하는 번거로움을 없애기 위해 앱별로 별명을 지정할 수 있는 기능도 추가 했습니다. 앱명이나 별명 둘중 말하면 앱이 실행됩니다. 앱 최초실행시 별명과 매칭할 수 있도록 설치된 모든 앱을 로컬 DB화해서 관리하고, 제거나 설치 되는경우 Receiver을 통해 DB를 업데이트하는 방식으로 설계되어 있습니다.  

저희 팀은 다른팀과는 다르게 당일 개발/기획/디자인을 모두 했습니다. 다른팀들은 이미 서비스되어 있거나 어느정도 완성된 앱에서 음성 API만 추가만 하였지만 저희들은 처음부터 끝까지 개발해야 했기에 잠을 한숨도 못잤습니다. 약 15시간 정도 개발했던것 같습니다.

밤샘을 인정(?) 해주신건지 당당히 2위를 해서 넥서스7을 상품으로 받았습니다.

개발된 앱은 아래 링크를 통해 다운로드 받으실수 있습니다.

 

이제 고등학교 진학을 하는 학생들도 참가해서 많이 놀랐고, 약 20년간 개발하신 분들도 오셔서 한번더 놀랐습니다. 발표할때 빼고 팀간의 소통이 없어 좀 많이 아쉬웠습니다. 개발/디자인/기획을 각각 모집해서 팀을 만들어서 그자리에서 앱개발을 진행 해보는 것도 나쁘지는 않을것 같다는 생각도 들었습니다.

DevDay 참석한 10개 팀 모두 수고많았습니다. 다음에 좋은 인연으로 또 만났으면 좋겠네요 🙂

인터넷 속도 제어 프로그램 Speed Limit

안드로이드 앱 개발을 하다보면 항상 좋은 환경에서만 테스트/개발이 이루어진다. 하지만 실제로 사용하는 사람들은 인터넷 속도가 100% 좋다는 보장이 없다. 그래서 이런 예외적인 상황에서 앱이 잘 실행되는지에 대해 테스트및 개발을 해야 한다. 

그래서 에뮬레이터(제니모션) 자체적으로 속도를 제어하는 기능은 없고, 맥용 프로그램을 이용해서 속도를 제어 할 수 있다. Speed Limit 라는 프로그램인데 굉장히 간단하게 사용할 수 있다. 특정 포트와 호스트에 접근하는 속도를 제어 가능하다. 그리고 delay도 임의로 설정 할 수있다. 

http://mschrag.github.io 

약간 아쉬운점은 모든 포트를 설정할 수 없는점과 speed는 정해진것만 가능하다는것이다. 사용하다보면 가끔씩 속도 제한을 풀었는데 설정이 적용안되는 버그들이 있었다. 그래도 너무 간단하게 사용 할 수 있어서 좋다. 


Mac 프로그램을 쉽게 삭제하자. – AppCleaner

Mac에서 프로그램을 삭제 하려면 Launchpad를 통해서 삭제가 가능한데, 프로그램별로 삭제가 가능한것과 불가능 한것이 있어 삭제를 못하는 경우가 있다. AppCleaner 프로그램을 이용하면 설치했던 프로그램뿐만 아니라 기본 프로그램도 삭제가 가능하다.

http://www.freemacsoft.net/appcleaner/

여기에서 AppCleaner를 다운 받는다. 

받은 후 실행 후 Application을 누르면 아래와 같은 화면이 열리는데, 여기서 삭제 하고 싶은 프로그램을 체크한 후 하단에 Search버튼을 누른다. (기본 프로그램은 비활성화 된것 처럼 보이는데, 체크박스를 더블 클릭하면 체크된다.) 

Search버튼을 누르면 관련된 프로그램의 파일을 검색 해주는데, 하단에 Delete버튼을 누르면 깔끔하게 삭제할 수 있다. 

프로그램 이외  위젯이나, 사파리의 플러그인을 삭제 할 수있다. 

구글 넥서스 5 기본 런처 설치

오늘 구글 안드로이드 4.4 킷켓 발표와 동시에 넥서스 5 기기도 판매가 시작 되었다. 넥서스 5의 기본 런처도 이와 함께 유출 되었다. 런처를 사용하기위해서는 구글서치와 구글 플레이서비스가 함께 설치 되어야 한다.

아래와 같이 3가지를 설치 해야한다.

구글 플레이 서비스와 서치가 이미 설치 되어 있기 때문에 강제로 재 설치 하도록 해야 한다.

$ adb install -r ***.apk

<

p style=”text-align: center; clear: none; float: none;”>

일단 런처가 상당히 가볍고 빠르다. 왼쪽화면에 기본으로 구글 서치가 나오며, 상단 Google 검색바가 떠있다. Flat한 디자인으로 최신의 디자인 트렌드를 따라가는 느낌이다.