44
Smart Product App 과과 PASCal A Team / Bitacademy Java22 기 1

Smart Product App 과정 PASCal A Team / Bitacademy Java22기

  • Upload
    marja

  • View
    51

  • Download
    0

Embed Size (px)

DESCRIPTION

Smart Product App 과정 PASCal A Team / Bitacademy Java22기. 스마트 디바이스 + 애플리케이션. 0. 배경. 스마트 프로덕트란 ?. 스마트 폰 , 스마트 TV 와 같은 스마트 디바이스와  애플리케이션 ( 응용프로그램 ) 의 연결을 통해 소비자에게 제품과 앱 기반 서비스를 동시에 제공하는 융합 제품이다. 글로벌 시장이 형성 중인 신 성장 산업이기도 하다. Withings. Wow!. 0. 배경. Context Aware Service. - PowerPoint PPT Presentation

Citation preview

Page 1: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

1

Smart Product App 과정

PASCal A Team / Bitacademy Java22기

Page 2: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

2

0. 배경

스마트 프로덕트란 ?

스마트 디바이스 + 애플리케이션 스마트 폰 , 스마트 TV 와 같은 스마트 디바이스와 애플리케이션 ( 응용프로그램 ) 의 연결을 통해 소비자에게 제품과 앱 기반 서비스를 동시에 제공하는 융합 제품이다 .글로벌 시장이 형성 중인 신 성장 산업이기도 하다 .

Withings

Page 3: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

3

0. 배경

Context Aware Service

사용자 중심 지능화된 서비스기기 주변의 사람 혹은 사물의 변화 (Context) 인지한다 .

그에 따라 사용자에게 최적화된 서비스를 제공한다 .

This way!

Wow!

Page 4: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

4

0. 배경

Context Aware Smart Products?

일정 입력 따로 , 기기 설정 따로캘린더 서비스 상의 일정 정보에는 사용자의 상황 정보 (Context) 가 포함 되어 있다일정과는 별도로 휴대폰이나 주변의 스마트 프로덕트 설정을 변경 시켜줘야 한다

Page 5: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

5

0. 배경

SmartTags

한번의 탭으로 특정 상황에 최적화 사용자의 변화하는 상황 , 위치 , 욕구에 맞춰 최적화된 기능을 제공하는 App 이다 .

사소하지만 중요한 서비스들을 번거롭게 신경을 쓰지 않고 자동으로 Phone 상태 관리가 가능하다 .

Page 6: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

6

0. 배경

Locale

GPS 설정에 따라 활성화사용자가 설정을 원하는 Phone 환경으로 셋팅하여 저장한다 .

설정된 태그의 위치를 지도에서 선택하고 그 지역에 들어가면 설정된 환경으로 Phone 상태를 적용한다 .

Page 7: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

7

오늘은 이런 이야기를 합니다0. 배경1. 제안 시스템2. 데모 및 시나리오3.PASCal 구현4. 제안 가능한 비지니스 모델5. 정리

Page 8: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

8

1. 제안 시스템

시스템 전개도

Page 9: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

9

1. 제안 시스템

설계 방침 및 기술적 과제

구글 캘린더 연동Android 에서 OAuth2.0 통과

Hybrid AppLocal HTML 파일간 데이터 전송

Context Aware ServiceSQLite and Multiple Threads

플랫폼의 확장App 간 메시지 전달

Page 10: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

10

2. 데모 및 시나리오

Page 11: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

11

3. 구현

시스템 전개도

Page 12: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

12

3. 구현

Block Diagram

Android

Linux Kernel / Driver / HW

Java API

Native C / C++ Library DVM

Bluetooth

Activity

Telephony

Location

View

Widget

Graphics

HTTP

PASCal NXT remote

GoogleAdapter

PASCalEngine

Handler

EventImportor

UI

DAO

UI

NXTTalker

Choreography

Page 13: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

13

일정 정보 획득 기존 인증 방식OAuth2.0Android 에서의 문제점Solution

Page 14: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

14

3.1. 일정 정보 획득

기존 인증 방식

지나치게 많은 권한Client 에 사용자의 ID/PW 가 저장된다 .

Client 는 서버 상의 모든 사용자의 리소스에 접근이 가능하다 .

User

ID/ PW

Account Information

Client Server

Page 15: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

15

