24
Chapter 03. Mobile APIs

Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Chapter 03. Mobile APIs

Page 2: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android

Java 언어, Windows & Mac에서 개발

Eclipse, JDK, Android SDK Android Studio 2

- jdk-8u101-windows-x64.exe

- android-studio-bundle-145.3276617-windows.exe

iOS

Objective C & Swift 언어, Mac에서 개발

Xcode

Page 3: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

API (Application Program Interface) 프로그래머를 위한 운영체제나 프로그램의 인터페이스

API의 구현

프로그램 내에서 실행을 위해 서브루틴에 연결을 제공하는 함수를 호출

좋은 API

Build block을 제공함으로써 프로그램 개발을 쉽게 해주는 것

Mobile API Mobile 운영체제에서 프로그래머를 위한 프로그램 인터페이스

화면 구성, 다양한 센서, 모듈 등을 제어 및 사용하기 위한 APIs

Page 4: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action
Page 5: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action
Page 6: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android Basic Activity

Empty Activity

Fullscreen Activity

Google AdMob ads Activity

Google Maps Activity

Login Activity … …

Page 7: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS Single View

Game

Master-Detail Application

Page-Based Application

Tabbed Application

Sticker Pack Application

Page 8: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android Java Main code : 각종 함수 및 구현 담당

레이아웃 xml : 액티비티의 메인 레이아웃 담당

String.xml : 각 컴포넌트 및 string 값을 담당

안드로이드 매니페스트 : 앱을 구성하는 다양한 요소(액티비티, 서비스, 브로드캐스트 수신자, 데이터 제공자, 퍼미션 등을 정의)를 합치는 역할

Page 9: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS main.m : 첫 실행만 담당

Storyboard : Launchscreen (첫 실행시 화면), Main (실제 레이아웃 담당)

AppDelegate : 화면의 상태 및 임시 저장을 담당하며 가장 기본 코드

ViewController : 실행 이후 첫 화면 구성, 각종 함수, 컴포넌트를 구현 실행

Page 10: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android (Statechange) 영속적 상태 : 화면상태, 콘텐츠 제공자, 파일 등 저장이 필요한 데이터

동적 상태 : 사용자 입력 중 화면 회전, 타 액티비티 실행 등으로 인한 저장이필요한 데이터

Page 11: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS application:willFinishLaunchingWithOptions

App 실행을 완료할 준비

application:didFinishLaunchingWithOptions App 실행 완료 후 동작

applicationDidBecomeActive Active 상태로 된 경우

applicationWillResignActive Resign 즉 Background로 갈 예정일 때

applicationDidEnterBackground Background로 간 후

applicationWillEnterForeground 다시 Foreground로 갈 경우

applicationWillTerminate App을 완전히 종료 하는 경우

Page 12: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android 버튼이 있는 경우 (EventExample)

Button android:onClick=“startButton” 설정 한 후, startButton() 함수를 실행 함

그렇지 않은 경우 이벤트 리스너와 콜백 메서드를 이용해 설정 가능

OnClickListener, OnLongClickListener 등

버튼이 없이 사용자의 터치 위치, 다중 터치에 관한 이벤트 처리 (MotionEvent)

OnTouchListener 이벤트 리스너와 onTouch() 콜백 메서드를 구현하여 처리

제스처 감지 클래스를 이용한 사용자 이벤트 (CommonGestures)

onGestureListener 인터페이스를 구현하는 클래스를 정의 후 사용

onFling(), onDown(), onScroll(), onShowPress(), onSingleTapUp(), onLongPress()

더블 탭은 onDoubleTapListener 인터페이스와 onDoubleTap() 메소드 구현

Page 13: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS 버튼을 이용한 사용자 인터랙션 방법 (EventExample)

UIButton을 사용하며 action 메소드를 이용함

사용자의 인터랙션 상황에 따라 설정 가능 (TouchUpInside, TouchDown, DragEnter)

버튼이 없이 사용자의 터치 위치, 다중 터치에 관한 이벤트 처리 (Touch)

View 부분에 설정을 반드시 체크

User Interaction Enabled, Multiple Touch

사용자 터치 위치 확인은 UITouch 클래스를 통해 확인 (TouchMotion)

