56
Keith Bauwise

Student Developer Challenge

Embed Size (px)

DESCRIPTION

SERI Presentation covering Samsung Apps, the S Pen and ChatOn features.

Citation preview

Page 1: Student Developer Challenge

Keith Bauwise

Page 2: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

1. Opportunity: Samsung Apps

2. Developer Support

3. Innovative Samsung Technologies

CONTENTS

Page 3: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

1. Opportunity: Samsung Apps

2. Developer Support

3. Innovative Samsung Technologies

CONTENTS

Page 4: Student Developer Challenge

Each with its own ecosystem Now

Page 5: Student Developer Challenge
Page 6: Student Developer Challenge
Page 7: Student Developer Challenge

Samsung Apps Readers Hub

Media Hub

Game Hub Music Hub

Learning Hub

Page 8: Student Developer Challenge

or

In App Purchase offers an easy and effective way to monetize while keeping users interested and involved in an app.

Monetization: InApp Purchase

Page 9: Student Developer Challenge

Monetize Applications with Easy-to-use Tools Mobile & Tablet PC Advertising

Monetization: AdHub

Support for several Click-to-actions

App down Landing Page Call

Various Types of AD

Mobile In App

Mobile Web

TV In App

Mobile & Tablet Device bada & Android OS

Page 10: Student Developer Challenge

11 / 문서의 제목

Time-limited application trying or renting. Apps can be used for certain period and extended.

* Application information may differ from the actual product appearance.

Monetization: Try’n Play & Rent’n Play

Page 11: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

1. Opportunity: Samsung Apps

2. Developer Support

3. Innovative Samsung Technologies

CONTENTS

Page 12: Student Developer Challenge

Samsung Ecosystem

SDKs / IDEs Technical Contents Developer Events

TECHNICAL RESOURCES

developer.samsung.com Premium Support Service

Direct App Sales AdHub

In-App Purchase

TECHNICAL SUPPORT

Samsung Apps Multiple Devices

Multiple Platforms

APP MARKET

REVENUE MODELS

Page 13: Student Developer Challenge

Development Process

Develop Test Publish Promote

Page 14: Student Developer Challenge

developer.samsung.com

Page 15: Student Developer Challenge

Development Process

Develop Test Publish Promote

Page 16: Student Developer Challenge

RTL (Remote Test Lab)

Page 17: Student Developer Challenge

Development Process

Develop Test Publish Promote

Page 18: Student Developer Challenge

Submit App

Page 19: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

Certification Process

App Publication

Submit App

Page 20: Student Developer Challenge

Certification Process

Page 21: Student Developer Challenge

Development Process

Develop Test Publish Promote

Page 22: Student Developer Challenge

Boost sellers’ profit by providing a variety of promotion opportunities through seasonal/theme promotions or seller promotions

MARKETING SUPPORT: PROMOTION

Seasonal/Theme Promotions Seller Promotions

Page 23: Student Developer Challenge

Select high quality apps to be bannered/featured to maximize the degree of exposure of apps in the storefront.

24 / 문서의 제목 24 / 문서의 제목

50 개국 (1/19)

MARKETING SUPPORT: BANNER/FEATURE

Page 24: Student Developer Challenge

Get connected with Samsung Apps Fans or Followers for the latest Samsung Apps news, events and any on-going promotions through SNS marketing activities

MARKETING SUPPORT: SOCIAL MEDIA

twitter.com/samsungapps

youtube.com/samsungapps

Page 25: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

1. Opportunity: Samsung Apps

2. Developer Support

3. Innovative Samsung Technologies

CONTENTS

S Pen

ChatON

Page 26: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

S Pen

Page 27: Student Developer Challenge

WHAT IS S PEN? A New type of input device

EMR (Electromagnetic Resonance) Solution

- Based on dual capacitive touch and EMR pen technology

Precise and quick response Supports pen pressure

1

Advantages of S Pen

No power consumption Lightweight hardware

2

Side button, pen hovering A new UX

3

Page 28: Student Developer Challenge

APPLICATION AREA EXTENSION Various possibilities with the S Pen in various app categories

B2B Education SNS

Game Memo & Planner

Graphics

Page 29: Student Developer Challenge

NEW UX SCENARIO : BASIC

INTERACTION Can replace existing touch input methods

Activation, Coordinates,

Pressure

Touch Y : 0.0 X : 0.0 X : 130.0

Pen Y : 150.36 Y : 250.36 Y : 350.36 Y : 450.36 Y : 550.36 Y : 650.36 Y : 750.36 Y : 850.36 Y : 960.20 Y : 1060.20 Y : 1160.20 X : 590.0 Y : 150.36 Y : 250.36 Y : 350.36 Y : 450.36 Y : 550.36 Y : 650.36 Y : 750.36 Y : 850.36 Y : 960.20 Y : 1060.20 Y : 1160.20

Page 30: Student Developer Challenge

New UX Scenario: Pen Hovering Recognize pen events without contact