3.1. 일정 정보 획득

OAuth2.0

제한된 권한ID/PW 대신 Access Token 을 사용한다 .

사용자는 Login 시 Client 가 Server 에서 접근 가능한 리소스 확인 가능하다 .

User

Token Reques

t

Code

OAuth2.0 Server ServerClient

Login & Consent

Exchange Code for

TokenToken

Call API w/ Token

Page 16: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

16

3.1. 일정 정보 획득

Android 에서 Google OAuth2.0 사용시 문제점

Code 를 받을 수 없다 !!Google 의 경우 Code 를 사전에 정의된 Redirect URL 로 전달한다 .Redirect URL 에는 구글 상의 주소인 urn:ietf:wg:oauth:2.0:oob 과 Android 기기상의 http://localhost 만 등록 가능하다 .urn:ietf:wg:oauth:2.0:oob 사용시 , 브라우져가 기동되며 App 을 빠져 나가게 된다 .

User

Token Reques

t

Code

OAuth2.0 Server

Google Server

Android

Login & Consent

Exchange Code for

TokenToken

Call API w/ Token

Android 는 http://localhost 가 없다 .

Page 17: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

17

3.1. 일정 정보 획득

Solution

URL 에서 code 추출 하기구글에 redirect url 로 http://localhost 를 등록한다 .

사용자 로그인후 , http://localhost?code=xxxxx 의 형태로 code 가 전달된다 .

Android webview client 에서 code 를 추출하여 저장한다 .

public void onPageFinished(WebView view, String url) {super.onPageFinished(view, url);if(url.indexOf("code=")!=-1){

code = url.substring(url.indexOf("code=")+5);try {// Save code…..} catch (IOException e) {

e.printStackTrace();}

}}

Page 18: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

18

Hybrid AppHybrid App 이란Local HTML 간의 이동Solution

Page 19: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

19

네이티브 앱과 모바일 웹의 장점을 동시에 !겉으로는 네이티브 앱의 모습을 가지고 앱스토어를 통해 배포한다 .

실제 주요 컨텐츠는 브라우저를 기반으로 하는 웹 형태로 서버로부터 정보를 전송한다 .

단말 고유기능 접근 + 유지보수용이 , 비용 절감된다 .

3.2. Hybrid App

Hybrid App 이란

Page 20: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

20

JAVA

Local HTML 간의 데이터 전송HTML 은 화면 상의 정보 표시 및 정보 연결의 목적을 지닌다 .

server 를 경유하지 않고 스스로 데이터를 저장하거나 얻을 수 없다 .

server 가 없는 경우 HTML 과 연결된 JavaScript 에서 데이터를 주고 받아야 한다 .

a.html b.html

… Data …

<a href=“b.html”>

JavaScript

3.2. Hybrid App

Local HTML 간의 이동

Page 21: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

21

3.2. Hybrid App

location.href.substr보내는 페이지 : window.location.href = 받는 url? 파라미터 = 값의 형태로 전달한다 .(get 방식 )

받는 페이지 : substring 으로 ? 뒤의 파마리터 및 값을 넘겨 받을 수 있다 .

Solution

a.html

b.html

link.js

… Data … <a href=“#”>

Data = location.href.substr

(location.href.lastIndexOf('=') +

1)

window.location.href

=“b.html?Data=”+Data

Page 22: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

22

Context Aware ServiceThread 1. EventImportorStatus DiagramThread 2. PascalEngine잘못된 일정 정보Solution

Page 23: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

23

3.3.Context Aware Service

Thread 1. EventImportor

calendarlist

Trigger start

go

Clear calendarli

stN

Y

Get schedules

from Google

Parsing schedules

Save schedules

Trigger end

Stop

EventImportor’s cyclecalendarlist 가 존재하면 지운다 .구글에서 Tag 가 있는 일정을 가져와 calendarlist 에

저장한다 .

Exist calendarlist ?

Page 24: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

24

PASCalEngine 의 상태 변화

① 일정을 적용하는 상황② 일정이 적용되어 있는 상황③ 평상시로 되돌아가는 상황④ 평상시 핸드폰 상황

3.3.Context Aware Service

Status Diagram

Normal

Activity

① 현 시각 일치 OStatus = Normal

② 현 시각 일치 OStatus = Activity

③ 현 시각 일치 XStatus = Activity

