2015년 8월 25일 화요일

Android M API Overview

Android M Developer Preview 3가 공개되면서 최종 API들과 공식 안드로이드 SDK 6.0이 공개되었습니다. API Overview의 내용들을 숙지하면서 번역해보았습니다.

App Linking

더 강력한 앱링킹을 제공함으로써 Android 인텐트 시스템을 강화했다. 이 특징은 당신이 갖고있는 웹 도메인과 앱을 연결시키는 것을 가능하게 한다. 이 연결을 기반으로, 플랫폼은 각각의 웹 링크를 제어하기 위해 사용하는 기본 앱을 결정할 수 있고 사용자가 앱을 선택하는것을 건너뛸 수 있다. 
[링크 : http://developer.android.com/preview/features/app-linking.html]

Auto Backup for Apps

시스템은 이제 앱을 위해 모든 데이터를 자동으로 백업하고 저장한다. 당신은 추가적으로 어떤 코드도 작성할 필요가 없다. 만약, 사용자가 구글 계정을 삭제하면 백업 데이터는 삭제된다. 
[링크 : http://developer.android.com/preview/backup/index.html]

Authentication

지문인식을 지원하는 기기에서 지문을 활용해 인증을 할 수 있는 API가 제공된다. 그리고 최근에 사용자가 기계 잠금 메커니즘(락스크린 패스워드 같은것)을 사용하여 마지막으로 인증한 방법을 확인한다. Android Keystore system 과 함께 사용해라.

(1)Fingerprint Authentication

지문인식을 통해 인증을 하려면 FingerprintManager 클래스의 인스턴스를 얻고 authenticate() 메서드를 호출한다. 당신의 앱은 지문인식 센서를 가진 디바이스에서 실행되어야 한다. 당신은 앱에 지문인증 흐름을 위한 유저 인터페이스를 구현해야만 하고 표준 안드로이드 지문 아이콘을 사용해야 한다. 안드로이드 지문 아이콘(c_fp_40px.png)은 샘플 프로젝트[https://github.com/googlesamples/android-FingerprintDialog]에 포함되어있다. 만약 지문인증을 사용하는 다수의 앱을 개발하고 있다면, 각각의 앱은 유저의 지문을 독립적으로 인증되어야한다는 것에 주목해라.

지문인증을 앱에 사용하기 위해선 manifest 파일에 USE_FINGERPRINT 퍼미션을 추가해라. 
<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />

지문인증을 구현한 앱을 보기 위해선 Fingerprint Dialog 샘플[https://github.com/googlesamples/android-FingerprintDialog]을 참고해라. 이 인증 API를 다른 Android API들과 함께 사용하는 방법의 데모를 위해선 Fingerprint and Payment APIs[https://www.youtube.com/watch?v=VOn7VrTRlA4&index=11&list=PLOU2XLYxmsIJDPXCTt5TLDu67271PruEk] 를 확인하라

지문인증을 테스트 하려면 아래와 같은 단계를 따라라
첫번째, Android SDK Tools Revision 24.3를 다운로드 받아라.
두번째, Settings > Security > Fingerprint 에서 새로운 지문을 등록합니다. 
세번째, 지문인식 이벤트를 발생시키기 위해서
adb -e emu finger touch <finger_id>
명령을 사용합니다. 

(2) Confirm Credential

최근의 사용자가 그들의 기계를 마지막으로 해제(unlock)한 방법을 기반으로 당신의 앱은 사용자들을 인증 할 수 있다. 이런 특징은 앱 종속적인 패스워드를 추가적으로 기억해야하는 유저들을 자유롭게 해주고 당신만의 인증 유저 인터페이스를 구현해야 하는 것을 피한다. 당신의 앱은 사용자 인증을 위한 public 또는 secret 키와 함께 결합하여 이 특징을 사용해야 한다.

사용자가 성공적으로 인증을 한 이후에 같은값으로 재 인증을 할 수 있게 하는 기간을 설정하기 위해선, KeyGenerator 또는 KeyPairGenerator가 설정되었을 때 setUserAuthenticationValidityDurationSeconds() 메서드를 호출해라 

지나치게 재 인증 다이얼로그를 보여주는 것을 피해라. 당신의 앱들은 먼저 암호화된 객체를 사용하는것을 시도하고 만약 인증이 만료되었다면, 당신의 앱에 사용자 재인증을 위해 createConfirmDeviceCredentialIntent() 메서드를 사용해라.

이 특징을 구현한 앱을 보기 위해선 Confirm Credential sample[https://github.com/googlesamples/android-ConfirmCredential]을 참조하라.


Direct Share

이번 프리뷰는 사용자를 위해 직관적이고 빠른 공유를 만들 수 있는 API들을 제공한다.당신의 앱의 실행되고 있는 특정 액티비티를 “직접 공유 타겟들”로 정의할 수 있다. 이 직접 공유 타겟들은 공유 메뉴를 통해서 사용자에게 노출된다. 이 특징은 사용자가 타겟에 다른앱에 포함된 연락처와 같은 컨텐츠를 공유할 수 있게 합니다. 예를 들어 직”접 공유 타겟”은 다른 소셜네트워크 앱안의 액티비티에서 실행될 수도 있습니다.  사용자는 앱의 직접 특정 친구나 커뮤니티에 컨텐츠를 공유할 수 있다.

“직접 공유 타겟들”을 가능하게 하기 위해선 당신은 ChooserTargetService 클래스를 상속받아야 합니다. manifest에 Service를 등록하고. BIND_CHOOSER_TARGET_SERVICE 권한과 SERVICE_INTERFACE 액션을 사용한 인텐트 필터를 정의 해야합니다.


manifest 안에 ChooserTargetService를 정의하는 방법을 보여주는 예제입니다.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

Voice Interactions

이 프리뷰는 당신의 앱들안에 회화식 음성 경험을 제공하는 것을 허용하는 Voice Actions[https://developers.google.com/voice-actions/] 과 함께 새로운 음성 상호작용 API를 제공한다. 만약 너의 액티비티에 목소리 액션을 장착기로 결심했다면 isVoiceInteraction()  메서드를 호출하라. 이런 경우, 당신의 앱은 사용자로부터 옵션 리스트로 부터 선택을하거나 더 다양한 것에서 음성 확인을 요청하기 위해 VoiceInteractor 클래스를 사용할 수 있다. 

대부분 음성 상호작용들은 사용자 음성 액션으로 부터 시작한다. 그렇지만 유저 인풋 없이 시작한다 음성 상호작용 액티비티를 실행할 수 있다. 예를 들어, 음성 상호작용을 통해서 실행된 다른앱은 음성 상호작용을 실행하기 위한 인텐트를 전송할 수 있다. 만약 유저의 목소리 쿼리나 다른 음성 상호작용 앱으로 부터 액티비티를 실행한다면 isVoiceInteractionRoot()메서드를 호출기로 결정해라. 만약 다른앱이 너의 액티비티를 실행했다면, 메서드가 false를 반환한다. 당신의 앱은 그들이 의도한 액션을 확인하기 위해 사용자를 촉진할 수 도 있다.

음성 액션들을 구현하기 위해서 더 배우고 싶다면 Voice Actions developer site[https://developers.google.com/voice-actions/interaction/]를 확인해라.

Assist API

이 프리뷰는 사용자가 assistant를 통해 앱과 결합할 수 있는 새로운 방법을 제공합니다. 이 특징을 사용하기 위해선, 사용자는 현재 컨텍스트를 사용하는 assistant를 사용가능하게 해야합니다. 한번 가능하게 해두면, 홈 버튼을 길게 누르는것으로 사용자는 assistant를 어떤 앱에서든 호출할 수 있다.

당신의 앱은 FLAG_SECURE 플래그를 설정함으로써 그 assistant와 현재 컨텍스트를 공유하지 않도록 선택할 수 있다. 플랫폼이 assistant에 전달하는 표준 정보들에 더하여, 당신의 앱은 AssistContent 클래스를 사용함으로 추가적인 정보를 공유할 수 있다.

Notifications

이 프리뷰는 노티피케이션을 위해 API 변경사항을 추가했다.

*새로운 INTERRUPTION_FILTER_ALARMS는 필터 레벨은 오직 방해금지 모드의 새로운 알람에만 일치한다.

*새로운 CATEGORY_REMINDER 카테고리 변수는 다른 이벤트(CATEGORY_EVENT)와 알람으로 부터 (CATEGORY_ALARM)사용자 스케줄 리마인더를 구별하는데 사용된다.

*새로운 Icon 클래스는 setSmallIcon()과 setLargeIcon() 메서드를 통해 당신의 알림에 붙일 수 있다. 유사하게, addAction() 메서드는 drawable 리소스 아이디 대신에 Icon 객체를 받아들일 수 있다.

getActiveNotifications() 메서드는 당신의 앱이 현재 살아있는 노티피케이션들을 찾을 수 있게 허락한다. 이 특징을 사용하는 앱 구현체를 보기 위해선 Active Notifications sample[https://github.com/googlesamples/android-ActiveNotifications]을 참고하라.

Bluethooth Stylus Support

이 프리뷰에서는 블루투스 스타일러스를 사용하는 유저 입력을 위한 개선된 지원을 제공한다. 사용자들은 휴대전화 또는 태블릿과 호환될 수 있는 블루투스 스타일러스를 페어하고 연결할 수 있다. 연결되는 동안에, 터치 스크린으로부터의 위치 정보는 터치스크린 단독보다 더 큰 표현의 길이를 제공하는 스타일러스로부터의 압력과 버튼 정보와 융합된다. 당신의 앱은 액티비티 안의 View.OnContextClickListener 과GestureDetector.OnContextClickListener 객체들의 스타일러스 버튼 입력과 부수적 액션을 수행하는 것을 처리할 수 있다. 

스타일러스 버튼 상호작용을 감지하기 위해 MotionEvent 메서드들과 상수들을 사용해라.

만약 유저가 당신의 앱 화면위에 스타일러스로 버튼을 클릭했다면, getTooltype() 메서드는 TOOL_TYPE_STYLUS를 반환한다.
M 프리뷰를 타겟으로 하는 앱을 위해, 사용자가 첫번째 스타일러스 버튼을 입력했을 경우  getButtonState()메서드는 BUTTON_STYLUS_PRIMARY를 반환한다. 만약 두번째 버튼을 클릭한다면 BUTTON_STYLUS_SECONDARY를 반환한다. 만약 두 버튼을 동시에 누를경우에는 OR를 활용해 두개를 모두 반환한다 (BUTTON_STYLUS_PRIMARY | BUTTON_STYLUS_SECONDARY)
하위 버전을 타겟팅하는 앱을 위해선 getButtonState() 메서드는 BUTTON_SECONDARY( 첫번째 버튼을 눌렀을때), BUTTON_TERTIARY(두번째 버튼을 눌렀을때), 또는 둘다 사용한다.

기타 이슈 (관련된 것을 학습해야할 기회가 오면 번역하도록 하겠습니다.)
Improved Bluetooth Low Energy Scanning
Hotspot 2.0 Release 1 Support
4K Display Mode
Themeable ColorStateLists
Audio Features
Video Features
Camera Features
Flashlight API
Reprocessing API
Android for Work Features