Motorola Mobility Anna Schaller Android  기술 전도사 개발자 플랫폼 및 서비스 Motorola XOOM 용 앱 설계
환영사 © 2010 Motorola Mobility, Inc. 01 과거와 현재 스마트폰 설계와 태블릿 설계 비교 02 애플리케이션  UI  디자인의 변화 Android 3.0 UI  특징 소개 03 그래픽과 미디어의 변화 그래픽과 미디어 지원에 대한 업데이트 ,  향상 및 정보 04 하드웨어 특징 XOOM  하드웨어에서의  Android  지원 05 10 가지…… XOOM  상에서 애플리케이션을 얻기 위한 간편한 단계
태블릿 소개 스크린 10.1", WXGA(1280 x 800), 160 dpi(mdpi)  메모리 :   32 GB  플래시 스토리지 프로세서 :  nVidia Tegra 2  듀얼 코어 센서 :   가속도계 ,  기압계 ,  자이로스코프 ,  나침반 ,  조도계 , GPS,  근접 또는 진동 없음 , 4- 방향 회전 연결 :  802.11 a/b/g/n, Bluetooth, HDMI 카메라 :  2mp  고정 초점 전방  / 5mp  자동 초점 후방 미디어 :  720p HD  비디오 레코딩 , 1080p HD  재생 외장 스토리지 : 32 GB SD  카드  ( 지원 예정 ) 플랫폼 :  Android 3.0/3.1(Honeycomb) 앱 환경 :   Adobe AIR 2.6, Android, NDK, Flash 10.3 다수의 소프트웨어 변경  사항
Atrix  구성 상태 표시줄 메뉴 키 홈 키 뒤로 버튼 보너스 버튼 ( 일반적으로 검색 기능 ) 볼륨  키 ( 상 / 하 ) 전원 버튼
XOOM  구성 볼륨 키 ( 상 / 하 ) 전원  버튼
XOOM  구성 시스템 표시줄 메뉴  버튼 아님
애플리케이션  UI   디자인의 변화 홀로그램 테마 시스템 표시줄 희미하게 하기 동작 표시줄 Fragment 새로운 위젯 알림 업데이트 시스템 클립보드  드래그 및 드롭 7 페이지 프레젠테이션 제목  버전  1.0  2009 년  2 월  24 일
홀로그램 테마 Android 3.0  대상으로 구축된 모든 앱에 의해 적용됩니다  minSdkVersion  또는  targetSdkVersion = 11 * 및 *  하드웨어 가속 활성화 ( android:hardwareAccelerated= “ true ” ) SDK  버전이  9  이하일 경우 애플리케이션은  Android 2.3 의 위젯 디자인을 사용하고 홀로그램 테마를 적용하지  않습니다 다음과 같은 두 가지 버전이 있습니다 흰색 글자에 파란색 배경인 기본 버전  @android:style/Theme.Holo 어두운 글자색에 반전된 흰색 홀로그램  @android:style/Theme.Holo.Light
시스템 표시줄 희미하게 하기 소등 모드 아이콘을 홀로그램 “점”으로 대체해 시스템 표시줄을 희미하게 합니다 ( 시스템 표시줄이 없어지지는 않음 )   View v = findViewById(R.id. view_id);   v.setSystemUiVisibility( View. STATUS_BAR_HIDDEN );   v.setSystemUiVisibility( View. STATUS_BAR_VISIBLE );
동작 표시줄 – 기본 앱 상단에 있는 기존의 제목 표시줄을 대체합니다 제목이 포함된 애플리케이션 아이콘 오버플로 메뉴 메뉴 생성은 변경되지 않았습니다 public boolean  onCreateOptionsMenu(Menu menu)  { ... } public boolean  onOptionsItemSelected(MenuItem item)  { case  R.id.menu_item  ... } /res/menu/ menu_definitions.xml
동작 표시줄 – 동작 항목이 탭으로 표시 애플리케이션 아이콘을 동작 가능 상태로 만들 수 있습니다 동작 표시줄에 탭으로 표시되는 인터페이스 오버플로 메뉴에 나열하기보다는 각 동작 항목으로 표시 텍스트 포함 또는 미포함 ;  아이콘 포함 또는 미포함 동작 표시줄을 관리하려면 :  ActionBar actionBar =  getActionBar() ; actionBar.  setNavigationMode( ActionBar. NAVIGATION_MODE_TABS ) ; 참조 :   android.app.actionbar “ 동작 가능” 아이콘 탭 동작 항목
전체 화면으로 전환  -  동작 표시줄 없애기 동작 표시줄을 숨길 수 있습니다 . “ 그러나” 그렇게 하면 애플리케이션에서 메뉴에 접근할 수 없습니다 <activity android:theme= “@android:style/Theme.NoTitleBar” > 프로그램을 통해 동작 표시줄을 숨길 수도 있으며 ,  이 경우 사용자가 전환하면 됩니다 ActionBar bar = getActionBar(); if (bar != null) { if (bar. isShowing() ) bar. hide() ;   else bar. show() ; }
메뉴 역호환성을 지원하기 위해 시스템 표시줄과 더불어 소프트 메뉴 버튼이 추가되었습니다 minSdkVersion  및  targetSdkVersion < 11
Fragment 애플리케이션을 하위 구성 요소로 나누어 개별적으로 관리하고 다양한 방법으로 결합할 수 있도록 해줍니다 ( 예 :  다중 창  UI  만들기 ).
Fragment( 계속 ) Fragment 는 항상  Activity 에 임베딩되어야 합니다 목록 Fragment Fragment Activity
Fragment( 기본  Fragment) Fragment 를 확장하는 클래스를 만듭니다 Activity 와 유사한 컨텐츠를 표시합니다 ( 이미지 ,  텍스트 ,  애플리케이션 위젯 ) 다른  Fragment 나 탭에 연결할  수 있습니다 Activity 의 오버플로 메뉴 ( 동작 표시줄 ) 에 항목을 추가할 수 있습니다 표시되지 않아도 됩니다 ( 은밀히 작동할 수 있음 ) 화면에 표시된다면 자체 레이아웃 파일이 있어야 합니다 ( 기본 ) Fragment
Fragment(Activity 에 추가 ) XOOM_hc_app /res/layout/main.xml ( 목록 ) Fragment Activity  레이아웃 ( 컨텐츠 ) Fragment ( 이미지 임베딩 포함 ) PictureList.java ContentFragment.java
새로운 뷰 (View) 애플리케이션 위젯 PopupMenu( android.widget.PopupMenu ) 메뉴가 뷰 (View) 에 연결됩니다 ( 예 :  버튼 ) 홈 화면 위젯 StackView( android.widget.StackView ) 3D  스택으로 하위 요소를 표시하고 사용자가 하위 요소 사이에서 각각 넘겨볼 수 있는 보기 화면 . 풍부한 알림 기능 ( android.app.Notification.Builder ) 알림 레이아웃을 구축합니다
작업 예 SDK( 소프트웨어 개발 도구 )  견본 중  Honeycomb Gallery 에 나와  있는 사항 인터페이스 탭 ,  동작 항목 메뉴 및 오버플로 메뉴가 포함된 동작 표시줄 Fragment List  및  Fragment 를 가로 및 세로 방향으로 표시 새로운 테마 끌어서 놓기 애니메이션 동작 표시줄  숨기기 / 표시  소등 모드
그래픽 및 멀티미디어 2D  그래픽을 위한  하드웨어 가속 텍스처 압축 새로운 애니메이션 프레임워크 미디어 지원 프레젠테이션 제목  버전  1.0  2009 년  2 월  24 일
하드웨어 가속 2D  그래픽 서브셋 상에서 가속을 위한 내장 지원 (Canvas API) 매니페스트에서 적절한 노드를 설정해 전체 애플리케이션 또는 각  Activity 에 적용 android:hardwareAccelerated=“true” 다음을 통해 각  Activity  및 / 또는 창에 프로그래밍을 통해 로컬 적용 :  WindowManager.LayoutParams   Window win =  getWindow();    win.setFlags   (WindowManager.LayoutParams. FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams. FLAG_HARDWARE_ACCELERATED ); 다음을 통해 캔버스에 하드웨어 가속이 적용되었는지 테스트해 확인 :   isHardwareAcclerated()
텍스처 압축 여러 종류의 칩셋은 여러 다른 종류의 압축 종류를 지원합니다 모바일용 형식 : OpenGL ES 2.0 이 설치된 모든  Android  장치에서  ETC1  지원됨 ( 알파 채널은 지원되지 않음 ) PVRTC(Imagination Technologies 의  PowerVR SGX 530 GPU) ATITC(Qualcomm 의  Adreno GPU) S3TC  또는  DXT1, 3, 5(nVidia GPU) 솔루션 :  텍스처 압축 필터링 <supports-gl-textures android:name=“string”> 문자열은 압축 종류에 해당하는  OpenGL ES  확장임 예 :   android:name=“GL_EXT_texture_compression_s3tc”
텍스처 압축 ( 계속 ) Honeycomb 에서뿐만 아니라 모든  API  레벨과도 작동됩니다 지원되는 모든 형식을 위한 태그를 하나씩 정의해야 합니다 Android Dev Guide - Android  매니페스트 태그에 나오는 지원되는 압축 종류 목록   http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html 도구는  MotoDev  기술 자료 참조  http://developer.motorola.com/docstools/library/understanding-texture-compression/
애니메이션 다음과 같은 두 가지의 애니메이션 시스템을 선택할 수 있습니다 . 뷰 (View)  애니메이션 ( android.view.animation ) 트윈 (Tween)  애니메이션 뷰 (View)  개체의 컨텐츠에서 간단한 일련의 변화를 실행합니다 .  기본 전환에는 그래픽의 회전 ,  페이드 ,  이동 및 늘이기가 포함됩니다 .  프레임 (Frame)  애니메이션 프레임별 애니메이션으로 하나씩  Drawable  리소스를 연속으로 표시해 애니메이션을 만들 수 있습니다 . 프로퍼 티 (Property)  애니메이션 ( android.animation   //  Honeycomb 의 새로운 기능 )  (Drawable 과 같은 표시 뿐만 아니라 !)  거의 모든 개체를 애니메이션화할 수 있습니다 . 애니메이션화할 수 있는 프로퍼티 세트를 확장합니다 ( 그룹 및 재생 ) 뷰 (View)  애니메이션이 좀 더 간단하고 빠른 반면 ,  프로퍼티 애니메이션은 기능이 더 많습니다 참조 :   http://developer.android.com/guide/topics/graphics/animation.html
미디어 지원  -  장치에서 컨텐츠 얻기 디지털 미디어 파일 전송 미디어 / 사진 전송 프로토콜 (MTP/PTP) 을 위한 내장 지원 사용자가  USB  케이블을 꼽으면  Android File Transfer  애플리케이션이 시작됩니다 . 사용자는 사진 ,  영화 ,  비디오 ,  벨소리 ,  팟캐스트 등을 미리 정의된 폴더에 복사하거나 다른 컨텐츠를 위한 새 폴더를 만들 수 있습니다 .
하드웨어 센서 카메라 터치 스크린 전화 통신
센서 가속도계 ,  자이로스코프 ,  자기계 ,  기압계 ,  나침반 ,  조도계 , GPS,  근접 센서 없음 ,  진동 없음 장치 방향 정상적인 방향은  4- 방향 회전에   가로 방향입니다  -y e +y es +x -x +z +y e +y e -x +x -y e -y e +x -x 0 도 회전 0 도 회전 90 도 회전
센서 ( 계속 ) android.view.Display.getRotation() 을 사용해 현재 방향을 알아냅니다 네 가지 회전 방향 종류에 대한  x/y  값을 조정합니다 ROTATION_0 ROTATION_90 ROTATION_180 ROTATION_270 SDK 에서   AccelerometerPlay   견본 참조 Android  블로그 포스트  One Screen Turn Deserves Another 에 자세한 내용이 나와 있습니다 애플리케이션이 회전하지 않도록 하려면 다음을 통해 정상적인 방향으로 고정하십시오 : <activity android:orientation=“nosensor” />
센서  -  기압계 센서 판독 버전  1.0 © 2010 Motorola Mobility, Inc. // www.engineeringtoolbox.com/air-altitude-pressure-d_462.html //  고도  10 미터 상승시  ~ 1.2  gm /cm2  감소
카메라 2 개의 카메라 ( 전방 및 후방 ) 를 사용할 수 있습니다 5 MP,  자동 초점 ,  후방 2 MP,  고정 초점 ,  전방 Gingerbread(2.3) 에서 이중 카메라에 대한 지원 추가됨 후방 카메라가 기본 카메라이므로 후방 카메라의 특징을 기반으로 필터링이 수행됩니다 ( 예 :  android.hardware.camera.autofocus ) <uses-permission android:name=“android.permission.CAMERA” /> <uses-feature android:name=“android.hardware.camera.front”   android:required=<true or false> />
카메라 ( 계속 ) import android.hardware.Camera; import  android.hardware.Camera.CameraInfo ;   […]   public void toggleCamera() { Camera mCamera; int numberOfCameras = Camera. getNumberOfCameras() ; CameraInfo cameraInfo = new CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera. getCameraInfo (i, cameraInfo); if ( cameraInfo.facing == CameraInfo. CAMERA_FACING_FRONT ) { mCamera = Camera.open(i);   //  전방 카메라로 작업 수행   } else if ( cameraInfo.facing == CameraInfo. CAMERA_FACING_BACK ) { mCamera = Camera.open(i);   //  후방 카메라로 작업 수행 } } }
터치 스크린 android.hardware.touchscreen.multitouch  (API  레벨  7) 손가락  2 개로 누르는 작동을 지원합니다 android.hardware.touchscreen.distinct  (API  레벨  8) 2 개 이상의 손가락을 완전히 독립적으로 추적하는 작동을 지원합니다 android.hardware.touchscreen.multitouch.jazzhands  (API  레벨  9) 5 개 이상의 손가락을 완전히 독립적으로 추적하는 작동을 지원합니다 (10 개 손가락으로 누르기 ) <uses-feature>  태그를 설정해 이 기능을 지원하는 장치 ( 예 : XOOM) 로 필터링합니다
터치 스크린 ( 계속 ) XOOM 에는 실제 키보드가 없기 때문에 사용자에게는 터치 스크린 표면이 기본적인 접촉 지점이 됩니다 터치라는 개념을 반드시 이해해야 합니다 MotionEvent 로  onTouch  이벤트 리스너 기능을 사용합니다 MotionEvent.getPointerCount():  터치 지점의 수를 알려줌 MotionEvent.getPointerId():  각 손가락을 추적할 수 있게 함 Making Sense of Multitouch 에서  Adam Powell 의 블로그 게시물을 참조하십시오
전화 통신 장치 관점 CDMA, UMTS/GMS  장치에는  4G/LTE  네트워크를 지원하기 위한 무선  통신 장치가 있습니다 전화 통신 프레임워크의 서브셋이 지원됩니다  ( android.telephony.TelephonyManager ) 앱 관점 전화 기능이 지원되지 않습니다  <uses-feature android:name=“android.hardware.telephony android:required=“true”/> XOOM 을 위한 여러 구성 CDMA, UMTS/GSM, WiFi 만 TelephonyManager.getDeviceId()   정보가 동일하지 않음  일반적으로  IMEI  또는  MIED 이 반환됨 : WiFi  장치는  Null 을 반환
전화 통신 ( 계속 ) 고유의 식별자 얻기 :  데이터를 구하는 이유가 무엇인지 생각해 봅시다 .  하드웨어를 추적하기 위함입니까 ,  아니면 앱을 추적하기 위함입니까 ? 하드웨어 추적 작업은 공장 리셋 전반에서 지속적으로 필요합니다 . 앱 추적 작업은 공장 리셋 시 값을 리셋해야 합니다 .  MAC  주소 ( 권장하지 않음 ) 모든 장치에  WiFi 가 있는 것은 아닙니다 .  또한  WiFi 가 켜져 있지 않을 경우 하드웨어에서  MAC  주소를 보고하지 않을 수도 있습니다 .  일련 번호 ( 권장하지 않음 ) 전화 통신 기능이 없는 장치에서만 확실히 보장됩니다 . ANDROID_ID( 아마도 ) 장치가 처음 부팅되면 생성되어 저장됩니다 .  장치를 지우면 리셋됩니다 .  Android 2.2  이전 버전의 장치에서는 확실히 보장되지 않습니다 새로운 권장 사항은 자체 고유  ID 를 생성해 선호하는 공유 파일에 저장하는 것입니다 예 :  uniqueId = UUID.randomUUID.toString()
10 가지…… .. Honeycomb SDK targetSdkVersion 레이아웃 예외 처리 호환 모드 Drawable 텍스트 허용 (Permission)  및 기능 코드 베이스 유지 Honeycomb SDK
지금 당장 할 수 있는  10 가지 작업 Honeycomb SDK( 및 업데이트된 도구 ) 를 다운로드해 에뮬레이터에서 앱을 시험 가동해 봅니다 .  targetSdkVersion 을  “ 11 ”  로 변경하고 무엇이 바뀌는지 살펴봅니다 . 대형 화면에 최적화된 레이아웃을 갖춘 프로젝트에  /res/layout-xlarge   및  /res/layout-xlarge-port   폴더를  추가합니다 . 오류 처리를 업데이트해 앱이 일정 시간 무응답 상태가 되거나 (ANR)  사용자가 마냥 기다리게 하기보다는 부드럽게 종료되도록 합니다 . 앱이 “호환 모드”에서 실행되고 있는지 알아봅니다 . minSdkVersion= &quot; 3 &quot; , targetSdkVersion  없음 ; 1.5  대상으로 구축 minSdkVersion= &quot; 3 &quot;   및  targetSdkVersion= &quot; 3 &quot; ; 1.5 를 초과한 모든  SDK  대상으로 구축 “ 쉐도우박스 효과”
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) targetSdkVersion >= “4” 로 설정 , 1.6  이상의  SDK  대상으로 구축
/res/drawable-< density > 에서 그래픽을 다시 찾아봅니다 . 지금 당장 할 수 있는  10 가지 작업 ( 계속 )
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 9- 패치 도구를 사용하여 “늘일 수 있는” 영역을 만듭니다 배경을   ImageView 로 놓고  scaleType=centerCrop 을 설정합니다 <ImageView android:src=“@drawable/background” android:layout_width=“match_parent” android:layout_height=“match_parent” android:scaleType=“centerCrop”  />
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 패턴 이미지를 기울일 수 있습니다 /res/layout/main.xml <LinearLayout  android:background=“@drawable/background” /res/layout/background.xml <bitmap xmlns:android= “ http://schemas.android.com/apk/res/android” android:src=“@drawable/baseimage” android:tileMode=“repeat” android:filter=“true” android:dither=“true” />
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) DisplayMetrics 로부터의 얻는 치수를 사용하여  createScaledBitmap() 에 읽어 들입니다 BitmapDrawable backgroundImage =    (BitmapDrawable)getResources().getDrawable   (R.drawable.background); Bitmap backgroundBitmap = backgroundImage.getBitmap(); backgroundBitmap =  Bitmap.createScaledBitmap (backgroundBitmap,   dm.widthPixels ,      //  메트릭스 폭 표시   dm.heightPixels ,     //  메트릭스 높이 표시     true);                 //  필터링 활성화
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 텍스트가 알아볼 수 있는 상태이며 큰 화면에서 원활하게 표시되는지 확인합니다 . 크기가 더 크다면 (1280 x 800)  텍스트를 최적화해 공간을 최대한 활용합니다
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 2 개의 다른 글꼴 크기로 ( 모두  sp  단위 )  /res/values  및   /res-values-xlarge 에  2 개의 다른  <dimens>  태그를 생성합니다 @dimen/< variable > 을   <style>  textSize  속성에 추가합니다 <style name=“readText” parent=“@android:style/TextAppearance”>  <item name=“android:textSize”> @dimen/font_size </item> <item name=“android:textColor”>#000000</item>  </style>
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 시장에서 앱을 걸러낼만한 허용 (Permission)  및  <uses-feature>  태그를 확인합니다 . 허용 (Permission) 은 앱을 걸러내지는 않으나  <uses-feature>  태그는 걸러냅니다 . XOOM 에는 전화 기능이 없는 것이나 ...... 마찬가지입니다 . <uses-permission android:name=“ CALL_PHONE ” />  <uses-permission android:name=“ CALL_PRIVILEGED ” /> <uses-permission android:name=“ MODIFY_PHONE_STATE ” <uses-permission android:name=“ PROCESS_OUTGOING_CALLS ” /> <uses-permission android:name=“ READ_SMS ” /> <uses-permission android:name=“ RECEIVE_SMS ” /> <uses-permission android:name=“ RECEIVE_MMS ” /> <uses-permission android:name=“ RECEIVE_WAP_PUSH ” /> <uses-permission android:name=“ SEND_SMS ” /> <uses-permission android:name=“ WRITE_APN_SETTINGS ” /> <uses-permission android:name=“ WRITE_SMS ” />     <uses-feature    android:name=“android.hardware.telephony” android:required=“true”/> * 내포 *
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) XOOM 에서 앱이 보여지게 하려면  android:required=“ false ” 를 명시적으로 설정해야 합니다 APK 에서  aapt  도구를 실행해 명시적 기능을 표시합니다 $ aapt dump badging < path_to_exported_.apk > $ ./aapt dump badging BTExample.apk package: name='com.example.android.btexample' versionCode='' versionName='' uses-permission:'android.permission.BLUETOOTH_ADMIN' uses-feature:'android.hardware.bluetooth' sdkVersion:'3' targetSdkVersion:'5’ <. . .> MOTODEV App Validator 를 실행해 암시적 기능을 표시합니다 . http://developer.motorola.com/testing/app-validator/
지금 당장 할 수 있는  10 가지 작업 ( 계속 ) 코드 베이스를 어떻게 관리할 것인지 결정합니다 .  공식적인 추천 사항은 단일  2 진수 접근식을 유지하는 것입니다 .  호환 라이브러리를 통해  Fragment 를  1.6 까지 사용할 수 있음을 명심하십시오 . Honeycomb SDK( 및 업데이트된 도구 ) 를 다운로드해 에뮬레이터에서 앱을 시험 가동해 봅니다 .
Android 3.1 API  레벨  12 크기 조정 가능한 위젯 입력 및 모션 USB API MTP/PTP  지원 실시간 전송 프로토콜 (RTP) Fragment Breadcrumb
크기 조정 가능한 위젯 홈 화면의 위젯은 크기가 조정 가능합니다  가로 ,  세로 또는 양 방향 모두 위젯  AppWidgetProviderInfo   메타 데이터에서  resizemode   특성을 정의합니다 <appwidget-provider xmlns:android=&quot;http://schemas.android.com/apk/  res/android&quot;   android:minWidth=&quot;294dp&quot;   android:minHeight=&quot;72dp&quot;   android:updatePeriodMillis=&quot;86400000&quot;   android:previewImage=&quot;@drawable/preview&quot;   android:initialLayout=&quot;@layout/example_appwidget&quot; android:configure=&quot;com.example.android.ExampleAppWidgetConfigure&quot;    android:resizeMode=&quot;horizontal|vertical&quot;  > </appwidget-provider>
입력 종류 및 모션 이벤트 모든 보기와 창에 걸쳐 다양한 새로운 입력원과 모션 이벤트를 지원하기 위해 입력 이벤트 시스템이 확장되었습니다 마우스와 트랙볼 입력의 경우 플랫폼이 새로운 두 가지 모션 이벤트를 지원합니다 ACTION_SCROLL ( 가로 또는 세로 ):  스크롤휠과 같은 장치에서 스크롤 모션이 발생한 포인터의 위치를 제공합니다 ACTION_HOVER_MOVE :   버튼을 누르지 않은 상태인 마우스의 위치를 보고합니다 조이스틱 ,  게임패드 ,  마우스 및 트랙볼의 모션 이벤트는 터치 이벤트가 아닙니다 onTouchEvent() 와 달리  onGenericMotionEvent() 로의 호출을 통해 모션 이벤트를 “일반적” (Generic)  모션 이벤트로 뷰 (View) 에 전달하기 위한 새로운 콜백 방법
USB API USB  호스트 모드를 위한 내장 플랫폼 지원으로 애플리케이션이 연결된 주변 장치를 관리할 수 있도록 해주는  API 를 노출시킵니다 호스트 모드는  Android  작동 장치에서 적절한  USB  컨트롤러 하드웨어에 의존합니다 XOOM 과 같이 호스트 모드를 지원하는 장치에서는 애플리케이션이  API 를 이용해 연결된 장치를 식별하고 장치와 통신할 수 있습니다 . 또한 두 가지의 기본 연결 하드웨어를 지원합니다 (Android  장치가 호스트로 작동하는지 여부에 따라 다름 ) USB  장치 :  호스트 역할을 하기 위해  Android  작동 장치에 의존하는 연결된 하드웨어 ( 카메라 ,  키보드 ,  마우스 ) USB  액세서리 : USB  호스트 컨트롤러가 있는 연결된 하드웨어 ( 로보틱스 ) USB API 를 이용할 수 있는 패키지 :  android.hardware.usb
MTP/PTP  지원 새로운 패키지  android.mtp 클래스   MtpDevice, MtpDeviceInfo, MtpConstants 연결된 카메라 및  USB  호스트 버스 상에 연결되어 있는 다른  PTP( 사진 전송 프로토콜 )  장치와 애플리케이션이  API 를 통해 직접 상호 작용할 수 있습니다 부착된   UsbDevice 를 언급하여  MtpDevice   개체를 예를 들어 설명합니다  연결을 개방하고 데이터를 전송합니다 장치와 장치에 저장된 개체에 대한 정보를 얻습니다 장치를 부착하고 분리할 때 알림을 수신합니다 이제  Gallery  앱이  PTP 를 지원하므로 사용자는  USB 를 통해 카메라를 연결하고 한 번만의 간단한 작동으로 사진을  Gallery 로 가져올 수 있습니다
시연
자세한 내용 : developer.motorola.com 도구 MOTODEV Studio:  추가적 기능 ( 문자열 로컬화 ,  데이터베이스 관리자 ) 이 있는 이클립스 기반의  IDE App Validator: Android  앱의 장치 간 호환성을 사전에 검사하기 위한 온라인 도구 기술 자료 Motorola XOOM Programming Tips(Motorola XOOM  프로그래밍   팁 ) Understanding Texture Compression( 텍스처   압축에   대한   이해 ) 제품 사양 http://developer.motorola.com/products/xoom/ 토론 게시판
질문  © 2010 Motorola Mobility, Inc. 56
감사합니다 ! © 2010 Motorola Mobility, Inc. 57
법적 고지  라이센스 주의 사항 따로 기재된 사항이 없다면  Motorola Mobility Inc. 가 기술하고 제공하는 견본 소스 코드는 아래 설명과 같이 사용이 허가됩니다 . Copyright © 2010-2011, Motorola, Inc. All rights reserved( 달리 명시적으로 표시한 것은 예외 ). 수정 유무를 막론하고 소스 및  2 진수 형태로의 재배포 및 사용은 다음 조건이 충족될 경우에만 허용됩니다 . 소스 코드의 재배포는 위의 저작권 주의 사항 ,  이 조건 목록 및 다음의 부인 고지 사항을 유지해야 합니다 . 2 진수 형태로의 재배포는 위의 저작권 주의 사항 ,  이 조건 목록 및 다음의 부인 고지 사항을 배포물과 함께 제공되는 문서 및 / 또는 기타 자료에 복제해야 합니다 . 구체적인 사전 서면 허가가 없이는 이 소프트웨어에서 파생된 제품을 보증하고 홍보하는 데  Motorola, Inc.  이름 및 해당 기여자의 이름을 사용할 수 없습니다 . 이 소프트웨어는 저작권 소유자와 기여자에 의해  &quot; 있는 그대로 &quot;  제공되며 모든 명시적 또는 묵시적 보증 ( 상품성 및 특정 목적에 대한 적합성에 대한 묵시적 보증을 포함하며 여기에 제한되지 않음 ) 을 배제합니다 .  저작권 소유자 또는 기여자는 이 소프트웨어의 사용으로 인해 발생하는 모든 직접적 ,  간접적 ,  부수적 ,  예외적 ,  전형적 또는 결과적 손해 ( 대체품이나 대체 서비스의 조달 ,  사용 ,  데이터 또는 이익 손실 ,  또는 영업 중단을 포함하되 이에 제한되지 않음 ) 에 대하여 계약에 의한 것이든 ,  엄밀한 책임 또는 불법 행위 ( 또는 과실과 기타 행위를 포함하여 ) 에 의한 것이든 이와 여타 책임 소재에 상관없이 어떠한 경우에도 책임을 지지 않으며 ,  이는 그와 같은 손해의 가능성을 사전에 알고 있던 경우에도 마찬가지입니다   이 프레젠테이션에서 표시되는 기타 소스 코드는 다른 라이센스 하에 제공될 수도 있습니다 . 
 Apache 2.0 Copyright © 2010, Android Open Source Project. All rights reserved( 달리 명시적으로 표시한 것은 예외 ). Apache  라이센스 하에서 사용이 허가됨 ,  버전  2.0(&quot; 라이센스 &quot;);  이 라이센스를 준수하지 않고는 이 파일을 사용할 수 없습니다 .  http://www.apache.org/licenses/LICENSE-2.0 에서 라이센스 사본을 얻을 수 있습니다 . 해당 법률에 의해 필요하거나 서면 동의가 있지 않는 한 이 라이센스 하에서 배포되는 소프트웨어는 명시적이든 묵시적이든 막론하고 어떠한 보증이나 조건 없이  &quot; 있는 그대로 &quot;  배포됩니다 .  이 라이센스 하의 특정 언어 관리 허가 및 제한 사항은 라이센스를 참조하십시오 . Creative Commons 3.0  귀속 라이센스 이 프레젠테이션의 일부는  Google 이 생성하고 공유하는 작업에서 복제된 것이며 (http://code.google.com/policies.html) Creative Commons 3.0  귀속 라이센스 (http://creativecommons.org/licenses/by/3.0/) 에 설명된 약관에 따라 사용되었습니다 .

More Related Content

PDF
(NEMO-UX) 미래 컴퓨팅 환경
PDF
이미지와 애니메이션 효과 적용하기
PDF
파이어몽키 3D 애플리케이션 만들기
PDF
[TECHCON 2019: MOBILE - Android]6.예제로 배우는 안드로이드 카메라
PPTX
Getting Your App Discovered: Android Market & Beyond
PDF
Consejos principales para Android UI Cómo alcanzar la magia en los tablets
PPTX
MOTODEV App Validator
PDF
Beyond English - Make Your Android App a Global Success
(NEMO-UX) 미래 컴퓨팅 환경
이미지와 애니메이션 효과 적용하기
파이어몽키 3D 애플리케이션 만들기
[TECHCON 2019: MOBILE - Android]6.예제로 배우는 안드로이드 카메라
Getting Your App Discovered: Android Market & Beyond
Consejos principales para Android UI Cómo alcanzar la magia en los tablets
MOTODEV App Validator
Beyond English - Make Your Android App a Global Success

Similar to Designing Apps for Motorla Xoom Tablet (20)

PDF
허니컴 태블릿 디자인
PPT
Introducing Fragments
PDF
Modern android
PDF
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
PDF
협업하는 디자이너 - #4 Android
KEY
Android design guideline overview
PDF
안드로이드 메테리얼 디자인 transition, cardview 맛보기
PPTX
안드로이드 오픈소스 어플리케이션 블록
PPTX
Windows Phone App Design Guide
PPTX
Android 9.0 변경점
PPTX
GDG DevFest Busan 16" Android Nougat Developer's Note
PDF
스마트폰처음사용하기_안드로이드
PPTX
Android 기초강좌 애플리캐이션 구조
PDF
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
PDF
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
PDF
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
PPT
Android발표자료 홍종진
PDF
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
PPTX
Java, android 스터티8
PDF
2013 10 guide_to_mobile_appui_20131028
허니컴 태블릿 디자인
Introducing Fragments
Modern android
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
협업하는 디자이너 - #4 Android
Android design guideline overview
안드로이드 메테리얼 디자인 transition, cardview 맛보기
안드로이드 오픈소스 어플리케이션 블록
Windows Phone App Design Guide
Android 9.0 변경점
GDG DevFest Busan 16" Android Nougat Developer's Note
스마트폰처음사용하기_안드로이드
Android 기초강좌 애플리캐이션 구조
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
[TECHCON 2019: MOBILE - Android]3.안드로이드 개발자 로드맵
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
Android발표자료 홍종진
200819 NAVER TECH CONCERT 06_놓치기 쉬운 안드로이드 UI 디테일 살펴보기
Java, android 스터티8
2013 10 guide_to_mobile_appui_20131028
Ad

More from Motorola Mobility - MOTODEV (20)

PDF
HTML5 vs Native Android: Smart Enterprises for the Future
PDF
The Enterprise Dilemma: Native vs. Web
PPTX
Kill the Laptop!
PPT
Beautifully Usable, Multiple Screens Too
PPT
Getting the Magic on Android Tablets
PDF
Taking Advantage of Webtop
PDF
Building Quality Into Your Apps Through Testing
PDF
Top Tips for Android UIs
PDF
Diseñando aplicaciones para el Motorola XOOM
PDF
Presentación de los fragmentos
PDF
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
PDF
Cómo agregar calidad a sus aplicaciones mediante pruebas
PDF
Cómo aprovechar Webtop Cómo HTML5 mejora la experiencia del usuario
PDF
Principais dicas para UIs do Android
PDF
Gráficos cada vez mais rápidos utilização de NDK e Renderscript
PDF
Como integrar qualidade aos seus aplicativos através de testes
PDF
Tirando vantagem do webtop como o html5 aprimora a experiência do usuário de ...
PDF
Introdução a fragmentos
PDF
Desenvolvimento de aplicativos para o tablet Motorola XOOM
PDF
Using the NDK and Renderscript
HTML5 vs Native Android: Smart Enterprises for the Future
The Enterprise Dilemma: Native vs. Web
Kill the Laptop!
Beautifully Usable, Multiple Screens Too
Getting the Magic on Android Tablets
Taking Advantage of Webtop
Building Quality Into Your Apps Through Testing
Top Tips for Android UIs
Diseñando aplicaciones para el Motorola XOOM
Presentación de los fragmentos
Gráficos cada vez más rápidos. Cómo usar NDK y RenderScript
Cómo agregar calidad a sus aplicaciones mediante pruebas
Cómo aprovechar Webtop Cómo HTML5 mejora la experiencia del usuario
Principais dicas para UIs do Android
Gráficos cada vez mais rápidos utilização de NDK e Renderscript
Como integrar qualidade aos seus aplicativos através de testes
Tirando vantagem do webtop como o html5 aprimora a experiência do usuário de ...
Introdução a fragmentos
Desenvolvimento de aplicativos para o tablet Motorola XOOM
Using the NDK and Renderscript
Ad

Designing Apps for Motorla Xoom Tablet

  • 1. Motorola Mobility Anna Schaller Android 기술 전도사 개발자 플랫폼 및 서비스 Motorola XOOM 용 앱 설계
  • 2. 환영사 © 2010 Motorola Mobility, Inc. 01 과거와 현재 스마트폰 설계와 태블릿 설계 비교 02 애플리케이션 UI 디자인의 변화 Android 3.0 UI 특징 소개 03 그래픽과 미디어의 변화 그래픽과 미디어 지원에 대한 업데이트 , 향상 및 정보 04 하드웨어 특징 XOOM 하드웨어에서의 Android 지원 05 10 가지…… XOOM 상에서 애플리케이션을 얻기 위한 간편한 단계
  • 3. 태블릿 소개 스크린 10.1&quot;, WXGA(1280 x 800), 160 dpi(mdpi) 메모리 : 32 GB 플래시 스토리지 프로세서 : nVidia Tegra 2 듀얼 코어 센서 : 가속도계 , 기압계 , 자이로스코프 , 나침반 , 조도계 , GPS, 근접 또는 진동 없음 , 4- 방향 회전 연결 : 802.11 a/b/g/n, Bluetooth, HDMI 카메라 : 2mp 고정 초점 전방 / 5mp 자동 초점 후방 미디어 : 720p HD 비디오 레코딩 , 1080p HD 재생 외장 스토리지 : 32 GB SD 카드 ( 지원 예정 ) 플랫폼 : Android 3.0/3.1(Honeycomb) 앱 환경 : Adobe AIR 2.6, Android, NDK, Flash 10.3 다수의 소프트웨어 변경 사항
  • 4. Atrix 구성 상태 표시줄 메뉴 키 홈 키 뒤로 버튼 보너스 버튼 ( 일반적으로 검색 기능 ) 볼륨 키 ( 상 / 하 ) 전원 버튼
  • 5. XOOM 구성 볼륨 키 ( 상 / 하 ) 전원 버튼
  • 6. XOOM 구성 시스템 표시줄 메뉴 버튼 아님
  • 7. 애플리케이션 UI 디자인의 변화 홀로그램 테마 시스템 표시줄 희미하게 하기 동작 표시줄 Fragment 새로운 위젯 알림 업데이트 시스템 클립보드 드래그 및 드롭 7 페이지 프레젠테이션 제목 버전 1.0 2009 년 2 월 24 일
  • 8. 홀로그램 테마 Android 3.0 대상으로 구축된 모든 앱에 의해 적용됩니다 minSdkVersion 또는 targetSdkVersion = 11 * 및 * 하드웨어 가속 활성화 ( android:hardwareAccelerated= “ true ” ) SDK 버전이 9 이하일 경우 애플리케이션은 Android 2.3 의 위젯 디자인을 사용하고 홀로그램 테마를 적용하지 않습니다 다음과 같은 두 가지 버전이 있습니다 흰색 글자에 파란색 배경인 기본 버전 @android:style/Theme.Holo 어두운 글자색에 반전된 흰색 홀로그램 @android:style/Theme.Holo.Light
  • 9. 시스템 표시줄 희미하게 하기 소등 모드 아이콘을 홀로그램 “점”으로 대체해 시스템 표시줄을 희미하게 합니다 ( 시스템 표시줄이 없어지지는 않음 ) View v = findViewById(R.id. view_id); v.setSystemUiVisibility( View. STATUS_BAR_HIDDEN ); v.setSystemUiVisibility( View. STATUS_BAR_VISIBLE );
  • 10. 동작 표시줄 – 기본 앱 상단에 있는 기존의 제목 표시줄을 대체합니다 제목이 포함된 애플리케이션 아이콘 오버플로 메뉴 메뉴 생성은 변경되지 않았습니다 public boolean onCreateOptionsMenu(Menu menu) { ... } public boolean onOptionsItemSelected(MenuItem item) { case R.id.menu_item ... } /res/menu/ menu_definitions.xml
  • 11. 동작 표시줄 – 동작 항목이 탭으로 표시 애플리케이션 아이콘을 동작 가능 상태로 만들 수 있습니다 동작 표시줄에 탭으로 표시되는 인터페이스 오버플로 메뉴에 나열하기보다는 각 동작 항목으로 표시 텍스트 포함 또는 미포함 ; 아이콘 포함 또는 미포함 동작 표시줄을 관리하려면 : ActionBar actionBar = getActionBar() ; actionBar. setNavigationMode( ActionBar. NAVIGATION_MODE_TABS ) ; 참조 : android.app.actionbar “ 동작 가능” 아이콘 탭 동작 항목
  • 12. 전체 화면으로 전환 - 동작 표시줄 없애기 동작 표시줄을 숨길 수 있습니다 . “ 그러나” 그렇게 하면 애플리케이션에서 메뉴에 접근할 수 없습니다 <activity android:theme= “@android:style/Theme.NoTitleBar” > 프로그램을 통해 동작 표시줄을 숨길 수도 있으며 , 이 경우 사용자가 전환하면 됩니다 ActionBar bar = getActionBar(); if (bar != null) { if (bar. isShowing() ) bar. hide() ; else bar. show() ; }
  • 13. 메뉴 역호환성을 지원하기 위해 시스템 표시줄과 더불어 소프트 메뉴 버튼이 추가되었습니다 minSdkVersion 및 targetSdkVersion < 11
  • 14. Fragment 애플리케이션을 하위 구성 요소로 나누어 개별적으로 관리하고 다양한 방법으로 결합할 수 있도록 해줍니다 ( 예 : 다중 창 UI 만들기 ).
  • 15. Fragment( 계속 ) Fragment 는 항상 Activity 에 임베딩되어야 합니다 목록 Fragment Fragment Activity
  • 16. Fragment( 기본 Fragment) Fragment 를 확장하는 클래스를 만듭니다 Activity 와 유사한 컨텐츠를 표시합니다 ( 이미지 , 텍스트 , 애플리케이션 위젯 ) 다른 Fragment 나 탭에 연결할 수 있습니다 Activity 의 오버플로 메뉴 ( 동작 표시줄 ) 에 항목을 추가할 수 있습니다 표시되지 않아도 됩니다 ( 은밀히 작동할 수 있음 ) 화면에 표시된다면 자체 레이아웃 파일이 있어야 합니다 ( 기본 ) Fragment
  • 17. Fragment(Activity 에 추가 ) XOOM_hc_app /res/layout/main.xml ( 목록 ) Fragment Activity 레이아웃 ( 컨텐츠 ) Fragment ( 이미지 임베딩 포함 ) PictureList.java ContentFragment.java
  • 18. 새로운 뷰 (View) 애플리케이션 위젯 PopupMenu( android.widget.PopupMenu ) 메뉴가 뷰 (View) 에 연결됩니다 ( 예 : 버튼 ) 홈 화면 위젯 StackView( android.widget.StackView ) 3D 스택으로 하위 요소를 표시하고 사용자가 하위 요소 사이에서 각각 넘겨볼 수 있는 보기 화면 . 풍부한 알림 기능 ( android.app.Notification.Builder ) 알림 레이아웃을 구축합니다
  • 19. 작업 예 SDK( 소프트웨어 개발 도구 ) 견본 중 Honeycomb Gallery 에 나와 있는 사항 인터페이스 탭 , 동작 항목 메뉴 및 오버플로 메뉴가 포함된 동작 표시줄 Fragment List 및 Fragment 를 가로 및 세로 방향으로 표시 새로운 테마 끌어서 놓기 애니메이션 동작 표시줄 숨기기 / 표시 소등 모드
  • 20. 그래픽 및 멀티미디어 2D 그래픽을 위한 하드웨어 가속 텍스처 압축 새로운 애니메이션 프레임워크 미디어 지원 프레젠테이션 제목 버전 1.0 2009 년 2 월 24 일
  • 21. 하드웨어 가속 2D 그래픽 서브셋 상에서 가속을 위한 내장 지원 (Canvas API) 매니페스트에서 적절한 노드를 설정해 전체 애플리케이션 또는 각 Activity 에 적용 android:hardwareAccelerated=“true” 다음을 통해 각 Activity 및 / 또는 창에 프로그래밍을 통해 로컬 적용 : WindowManager.LayoutParams Window win = getWindow(); win.setFlags (WindowManager.LayoutParams. FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams. FLAG_HARDWARE_ACCELERATED ); 다음을 통해 캔버스에 하드웨어 가속이 적용되었는지 테스트해 확인 : isHardwareAcclerated()
  • 22. 텍스처 압축 여러 종류의 칩셋은 여러 다른 종류의 압축 종류를 지원합니다 모바일용 형식 : OpenGL ES 2.0 이 설치된 모든 Android 장치에서 ETC1 지원됨 ( 알파 채널은 지원되지 않음 ) PVRTC(Imagination Technologies 의 PowerVR SGX 530 GPU) ATITC(Qualcomm 의 Adreno GPU) S3TC 또는 DXT1, 3, 5(nVidia GPU) 솔루션 : 텍스처 압축 필터링 <supports-gl-textures android:name=“string”> 문자열은 압축 종류에 해당하는 OpenGL ES 확장임 예 : android:name=“GL_EXT_texture_compression_s3tc”
  • 23. 텍스처 압축 ( 계속 ) Honeycomb 에서뿐만 아니라 모든 API 레벨과도 작동됩니다 지원되는 모든 형식을 위한 태그를 하나씩 정의해야 합니다 Android Dev Guide - Android 매니페스트 태그에 나오는 지원되는 압축 종류 목록 http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html 도구는 MotoDev 기술 자료 참조 http://developer.motorola.com/docstools/library/understanding-texture-compression/
  • 24. 애니메이션 다음과 같은 두 가지의 애니메이션 시스템을 선택할 수 있습니다 . 뷰 (View) 애니메이션 ( android.view.animation ) 트윈 (Tween) 애니메이션 뷰 (View) 개체의 컨텐츠에서 간단한 일련의 변화를 실행합니다 . 기본 전환에는 그래픽의 회전 , 페이드 , 이동 및 늘이기가 포함됩니다 . 프레임 (Frame) 애니메이션 프레임별 애니메이션으로 하나씩 Drawable 리소스를 연속으로 표시해 애니메이션을 만들 수 있습니다 . 프로퍼 티 (Property) 애니메이션 ( android.animation // Honeycomb 의 새로운 기능 ) (Drawable 과 같은 표시 뿐만 아니라 !) 거의 모든 개체를 애니메이션화할 수 있습니다 . 애니메이션화할 수 있는 프로퍼티 세트를 확장합니다 ( 그룹 및 재생 ) 뷰 (View) 애니메이션이 좀 더 간단하고 빠른 반면 , 프로퍼티 애니메이션은 기능이 더 많습니다 참조 : http://developer.android.com/guide/topics/graphics/animation.html
  • 25. 미디어 지원 - 장치에서 컨텐츠 얻기 디지털 미디어 파일 전송 미디어 / 사진 전송 프로토콜 (MTP/PTP) 을 위한 내장 지원 사용자가 USB 케이블을 꼽으면 Android File Transfer 애플리케이션이 시작됩니다 . 사용자는 사진 , 영화 , 비디오 , 벨소리 , 팟캐스트 등을 미리 정의된 폴더에 복사하거나 다른 컨텐츠를 위한 새 폴더를 만들 수 있습니다 .
  • 26. 하드웨어 센서 카메라 터치 스크린 전화 통신
  • 27. 센서 가속도계 , 자이로스코프 , 자기계 , 기압계 , 나침반 , 조도계 , GPS, 근접 센서 없음 , 진동 없음 장치 방향 정상적인 방향은 4- 방향 회전에 가로 방향입니다 -y e +y es +x -x +z +y e +y e -x +x -y e -y e +x -x 0 도 회전 0 도 회전 90 도 회전
  • 28. 센서 ( 계속 ) android.view.Display.getRotation() 을 사용해 현재 방향을 알아냅니다 네 가지 회전 방향 종류에 대한 x/y 값을 조정합니다 ROTATION_0 ROTATION_90 ROTATION_180 ROTATION_270 SDK 에서 AccelerometerPlay 견본 참조 Android 블로그 포스트 One Screen Turn Deserves Another 에 자세한 내용이 나와 있습니다 애플리케이션이 회전하지 않도록 하려면 다음을 통해 정상적인 방향으로 고정하십시오 : <activity android:orientation=“nosensor” />
  • 29. 센서 - 기압계 센서 판독 버전 1.0 © 2010 Motorola Mobility, Inc. // www.engineeringtoolbox.com/air-altitude-pressure-d_462.html // 고도 10 미터 상승시 ~ 1.2 gm /cm2 감소
  • 30. 카메라 2 개의 카메라 ( 전방 및 후방 ) 를 사용할 수 있습니다 5 MP, 자동 초점 , 후방 2 MP, 고정 초점 , 전방 Gingerbread(2.3) 에서 이중 카메라에 대한 지원 추가됨 후방 카메라가 기본 카메라이므로 후방 카메라의 특징을 기반으로 필터링이 수행됩니다 ( 예 : android.hardware.camera.autofocus ) <uses-permission android:name=“android.permission.CAMERA” /> <uses-feature android:name=“android.hardware.camera.front” android:required=<true or false> />
  • 31. 카메라 ( 계속 ) import android.hardware.Camera; import android.hardware.Camera.CameraInfo ;   […]   public void toggleCamera() { Camera mCamera; int numberOfCameras = Camera. getNumberOfCameras() ; CameraInfo cameraInfo = new CameraInfo(); for (int i = 0; i < numberOfCameras; i++) { Camera. getCameraInfo (i, cameraInfo); if ( cameraInfo.facing == CameraInfo. CAMERA_FACING_FRONT ) { mCamera = Camera.open(i); // 전방 카메라로 작업 수행   } else if ( cameraInfo.facing == CameraInfo. CAMERA_FACING_BACK ) { mCamera = Camera.open(i); // 후방 카메라로 작업 수행 } } }
  • 32. 터치 스크린 android.hardware.touchscreen.multitouch (API 레벨 7) 손가락 2 개로 누르는 작동을 지원합니다 android.hardware.touchscreen.distinct (API 레벨 8) 2 개 이상의 손가락을 완전히 독립적으로 추적하는 작동을 지원합니다 android.hardware.touchscreen.multitouch.jazzhands (API 레벨 9) 5 개 이상의 손가락을 완전히 독립적으로 추적하는 작동을 지원합니다 (10 개 손가락으로 누르기 ) <uses-feature> 태그를 설정해 이 기능을 지원하는 장치 ( 예 : XOOM) 로 필터링합니다
  • 33. 터치 스크린 ( 계속 ) XOOM 에는 실제 키보드가 없기 때문에 사용자에게는 터치 스크린 표면이 기본적인 접촉 지점이 됩니다 터치라는 개념을 반드시 이해해야 합니다 MotionEvent 로 onTouch 이벤트 리스너 기능을 사용합니다 MotionEvent.getPointerCount(): 터치 지점의 수를 알려줌 MotionEvent.getPointerId(): 각 손가락을 추적할 수 있게 함 Making Sense of Multitouch 에서 Adam Powell 의 블로그 게시물을 참조하십시오
  • 34. 전화 통신 장치 관점 CDMA, UMTS/GMS 장치에는 4G/LTE 네트워크를 지원하기 위한 무선 통신 장치가 있습니다 전화 통신 프레임워크의 서브셋이 지원됩니다 ( android.telephony.TelephonyManager ) 앱 관점 전화 기능이 지원되지 않습니다 <uses-feature android:name=“android.hardware.telephony android:required=“true”/> XOOM 을 위한 여러 구성 CDMA, UMTS/GSM, WiFi 만 TelephonyManager.getDeviceId() 정보가 동일하지 않음 일반적으로 IMEI 또는 MIED 이 반환됨 : WiFi 장치는 Null 을 반환
  • 35. 전화 통신 ( 계속 ) 고유의 식별자 얻기 : 데이터를 구하는 이유가 무엇인지 생각해 봅시다 . 하드웨어를 추적하기 위함입니까 , 아니면 앱을 추적하기 위함입니까 ? 하드웨어 추적 작업은 공장 리셋 전반에서 지속적으로 필요합니다 . 앱 추적 작업은 공장 리셋 시 값을 리셋해야 합니다 .  MAC 주소 ( 권장하지 않음 ) 모든 장치에 WiFi 가 있는 것은 아닙니다 . 또한 WiFi 가 켜져 있지 않을 경우 하드웨어에서 MAC 주소를 보고하지 않을 수도 있습니다 . 일련 번호 ( 권장하지 않음 ) 전화 통신 기능이 없는 장치에서만 확실히 보장됩니다 . ANDROID_ID( 아마도 ) 장치가 처음 부팅되면 생성되어 저장됩니다 . 장치를 지우면 리셋됩니다 . Android 2.2 이전 버전의 장치에서는 확실히 보장되지 않습니다 새로운 권장 사항은 자체 고유 ID 를 생성해 선호하는 공유 파일에 저장하는 것입니다 예 : uniqueId = UUID.randomUUID.toString()
  • 36. 10 가지…… .. Honeycomb SDK targetSdkVersion 레이아웃 예외 처리 호환 모드 Drawable 텍스트 허용 (Permission) 및 기능 코드 베이스 유지 Honeycomb SDK
  • 37. 지금 당장 할 수 있는 10 가지 작업 Honeycomb SDK( 및 업데이트된 도구 ) 를 다운로드해 에뮬레이터에서 앱을 시험 가동해 봅니다 . targetSdkVersion 을 “ 11 ” 로 변경하고 무엇이 바뀌는지 살펴봅니다 . 대형 화면에 최적화된 레이아웃을 갖춘 프로젝트에 /res/layout-xlarge 및 /res/layout-xlarge-port 폴더를 추가합니다 . 오류 처리를 업데이트해 앱이 일정 시간 무응답 상태가 되거나 (ANR) 사용자가 마냥 기다리게 하기보다는 부드럽게 종료되도록 합니다 . 앱이 “호환 모드”에서 실행되고 있는지 알아봅니다 . minSdkVersion= &quot; 3 &quot; , targetSdkVersion 없음 ; 1.5 대상으로 구축 minSdkVersion= &quot; 3 &quot; 및 targetSdkVersion= &quot; 3 &quot; ; 1.5 를 초과한 모든 SDK 대상으로 구축 “ 쉐도우박스 효과”
  • 38. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) targetSdkVersion >= “4” 로 설정 , 1.6 이상의 SDK 대상으로 구축
  • 39. /res/drawable-< density > 에서 그래픽을 다시 찾아봅니다 . 지금 당장 할 수 있는 10 가지 작업 ( 계속 )
  • 40. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 9- 패치 도구를 사용하여 “늘일 수 있는” 영역을 만듭니다 배경을 ImageView 로 놓고 scaleType=centerCrop 을 설정합니다 <ImageView android:src=“@drawable/background” android:layout_width=“match_parent” android:layout_height=“match_parent” android:scaleType=“centerCrop” />
  • 41. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 패턴 이미지를 기울일 수 있습니다 /res/layout/main.xml <LinearLayout android:background=“@drawable/background” /res/layout/background.xml <bitmap xmlns:android= “ http://schemas.android.com/apk/res/android” android:src=“@drawable/baseimage” android:tileMode=“repeat” android:filter=“true” android:dither=“true” />
  • 42. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) DisplayMetrics 로부터의 얻는 치수를 사용하여 createScaledBitmap() 에 읽어 들입니다 BitmapDrawable backgroundImage = (BitmapDrawable)getResources().getDrawable (R.drawable.background); Bitmap backgroundBitmap = backgroundImage.getBitmap(); backgroundBitmap = Bitmap.createScaledBitmap (backgroundBitmap, dm.widthPixels ,      // 메트릭스 폭 표시 dm.heightPixels ,     // 메트릭스 높이 표시   true);                 // 필터링 활성화
  • 43. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 텍스트가 알아볼 수 있는 상태이며 큰 화면에서 원활하게 표시되는지 확인합니다 . 크기가 더 크다면 (1280 x 800) 텍스트를 최적화해 공간을 최대한 활용합니다
  • 44. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 2 개의 다른 글꼴 크기로 ( 모두 sp 단위 ) /res/values 및 /res-values-xlarge 에 2 개의 다른 <dimens> 태그를 생성합니다 @dimen/< variable > 을 <style> textSize 속성에 추가합니다 <style name=“readText” parent=“@android:style/TextAppearance”> <item name=“android:textSize”> @dimen/font_size </item> <item name=“android:textColor”>#000000</item> </style>
  • 45. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 시장에서 앱을 걸러낼만한 허용 (Permission) 및 <uses-feature> 태그를 확인합니다 . 허용 (Permission) 은 앱을 걸러내지는 않으나 <uses-feature> 태그는 걸러냅니다 . XOOM 에는 전화 기능이 없는 것이나 ...... 마찬가지입니다 . <uses-permission android:name=“ CALL_PHONE ” /> <uses-permission android:name=“ CALL_PRIVILEGED ” /> <uses-permission android:name=“ MODIFY_PHONE_STATE ” <uses-permission android:name=“ PROCESS_OUTGOING_CALLS ” /> <uses-permission android:name=“ READ_SMS ” /> <uses-permission android:name=“ RECEIVE_SMS ” /> <uses-permission android:name=“ RECEIVE_MMS ” /> <uses-permission android:name=“ RECEIVE_WAP_PUSH ” /> <uses-permission android:name=“ SEND_SMS ” /> <uses-permission android:name=“ WRITE_APN_SETTINGS ” /> <uses-permission android:name=“ WRITE_SMS ” /> <uses-feature android:name=“android.hardware.telephony” android:required=“true”/> * 내포 *
  • 46. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) XOOM 에서 앱이 보여지게 하려면 android:required=“ false ” 를 명시적으로 설정해야 합니다 APK 에서 aapt 도구를 실행해 명시적 기능을 표시합니다 $ aapt dump badging < path_to_exported_.apk > $ ./aapt dump badging BTExample.apk package: name='com.example.android.btexample' versionCode='' versionName='' uses-permission:'android.permission.BLUETOOTH_ADMIN' uses-feature:'android.hardware.bluetooth' sdkVersion:'3' targetSdkVersion:'5’ <. . .> MOTODEV App Validator 를 실행해 암시적 기능을 표시합니다 . http://developer.motorola.com/testing/app-validator/
  • 47. 지금 당장 할 수 있는 10 가지 작업 ( 계속 ) 코드 베이스를 어떻게 관리할 것인지 결정합니다 . 공식적인 추천 사항은 단일 2 진수 접근식을 유지하는 것입니다 . 호환 라이브러리를 통해 Fragment 를 1.6 까지 사용할 수 있음을 명심하십시오 . Honeycomb SDK( 및 업데이트된 도구 ) 를 다운로드해 에뮬레이터에서 앱을 시험 가동해 봅니다 .
  • 48. Android 3.1 API 레벨 12 크기 조정 가능한 위젯 입력 및 모션 USB API MTP/PTP 지원 실시간 전송 프로토콜 (RTP) Fragment Breadcrumb
  • 49. 크기 조정 가능한 위젯 홈 화면의 위젯은 크기가 조정 가능합니다 가로 , 세로 또는 양 방향 모두 위젯 AppWidgetProviderInfo 메타 데이터에서 resizemode 특성을 정의합니다 <appwidget-provider xmlns:android=&quot;http://schemas.android.com/apk/ res/android&quot;   android:minWidth=&quot;294dp&quot;   android:minHeight=&quot;72dp&quot;   android:updatePeriodMillis=&quot;86400000&quot;   android:previewImage=&quot;@drawable/preview&quot;   android:initialLayout=&quot;@layout/example_appwidget&quot; android:configure=&quot;com.example.android.ExampleAppWidgetConfigure&quot;   android:resizeMode=&quot;horizontal|vertical&quot; > </appwidget-provider>
  • 50. 입력 종류 및 모션 이벤트 모든 보기와 창에 걸쳐 다양한 새로운 입력원과 모션 이벤트를 지원하기 위해 입력 이벤트 시스템이 확장되었습니다 마우스와 트랙볼 입력의 경우 플랫폼이 새로운 두 가지 모션 이벤트를 지원합니다 ACTION_SCROLL ( 가로 또는 세로 ): 스크롤휠과 같은 장치에서 스크롤 모션이 발생한 포인터의 위치를 제공합니다 ACTION_HOVER_MOVE : 버튼을 누르지 않은 상태인 마우스의 위치를 보고합니다 조이스틱 , 게임패드 , 마우스 및 트랙볼의 모션 이벤트는 터치 이벤트가 아닙니다 onTouchEvent() 와 달리 onGenericMotionEvent() 로의 호출을 통해 모션 이벤트를 “일반적” (Generic) 모션 이벤트로 뷰 (View) 에 전달하기 위한 새로운 콜백 방법
  • 51. USB API USB 호스트 모드를 위한 내장 플랫폼 지원으로 애플리케이션이 연결된 주변 장치를 관리할 수 있도록 해주는 API 를 노출시킵니다 호스트 모드는 Android 작동 장치에서 적절한 USB 컨트롤러 하드웨어에 의존합니다 XOOM 과 같이 호스트 모드를 지원하는 장치에서는 애플리케이션이 API 를 이용해 연결된 장치를 식별하고 장치와 통신할 수 있습니다 . 또한 두 가지의 기본 연결 하드웨어를 지원합니다 (Android 장치가 호스트로 작동하는지 여부에 따라 다름 ) USB 장치 : 호스트 역할을 하기 위해 Android 작동 장치에 의존하는 연결된 하드웨어 ( 카메라 , 키보드 , 마우스 ) USB 액세서리 : USB 호스트 컨트롤러가 있는 연결된 하드웨어 ( 로보틱스 ) USB API 를 이용할 수 있는 패키지 : android.hardware.usb
  • 52. MTP/PTP 지원 새로운 패키지 android.mtp 클래스 MtpDevice, MtpDeviceInfo, MtpConstants 연결된 카메라 및 USB 호스트 버스 상에 연결되어 있는 다른 PTP( 사진 전송 프로토콜 ) 장치와 애플리케이션이 API 를 통해 직접 상호 작용할 수 있습니다 부착된 UsbDevice 를 언급하여 MtpDevice 개체를 예를 들어 설명합니다 연결을 개방하고 데이터를 전송합니다 장치와 장치에 저장된 개체에 대한 정보를 얻습니다 장치를 부착하고 분리할 때 알림을 수신합니다 이제 Gallery 앱이 PTP 를 지원하므로 사용자는 USB 를 통해 카메라를 연결하고 한 번만의 간단한 작동으로 사진을 Gallery 로 가져올 수 있습니다
  • 54. 자세한 내용 : developer.motorola.com 도구 MOTODEV Studio: 추가적 기능 ( 문자열 로컬화 , 데이터베이스 관리자 ) 이 있는 이클립스 기반의 IDE App Validator: Android 앱의 장치 간 호환성을 사전에 검사하기 위한 온라인 도구 기술 자료 Motorola XOOM Programming Tips(Motorola XOOM 프로그래밍 팁 ) Understanding Texture Compression( 텍스처 압축에 대한 이해 ) 제품 사양 http://developer.motorola.com/products/xoom/ 토론 게시판
  • 55. 질문 © 2010 Motorola Mobility, Inc. 56
  • 56. 감사합니다 ! © 2010 Motorola Mobility, Inc. 57
  • 57. 법적 고지 라이센스 주의 사항 따로 기재된 사항이 없다면 Motorola Mobility Inc. 가 기술하고 제공하는 견본 소스 코드는 아래 설명과 같이 사용이 허가됩니다 . Copyright © 2010-2011, Motorola, Inc. All rights reserved( 달리 명시적으로 표시한 것은 예외 ). 수정 유무를 막론하고 소스 및 2 진수 형태로의 재배포 및 사용은 다음 조건이 충족될 경우에만 허용됩니다 . 소스 코드의 재배포는 위의 저작권 주의 사항 , 이 조건 목록 및 다음의 부인 고지 사항을 유지해야 합니다 . 2 진수 형태로의 재배포는 위의 저작권 주의 사항 , 이 조건 목록 및 다음의 부인 고지 사항을 배포물과 함께 제공되는 문서 및 / 또는 기타 자료에 복제해야 합니다 . 구체적인 사전 서면 허가가 없이는 이 소프트웨어에서 파생된 제품을 보증하고 홍보하는 데 Motorola, Inc. 이름 및 해당 기여자의 이름을 사용할 수 없습니다 . 이 소프트웨어는 저작권 소유자와 기여자에 의해 &quot; 있는 그대로 &quot; 제공되며 모든 명시적 또는 묵시적 보증 ( 상품성 및 특정 목적에 대한 적합성에 대한 묵시적 보증을 포함하며 여기에 제한되지 않음 ) 을 배제합니다 . 저작권 소유자 또는 기여자는 이 소프트웨어의 사용으로 인해 발생하는 모든 직접적 , 간접적 , 부수적 , 예외적 , 전형적 또는 결과적 손해 ( 대체품이나 대체 서비스의 조달 , 사용 , 데이터 또는 이익 손실 , 또는 영업 중단을 포함하되 이에 제한되지 않음 ) 에 대하여 계약에 의한 것이든 , 엄밀한 책임 또는 불법 행위 ( 또는 과실과 기타 행위를 포함하여 ) 에 의한 것이든 이와 여타 책임 소재에 상관없이 어떠한 경우에도 책임을 지지 않으며 , 이는 그와 같은 손해의 가능성을 사전에 알고 있던 경우에도 마찬가지입니다   이 프레젠테이션에서 표시되는 기타 소스 코드는 다른 라이센스 하에 제공될 수도 있습니다 . 
 Apache 2.0 Copyright © 2010, Android Open Source Project. All rights reserved( 달리 명시적으로 표시한 것은 예외 ). Apache 라이센스 하에서 사용이 허가됨 , 버전 2.0(&quot; 라이센스 &quot;); 이 라이센스를 준수하지 않고는 이 파일을 사용할 수 없습니다 . http://www.apache.org/licenses/LICENSE-2.0 에서 라이센스 사본을 얻을 수 있습니다 . 해당 법률에 의해 필요하거나 서면 동의가 있지 않는 한 이 라이센스 하에서 배포되는 소프트웨어는 명시적이든 묵시적이든 막론하고 어떠한 보증이나 조건 없이 &quot; 있는 그대로 &quot; 배포됩니다 . 이 라이센스 하의 특정 언어 관리 허가 및 제한 사항은 라이센스를 참조하십시오 . Creative Commons 3.0 귀속 라이센스 이 프레젠테이션의 일부는 Google 이 생성하고 공유하는 작업에서 복제된 것이며 (http://code.google.com/policies.html) Creative Commons 3.0 귀속 라이센스 (http://creativecommons.org/licenses/by/3.0/) 에 설명된 약관에 따라 사용되었습니다 .

Editor's Notes

  • #2: My name is Anna Schaller and I’m part of the Developer Community Tech Services Team at Motorola Mobility. Our job is to support 3 rd party developers writing android apps, especially targeted for Motorola devices.
  • #4: Walkthrough of device from users perspective -- home screen; 5 panels -- upper left is the text and voice search -- upper right is the application tray and add to home screen -- Partial list apps preloaded and optimized for the tablet include -- gmail -- contact -- maps -- browser -- android market -- eBook reader -- google talk -- camera Walkthrough of specs
  • #5: This is a typical Android smartphone. Across the top is your status bar where your status icons appear (battery, wifi, etc). This is also where your notifications can be found. Touching the status bar opens the notification panel. Moving to the bottom of the device, is where you’ll find buttons. Prehoneycomb devices were required to have 3 buttons – menu, home, and back. There’s usually a fourth button (in this case search). So that’s a typical smartphone.
  • #6: When you’re talking about tablets things change. On the hardware side there are only three buttons on the device – volume up, volume down, and power.
  • #7: Then when you talking about the platfom the whole user interface has changed.. From an apps perspective there are a couple things you should be aware of. For instance… You have the system bar along the bottom. The back and home button on the lower left. There is NO menu button. Menus are now all in software and only available from within an application. On the lower right is where your status bar icons now appear as well as you notification panel. From a user perspective there’s much more to it but from a developer’s standpoint, those are the things you should be aware of. They won’t necessarily impact your application but it may change the way you think about things.
  • #10: Select a view that you want to associate the dimmer with (I have an id assigned to my root linearLayout) and set the visibility. You can attach the call to any view (including buttons) so may want to toggle it off and on with a button or putting inside any listener. If you touch the system bar the icons reappear. Touching the view dims the system bar. Book reader is a good example of dimming.
  • #11: Replaces the title bar. This is the simplest form of an action bar. The Action Bar is included by default in all activities that target Android 3.0 or greater (setting minSdk or targetSdk = 11) Basic action bar with an overflow menu. The menu in the action bar replaces the hard menu button on the front of the device. The default behavior for the application icon is to do nothing. The title can be displayed or hidden.
  • #12: Action bars get more feature rich from there. There are many extensions you can make to the action bar including -- actionable application icon with R.id.home in onOptionsMenuSelected -- adding tabs -- creating individual actionable items with or without text and titles -- Provide a drop-down list for navigation -- Provide a contextual action bar (CAB) -- Provide interactive &amp;quot;action views&amp;quot; in place of action items (such as a search box).
  • #14: One final note on menus. To support forward compatibility a soft menu button is provided along the system bar for pre-honeycomb apps. If you open the menu you can see where and what the menu items looks like.
  • #15: Starting from Android 1.6 and up developers can divide the Activities of their applications into subcomponents called Fragments. Fragments -- can be added, removed, replaced, and animated inside an Activity dynamically -- are modular and reusable across multiple Activities. Here we’ve got the updated version of the contacts app showing the list of contacts in a fragment on the left and the details of the selected contact in a fragment on the right.
  • #16: Fragments can not stand on their own. They must be included in an activity. However fragments are self contained in that they have their own life cycle and every visible fragment has their own UI layout. One of the most common ways to use fragments is to associate a content fragment with an item in a list. There’s a separate type of fragment, called a ListFragment, that lets you do this. The content fragment can contain anything you would normally use in an activity – images, text, ui elements, etc.
  • #17: To add a fragment without a UI, add the fragment from the activity using add(Fragment, String) (supplying a unique string &amp;quot;tag&amp;quot; for the fragment, rather than a view ID)
  • #18: (Nothing changes in the AndroidManifest file) Adding a fragment to an activity requires updates to the activity’s layout file. You must add the fragment to your Activity’s layout file with a &lt;fragment&gt; tag. In the fragment tag you declare the class name of the fragment that’s defined usually in a separate .java file. Pay attention to the root layout or container you use. In this case I used LinearLayout which, by default has a top to bottom placement. So when I first did this app my fragments did not appear side-by-side, they appeared top-to-bottom. I needed to add orientation=horizontal in order to get the side-by-side. The device’s orientation is landscape by default so if you want a portrait version of the app to be top-to-bottom you’ll need to create another layout-port file specifying orientation=portrait.
  • #22: In Android you can get hardware acceleration for 3d graphics through OpenGL ES 2.0 if you are using NDK. There is also software-enabled acceleration for 3d graphics using OpenGL ES 1.x. Until now there has been no support for 2D graphics..
  • #23: Textures improve a 3d model with a visual realism that goes beyond just adding color. However the more detailed the textures become the larger the data size becomes which means that quite often you need to compress the texture data. The challenge for Android-powered devices is that the chipsets used in the devices support different compression types. So what do you do? PVRTC == Motorola Droid series ATITC == HTC S3TC == XOOM, Atrix, Bionic Android Market filters applications according to the texture compression formats that they support, to ensure that they can be installed only on devices that can handle their textures properly. Developers can use texture compression filtering as a way of targeting specific device types, based on GPU platform
  • #24: Android Market filters applications according to the texture compression formats that they support, to ensure that they can be installed only on devices that can handle their textures properly. Developers can use texture compression filtering as a way of targeting specific device types, based on GPU platform
  • #26: Follow instructions for using Data Storage to external media http://developer.android.com/guide/topics/data/data-storage.html Every Android-compatible device supports a shared storage. Shared files: Music/ - Media scanner classifies all media found here as user music. Podcasts/ - Media scanner classifies all media found here as a podcast. Ringtones/ - Media scanner classifies all media found here as a ringtone. Alarms/ - Media scanner classifies all media found here as an alarm sound. Notifications/ - Media scanner classifies all media found here as a notification sound. Pictures/ - All photos (excluding those taken with the camera). Movies/ - All movies (excluding those taken with the camcorder). Download/ - Miscellaneous downloads. Private files can be placed in /android/data/&lt;appname&gt; folder.
  • #28: In 2.3 (Gingerbread) support for new sensor-based orientation settings were added that better supports 4-way rotation In your manifest at the &lt;activity&gt; node you can specify &lt;activity …. android:orientation=“sensorPortrait” : supports portrait and reverse-portrait android:orientation=“sensorLandscape” : supports landscape and reverse-landscape android:orientation=“fullSensor” : supports 2 and 4-way rotation depending on device X and Y on portrait native device are on different long and short sides than landscape native.
  • #31: Still need to define camera permission to use either camera If you want to filter the app from devices that don’t support front-facing camera add &lt;uses-feature xxx…android.hardware.camera.front/&gt;
  • #32: There is a new package android.hardware.Camera.CameraInfo that stores properties of each camera. So you import this package, along with the Camera package. The Camera package now lets you get the number of cameras on the device so you can use this as an index to the camera. Once you have that index you can get to the front or rear camera.
  • #33: XOOM screen supports 10-point multitouch – Android supports 5 or more simultaneous independent pointers.
  • #35: Device perspective versus app perspective Think about why you need the unique identifier. If
  • #38: Apps are always forward compatible but……
  • #46: There is no way to make a phone call from the XOOM so dialer app is not there. If you call the dialer from your application it will not launch. Unless you explicitly specify the &lt;uses-feature&gt; tag, permissions imply that features are required. Permissions do not filter an app, the &lt;uses-feature&gt; tag does that. If you request permission for the Telephone without specifying a &lt;uses-feature&gt; tag the default filter is &lt;uses-feature android:hardware.telephony” android:required=“true”/&gt;. In this case your app will be filtered from the XOOM. Also keep in mind that on the wifi-only version of the tablet there is no IMEI or MEID, which in the past has been used as a unique identifier. If you query for it you get NULL. If you need a unique id, use the MAC address.
  • #47: To find out what features may be blocking your app from a device there are two tools you can use: -- Aapt shows explicitly defined features with &lt;uses-feature&gt;. You must use the version of aapt that is provided for the latest Platform-Tools component available. -- MOTODEV App Validator is a web-based tool that lets you pre-test your application and show you where your app might fall through the cracks – such as implied features (permissions defined without a corresponding &lt;uses-feature&gt;). It shows you other things as well such as strings that are not completely localized.
  • #52: There are two new features in 3.1 to support USB. Firstly there is built-in support for USB host mode that lets apps connect and manage peripherals. The device itself must have a USB controller, which the XOOM does. So the XOOM can operate in USB host mode. The second update is USB support for connected devices. There are two types of hardware supported: -- Peripherals can be a USB device meaning that they depend on the Android device to be the USB host. Cameras are a good example of this. -- Peripherals can also be a USB accessory meaning that they operate as the USB host to the Android device. A robotics controller is an example of this. At Google I/O they had an exercise bike with a mounted XOOM. The bike was the host and reported calories burned after pedaling some distance to an app on the XOOM.