④ 현 시각 일치 XStatus = Normal

Page 25: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

25

3.3.Context Aware Service

Thread 2. PascalEngine

Start time< NOW &&NOW < end time?

Status = Activity?

Status = Normal?

Schedule’s Tag ==

Profile Name?

Get schedules

YN

YN

Back again Setting

go

YN

Get Profiles

YN

Fetch Trigger end

Stop

Profile

calendarlist

PascalEngine’s cycleCalenderlist 에서 일정을 가져온다 .

현재시간이 일정의 시작 시간과 끝 시간 사이에 있는지 비교한다 .Status 로 현재 이벤트가 적용중인지 아닌지를 판단한다 .

일정의 태그와 저장한 프로필의 이름이 같은지 확인을 한다 .프로필에 설정된값에 따라 기능을 수행한다 .

Page 26: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

26

3.3.Context Aware Service

잘못된 일정 정보

calendarlist

Trigger start

go

Clear calendarli

stN

Y

Get schedules

from Google

Parsing schedules

Save schedules

Trigger end

Stop

Exist calendarlist ?

Start time< NOW &&NOW < end time?

Status = Activity?

Status = Normal?

Schedule’s Tag ==

Profile Name?

YN

YN

Back again Setting

Get schedules

go

YN

Get Profiles

YN

Fetch Trigger end

Stop

Profile

Page 27: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

27

3.3.Context Aware Service

Solution

workingFLag 라는 boolean 을 하나 생성하여 두 thread 간의 의사소통이 가능하게 하였다 .workingFlag 가 false 면 EventImporter 가 작업을 시작하였다는 것이고 이때는 PascalEngine 은 일정을 가져오지 않는다 .대신 PascalEngine 은 잠시 후에 다시금 작업을 시도하게끔 하였다 .

public class EventImportor extends Thread {

public void run() {workingFlag =

false;// delete calendarlist// insert calendarlistworkingFlag =

true;SystemClock.sleep();

}}