No contact

Screen

Page 31: Student Developer Challenge

Recognize the side button with or without contact

Side Button Recognition

Call a Function

New UX Scenario: Side Button

Page 32: Student Developer Challenge

libspen22.jar Dev Guide Sample

Application (with

source code)

USING SDK

Contents of the SDK

To get the new version of the S Pen SDK, please visit : - http://developer.samsung.com/android/spen.sdk

Page 33: Student Developer Challenge

Libraries Add External JARs libspen22.jar Java Build Path

Java Build Path

Libraries

libspen22.jar Add External JARs…

USING SDK Adding the JAR file to your project

Page 34: Student Developer Challenge

CODE Sample app

Page 35: Student Developer Challenge

CODE 1. Add SCanvasView in layout xml

Graphical layout

Page 36: Student Developer Challenge

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.RelativeLayout;

import com.samsung.spensdk.SCanvasConstants;

import com.samsung.spensdk.SCanvasView;

public class MainActivity extends Activity {

CODE 2. Packages to import

Import com.samsung.spensdk.* Import com.samsung.sdraw.* Packages to use S Pen features

Page 37: Student Developer Challenge

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mImageBtn = (Button) findViewById(R.id.buttonImage);

mImageBtn.setOnClickListener(imageBtnClickListener);

mSCanvas = (SCanvasView) findViewById(R.id.canvas_view);

mPenBtn = (Button) findViewById(R.id.buttonPen);

mPenBtn.setOnClickListener(mBtnClickListener);

mPenBtn.setTextColor(Color.WHITE);

mEraserBtn = (Button) findViewById(R.id.buttonEraser);

mEraserBtn.setOnClickListener(mBtnClickListener);

...

CODE 3. Initialize controls

Page 38: Student Developer Challenge

OnClickListener imageBtnClickListener = new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(Intent.ACTION_PICK);

intent.setType("image/*");

startActivityForResult(intent, SELECT_PICTURE_ACTIVITY_REQUEST_CODE);

}

};

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent imag

eReturnedIntent) {

super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

if( (resultCode == RESULT_OK) &&

(requestCode == SELECT_PICTURE_ACTIVITY_REQUEST_CODE) )

{

Uri selectedImage = imageReturnedIntent.getData();

...

mSCanvas.setData(buffer);

}

}

CODE 4. Image button handler

Page 39: Student Developer Challenge

