Upload
studentdeveloperchallenge
View
603
Download
2
Embed Size (px)
DESCRIPTION
SERI Presentation covering Samsung Apps, the S Pen and ChatOn features.
Citation preview
Keith Bauwise
Copyright © 1995-2012 SAMSUNG All rights reserved
1. Opportunity: Samsung Apps
2. Developer Support
3. Innovative Samsung Technologies
CONTENTS
Copyright © 1995-2012 SAMSUNG All rights reserved
1. Opportunity: Samsung Apps
2. Developer Support
3. Innovative Samsung Technologies
CONTENTS
Each with its own ecosystem Now
Samsung Apps Readers Hub
Media Hub
Game Hub Music Hub
Learning Hub
or
In App Purchase offers an easy and effective way to monetize while keeping users interested and involved in an app.
Monetization: InApp Purchase
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
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
Copyright © 1995-2012 SAMSUNG All rights reserved
1. Opportunity: Samsung Apps
2. Developer Support
3. Innovative Samsung Technologies
CONTENTS
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
Development Process
Develop Test Publish Promote
developer.samsung.com
Development Process
Develop Test Publish Promote
RTL (Remote Test Lab)
Development Process
Develop Test Publish Promote
Submit App
Copyright © 1995-2012 SAMSUNG All rights reserved
Certification Process
App Publication
Submit App
Certification Process
Development Process
Develop Test Publish Promote
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
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
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
Copyright © 1995-2012 SAMSUNG All rights reserved
1. Opportunity: Samsung Apps
2. Developer Support
3. Innovative Samsung Technologies
CONTENTS
S Pen
ChatON
Copyright © 1995-2012 SAMSUNG All rights reserved
S Pen
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
APPLICATION AREA EXTENSION Various possibilities with the S Pen in various app categories
B2B Education SNS
Game Memo & Planner
Graphics
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
New UX Scenario: Pen Hovering Recognize pen events without contact
No contact
Screen
Recognize the side button with or without contact
Side Button Recognition
Call a Function
New UX Scenario: Side Button
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
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
CODE Sample app
CODE 1. Add SCanvasView in layout xml
Graphical layout
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
@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
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
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
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
CODE 7. Final app - output
Copyright © 1995-2012 SAMSUNG All rights reserved
ChatON
ChatON Main Features
Multi & Cross Platform Messaging Service
Enhanced 1:1 & Group Chat
Multimedia Content Sharing & Trunk
Animation Message (AMS) Anicon (Animated Emoticons)
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
The ChatON API: Server-side and Client-side
ChatON Service 3rd Party Apps API
Client-side API Server-side API
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
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
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
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
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
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;
}
}
}
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
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" />
Copyright © 1995-2012 SAMSUNG All rights reserved
developer.samsung.com
Wrap-up
STUDENT DEVELOPER CHALLENGE
DEVELOPMENT PROCESS
S PEN
DEVELOPER SUPPORT
CHATON