public class PascalEngine extends Thread {

public void run() {if(workingFlag) {

// ……}

}}

Flag 를 통한 Thread 제어

Page 28: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

28

플랫폼의 확장독립된 프로세스Binder 공유BindService 생명주기App 간 상호작용 AIDL

Page 29: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

29

3.4. 플랫폼의 확장

독립된 프로세스

PASCal SandboxLinux user ID : 12345

PASCalLinux user ID : 12345

ResourcesLinux user ID : 12345

Network File SMS

Logs DB …

NXT SandboxLinux user ID : 54321

NXTLinux user ID : 54321

ResourcesLinux user ID : 54321

Network File SMS

Logs DB …

SandBox 로 관리되는 AndroidSandBox 란 지원하는 보호된 영역 안에서 프로그램을 실행하는 보안 소프트웨어다 . 프로세스 레벨 보안 , 사용자 및 애플리케이션과 연관되는 그룹 ID 와 같은 Linux 기능과 권한을 사용한다 .Android 애플리케이션은 고유 Linux 프로세스에서 실행되며 고유 사용자 ID 가 지정된다 .

Application 간 분리와 파일 및 디렉토리 , 디바이스 자원에 대한 권한 등을 관리한다 .

Page 30: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

30

Binder 공유

Binder 를 통해서 관리리눅서 커널에 있는 Binder 를 통해서 관리된다 .

서비스에 바인딩되면 실행 중에 메서드를 호출할 수 있도록 해 준다 .

바인딩은 원격 제어할 수 있도록 서비스에 연결 하는 것이다 .

PASCal NXT

Android libutil.so

/dev/binder

Service Manager

메모리

User space

Kernel

3.4. 플랫폼의 확장

Page 31: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

31

BindService 생명주기

공유 공간 확보 – 바인딩

Linux

Binder

서비스에 바인딩되면 실행 중에 메서드를 호출할 수 있도록 해 준다 .

Binder 는 리눅서 커널에 있는 Binder 를 통해서 관리된다 .

(3)Listener 호출

PASCal

BindService

serviceConnection()

NXT

onBind(…)

3.4. 플랫폼의 확장

(1) 서비스 호출

(2)IBinder 타입 객체 리턴

BindService()->onCreate()->onBind()-> 서비스와 상호작용 ->unBind()->onDestroy()

Page 32: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

32

NXT

PlayService

IPlayService.Stub

Binder

BBinder

execTransact()

dance()

dance()

BpBinder

PASCal

PlayManager

IPlayService.Stub.Proxy

BinderProxy

getSystemService()

dance()

dance()

Transact()

(5)dance() 함수 호출

서비스 매니저

ServiceManager

ServiceManagerProxy

BinderProxy

App 간 상호작용

BpBinder

JavaBBinderJNI 네이티브 함수

(1)PlayService 서비스 등록요청

(2) 서비스 등록(4) 서비스 검색

addService()

getService()

ContextManager

(3)PlayService 서비스 검색 요청

Transact()

3.4. 플랫폼의 확장

Page 33: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

33

Proxy method Stub method

onTransact()(gen/NXT.java)

NXT.Java

AIDL

더 간편하게데이터를 주고 받기위해서는 Proxy method, onTrnsact(), Stub method 를 구현해야 한다 .

클라이언트에서 서버의 메서드를 호출하게 되면 프록시 메서드에서 onTransact() 에 요청하고 stub 메서드를 통해 함수를 실행시킨다 .

AIDL 컴파일러는 서비스 인터페이스 , 프록시 , 스텁 소스 코드를 자동으로 생성해준다 .

PASCal NXT

AIDL(src/nxt.aidl)

트랜잭션 코드를 통해Stub 메서드 호출

compile

3.4. 플랫폼의 확장

Page 34: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

34

AIDL

AIDLAIDL 은 클라이언트에서 사용 가능한 메서드와 필드를 정의하는 인터페이스를 정의AIDL 을 컴파일을 한 java 파일은 gen 폴더 안에 자동 생성된다 . AIDL 서비스가 던진 예외는 서비스 사용자에게 돌아가지 않기 때문에 예외처리를 해주는 것이 좋다 .

package org.jfedor.nxtremotecontrol;

interface NXT{ String dance();}

/* * This file is auto-generated. DO NOT MODIFY.……public boolean onTransact(int code, android.os.Parcel data, android.os.Parcel reply, int flags) throws android.os.RemoteException{ switch (code){ case INTERFACE_TRANSACTION:{ reply.writeString(DESCRIPTOR); return true; } case TRANSACTION_dance:{ data.enforceInterface(DESCRIPTOR); java.lang.String _result = this.dance(); reply.writeNoException(); reply.writeString(_result); return true; }…

NXT.aidlNXT.java

컴파일

동기적인 호출임으로 클라이언트측은 서비스가 결과값을 반환 할 때까지는 동작을 멈추게 된다 .

3.4. 플랫폼의 확장

Page 35: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

35

Part 0: ???

비즈니스 모델

Business Model5. 확장성

Page 36: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

36

5. 확장성

Home networking service 와의 연계

PASCal

Skifta

iMediaShare

Multimedia sharing

Ezville Smart Home

Samsung Smart Home

Home automation

Home networking service

or@ 기상

@귀가

Page 37: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

37

6. 정리

오늘 이야기의 요점은

구글 연동 및 Context Aware Service OAuth2.0 and Multiple Threads HTML5 기반 Hybrid App 구현Local HTML 간 메시지 전송

다양한 서비스와 연계 가능AIDL 을 통한 App 간 메시지 전달

Page 38: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

38

Page 39: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

39

7.One more thing

Google code

http://code.google.com/p/p-a-s-cal/SVN 을 통한 source code distribution

UML 등 관련 문서가 있으며 ,

Wiki, Issues 등 피드백이 가능하다 .

Page 40: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

40

Page 41: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

41

Page 42: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

42

추가 자료

Page 43: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

43

좋은 점들만 합쳐놓을 수는 없을까 ? 불편한 게 한두가지가 아니군 !

특허정보검색서비스 http://portal.kipris.or.kr

0. 배경

특허

Page 44: Smart  Product App 과정   PASCal     A  Team /  Bitacademy Java22기

44

0. 배경

평가

일정에 따른 상태 자동 변경

확장 가능성

SmartTags

Locale휴대용 통신 단말기를 이용한 일정 관리 방법

이동통신 단말기의 알람 정보 설정 방법 및 장치

일정관리기능이 구비된 이동통신단말기와 그 제어 방법

유지보수 용이

PASCal

X

X

X X X O O

X X X X X O

X X X X O