OnClickListener mBtnClickListener = new OnClickListener() {

@Override

public void onClick(View v) {

int nBtnID = v.getId();

// If the mode is not changed, open the setting view. If the mode is

same, close the setting view.

if(nBtnID == mPenBtn.getId()){

if(mSCanvas.getCanvasMode()==SCanvasConstants.SCANVAS_MODE_

INPUT_PEN){

mSCanvas.toggleShowSettingView(SCanvasConstants.SCANVAS_SET

TINGVIEW_PEN);

}

else{

mSCanvas.setCanvasMode(SCanvasConstants.SCANVAS_MODE_INPUT_

PEN);

mSCanvas.showSettingView(SCanvasConstants.SCANVAS_SETTINGVI

EW_PEN, false);

updateModeState();

}

...

CODE 5. Pen/Eraser button handler

Page 40: Student Developer Challenge

private OnClickListener undoNredoBtnClickListener = new OnClickLis

tener() {

@Override

public void onClick(View v) {

if (v.equals(mUndoBtn)) {

mSCanvas.undo();

} else if (v.equals(mRedoBtn)) {

mSCanvas.redo();

}

mUndoBtn.setEnabled(mSCanvas.isUndoable());

mRedoBtn.setEnabled(mSCanvas.isRedoable());

}

};

CODE 6. Undo/Redo button handler

Page 41: Student Developer Challenge

CODE 7. Final app - output

Page 42: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

ChatON

Page 43: Student Developer Challenge

ChatON Main Features

Multi & Cross Platform Messaging Service

Enhanced 1:1 & Group Chat

Multimedia Content Sharing & Trunk

Animation Message (AMS) Anicon (Animated Emoticons)

Page 44: Student Developer Challenge

Open APIs allowing 3rd party apps to…

Access ChatON services and user base

Utilize ChatON features (messaging, etc.)

The ChatON API

ChatON Service 3rd Party Apps API

Page 45: Student Developer Challenge

The ChatON API: Server-side and Client-side

ChatON Service 3rd Party Apps API

Client-side API Server-side API

Page 46: Student Developer Challenge

Client-side API

•Get buddy list

•Get profile picture

•Add buddy

•Get my profile

Gra

ph

U

tili

ty

Me

ssa

ge

•Check ChatON installation

•Open ChatOn download page

•Open a chat room

•Send text message

•Send text message with url

•Sent multimedia message

•Sent multimedia message with text

Page 47: Student Developer Challenge

Client-side API

1. Get Buddy List

GraphAPI.addBuddy(context, phoneNumber) The following steps describes how to add a buddy to my buddy list:

1.Select AddBuddy

2.Type in the buddy’s phone number

3.Click “Add Buddy” button

4.Add Buddy screen gets displayed

5.Click “+” button to complete add buddy

Graph API

Page 48: Student Developer Challenge

public void clickHandler(View v) {

if( mEditPhoneNumber == null ) {

return;

}

String phoneNumber = mEditPhoneNumber.getText().toString();

switch(v.getId()) {

case R.id.buttonAddBuddy:

// call addBuddy API

int nResult = GraphAPI.addBuddy(this, phoneNumber);

if( nResult == ChatONAPI.RESULT_CODE_FAIL_EXCEPTION_ILLEGAL_ARGUMENT ) {

Toast.makeText(this, "PhoneNumber's length must be greater than or equals to 1 and be less than or equals to 20", Toast.LENGTH_SHORT).show();

}

else if( nResult == ChatONAPI.RESULT_CODE_FAIL_API_NOT_AVAILABLE ) {

Toast.makeText(this, "API isn't availble. please check your ChatON version.", Toast.LENGTH_SHORT).show();

}

break;

} }

CODE

Page 49: Student Developer Challenge

Client-side API

1. Get Buddy List

MessageAPI.sendTextMessageWithURL(context, text, url) The following steps describes how to send a message and an URL to ChatON buddies:

1. Select SendTextMessageWithURL 2. Type in a message and an URL 3. Click “Send Text Message With URL” button 4. Buddy list screen appears to allow you to select target buddies or a chat room 5. The typed in message will be delivered when the selection is completed

Message API

Page 50: Student Developer Challenge

public void clickHandler(View v) {

if( mEditSendText == null || mEditSendUrl == null ) {

return;

}

String text = mEditSendText.getText().toString();

String url = mEditSendUrl.getText().toString();

if( TextUtils.isEmpty(text) || TextUtils.isEmpty(url) ) {

Toast.makeText(this, "Illegal Argument!!\nPlease, check argument", Toast.LENGTH_SHORT).show();

return;

}

switch(v.getId()) {

case R.id.buttonSendTextUrl:

if( text.length() > 0 ) {

// call API

int nResult = MessageAPI.sendTextMessageWithURL(this, text, url);

// check result

switch(nResult) {

case ChatONAPI.RESULT_CODE_FAIL_EXCEPTION_ILLEGAL_ARGUMENT:

Toast.makeText(this, "Illegal Argument!!\nPlease, check argument", Toast.LENGTH_SHORT).show();

break;

case ChatONAPI.RESULT_CODE_FAIL_EXCEPTION:

Toast.makeText(this, "Exception!!\nPlease, check argument", Toast.LENGTH_SHORT).show();

break;

case ChatONAPI.RESULT_CODE_FAIL_TEXT_LIMIT_EXCEEDED:

Toast.makeText(this, "Message(Text + Url)'s length must be greater than or equals to 1 and be less than or equals to 2000", Toast.LENGTH_SHORT).show();

break;

case ChatONAPI.RESULT_CODE_FAIL_API_NOT_AVAILABLE:

Toast.makeText(this, "API isn't availble. please check your ChatON version.", Toast.LENGTH_SHORT).show();

break;

}

}

break;

} // switch(v.getId())

}

CODE

Page 51: Student Developer Challenge

Client-side API

1. Get Buddy List

MessageAPI. UtilityAPI.isChatONInstalled(context)

Utility API

public class IsChatONInstalledActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.is_chaton_installed);

}

public void clickHandler(View v) {

switch(v.getId()) {

case R.id.buttonIsChatONInstalled:

// call API

boolean isInstalled = UtilityAPI.isChatONInstalled(this);

// check result

if( isInstalled ) {

Toast.makeText(this, "ChatON is installed !!", Toast.LENGTH_SHORT).show();

}

else {

Toast.makeText(this, "ChatON is not installed !!", Toast.LENGTH_SHORT).show();

}

break;

}

}

}

Page 52: Student Developer Challenge

ChatONAPI.jar

Online Guide + Sample Application (with source code)

USING SDK

Contents of the SDK

To get the new version of the ChatON SDK, please visit : - http://innovator.samsungmobile.com/clientApi.do?platformId=16&pgId=03

Page 53: Student Developer Challenge

Using ChatON API 1. Request API Access Key

2. Download and include ChatONAPI.jar library

4. Code !

3. Include access key into AndroidManifest.xml

<uses-permission android:name="com.sec.chaton.TOKEN_XXXXX" />

Page 54: Student Developer Challenge

Copyright © 1995-2012 SAMSUNG All rights reserved

developer.samsung.com

Page 55: Student Developer Challenge

Wrap-up

STUDENT DEVELOPER CHALLENGE

DEVELOPMENT PROCESS

S PEN

DEVELOPER SUPPORT

CHATON

Page 56: Student Developer Challenge

Keith Bauwise [email protected]

[email protected]

http://developer.samsung.com