제스처 감지 클래스를 이용한 사용자 이벤트 (Recognizer)

UIGestureRecognizer 클래스의 addGestureRecognizer 메소드 사용

Tap, Pinch, Pan, Swipe, Rotation, LongPress

Page 14: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android 두 개의 각각 장면을 구성하는 xml 파일을 생성해야 함 (SceneTransition)

장면 전환을 위한 transition.xml 파일을 만들어 애니메이션 처리

Transitionmanager 클래스를 사용한 장면 설정 및 전환

클래스를 사용하지 않고 바로 장면을 보여줄 경우 scene1.enter();

TransitionManager.go(scene1), TransitionManager.go(scene2)

iOS 두 개의 각각 장면을 구성하는 ViewController 클래스를 생성해야 함 (SceneTransition)

장면 전환을 위한 Storyboard Segue를 사용함

Custom 장면 전환을 위한 별도의 설정 필요

Page 15: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android 여러 개의 화면을 TabLayour을 통해 보여줌 (TabLayoutDemo)

보여주기 위한 화면들을 모두 Fragment(xml 파일)로 만듬

액티비티에 TabLayout과 ViewPager 클래스를 추가함

ViewPager 사용을 위해 FragmentPagerAdapter를 추가한 후 아래를 설정

getCount() : 사용자에게 보여줄 수 있는 페이지 프래그먼트의 전체 개수 반환

getItem() : 페이지 번호를 인자로 받아와서 관련 프래그먼트 객체를 반환하여 보여줌

iOS Tab bar Controller가 뷰 컨트롤러간의 이동을 관여함

탭을 만들기 위한 ViewController를 모두 만든 후 TabBarController를 연결함

TabBarController에 연결 되면 각 탭에 대한 제목, 이미지를 설정 할 수 있음

Page 16: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android (CardDemo) 뷰를 재사용 하면서 Resource를 줄여주는 역할

LinearLayoutManager, GridLayoutManager, StaggeredGridLayoutManager

CardView는 RecyclerView 인스턴스와 함께 사용하여 하나의 테이블 형태로 보여줌

getItemCount() 보여질 아이템이 몇 개인지 반환해야 함

onCreateViewHolder() 뷰 홀더 객체를 생성하고 반환

onBindViewHolder() 에서는 생성한 ViewHolder에 이미지와 텍스트 데이터를 넣은 후 반환

iOS Table에서 Cell을 재사용 하면서 Resource를 줄여주는 역할

UITableViewController과 UITableViewCell 클래스를 사용함

재사용을 위한 셀 재사용 식별자 선언 필요

Page 17: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android 특정 액티비티를 요청하는 것으로 extra를 통해 데이터 전달도 가능 (ExplicitIntent)

명시적(explicit) 인텐트 : 정확히 실행할 액티비티를 지정 ()

Intent I = new Intent(this, ActivityB.class);

i.putExtra(“myInt”, 100);

startActivity(i);

암시적(implicit) 인텐트 : url를 전달하며 이를 실행할 수 있는 액티비티를 실행 (ImplicitIntent)

액티비티실행중

안드로이드런타임

명시적 인텐트지정한 이름의액티비티 실행

액티비티가여러개인 경우선택 사항 제시

암시적 인텐트

Page 18: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS UIApplication 클래스의 sharedapplication 메소드를 통해 url을 오픈

URL schemes

Safari – http, https (In-App: UIWebView)

Mail – mailto: (MFMailComposeViewController)

Phone – tel:

Text – sms: (MFMessageComposeViewController)

Maps – http://maps.apple.com/?daddr=San+francisco, (MKMapView)

Youtube – http://www.youtube.com/watch?v=2dSrJXQV90g (UIWebView)

iTunes – http://phobos.apple.com/WebObjects/

Code

if([[UIApplication sharedApplication] canOpenURL:url]) {[[UIApplication sharedApplication] openURL:url];

}

Page 19: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android VideoView 클래스를 사용하며, 제어를 위해 MediaController 클래스를 첨부해줌

H.263, H.264 AVC, H.264 HEVC, MPEG-4 SP, VP8, VP9 재생가능

setVideoPath(String path) : 미디어 경로 문자열로 지정

setVideoUri(Uri uri) : 문자열 대신 Uri 인자로 미디어 경로 지정

start() : 비디오 재생 시작

stopPlayback() : 비디오 재생 중단

pause() : 비디오 재생 일시 중지

isPlaying() : 현재 재생 중인지 여부를 확인 (boolean)

setOnPreparedListener(MediaPlayer.OnPreparedListener) : 재생 준비 시 콜백

setOnErrorListener(MEdiaPlayer.OnCompletionListener) : 에러 발생 시 콜백

setOnCompletionListener(MediaPlayer.OnCompletionListener) : 끝 도달 시 콜백

getDuration() : 비디오의 재생 시간 반환

getCurrentPosition() : 현재의 재생 위치를 정수 값으로 나타냄

setMediaController(MediaController) : 컨트롤러들을 보여줌

Page 20: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android (VideoPlayer) MediaController 클래스

setAnchorView(View view) : 콘트롤러가 고정될 뷰 지정

show() : 컨트롤러를 보여줌

show(int timeout) : 1/1000초 단위로 지정된 시간 동안 컨트롤러를 보여줌

hide() : 컨트롤러 숨기기

isShowing() : 컨트롤러를 현재 보여주고 있는지 여부 (boolean)

코드 구현

1. videoView 추가

2. onCreate() 부분에 videoview를 불러온 후 주소 지정 후 시작 videoView.start();

3. 그리고 제어를 위해 MediaController를 추가해 줌

4. 매니페스트 파일에 인터넷 주소 사용이라는 부분을 추가해 줌<uses-permission android:name=“android.permission.INTERNET” />

Page 21: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS (VideoPlayer) MKMoviePlayerController 클래스를 이용

.mov, .mp4, .mpv, .3gp, H.264 Baseline Profile Level 3.0, MPEG-4 Part 2 video 지원

NSURL로 주소를 지정 후 MKMoviePlayerController 객체에 적용

동영상 플레이 종료 시 종료에 해당하는 메시지를 NotificationCenter를 통해 전달

controlStyle 설정 가능

Page 22: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android (CameraApp) 비디오 녹화 인터페이스를 애플리케이션에서 호출

녹화 종료후 비디오를 포함하는 미디어 파일의 참조를 인텐트가 전달함

인텐트가 전달되면서 제어가 다시 기존 애플리케이션으로 돌아옴

카메라 사용 유무 : PackageManager.hasSystemFeature() 메서드 사용

전면 카메라 : PackageManager.FEATURE_CAMERA_FRONT

후면 카메라 : PackageManager.FEATURE_CAMERA

1. 비디오 캡쳐 인텐트 호출, putExtra() 파일 저장될 위치 지정

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);

2. 녹화를 완료하고 나면 onActivityResult() 메서드가 자동 호출됨

이미지 캡처 인텐트 호출 (내장 카메라로 정지 사진 찍을 때 사용)

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

Page 23: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

iOS UIImagePickerController 클래스를 사용함 (예제 x)

3개의 미디어 소스 사용 가능

UIImagePickerControllerSourceTypeCamera

UIImagePickerControllerSourceTypeSavedPhotosAlbum

UIImagePickerControllerSourceTypePhotoLibrary

UIImagePickerController 사용 후 카메라/앨범 화면이 사라지면 나머지 동작 수행

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfoNSDictionary *)info { }

Page 24: Chapter 03. Mobile APIs - SKKUmonet.skku.edu/wp-content/uploads/2016/09/MAD_Week2_APIs.pdfiOS 버튼을이용한사용자인터랙션방법(EventExample) UIButton을사용하며action

Android 안드로이드 SQLite 데이터 베이스와 데이터 처리

Google cloud 스토리지 엑세스

Google map

KeyguardManager와 FingerprintManager를 이용한 지문 인증

Google Play in App 결제

iOS 코어 데이터, SQLite 데이터 베이스와 데이터 처리

iCould 저장소 엑세스

MapKit과 MKMapView 지도 및 길 찾기, 경로 (MKDirections)

Local Authentication 프레임워크를 이용한 Touch ID

SKPaymentTransactionObserver, SKProductsRequestDelegate를 이용한 in App 결제