39
Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved. Basics: Fundamentals & UI

004 Bada Basics Fundamentals&UI

Embed Size (px)

Citation preview

Page 1: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 1/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Basics:

Fundamentals & UI

Page 2: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 2/39

Page 3: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 3/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

bada API overview

1. bada namespaces2. Privilege levels and groups

3

Page 4: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 4/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

bada namespaces

4

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

Page 5: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 5/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Namespaces – basic bada

5

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

Osp::Base

Fundamental bada

classes:

String, ArrayList,Thread,Math …

Basic bada features

Osp::App

Osp::Base

Osp::Io

Osp::LocalesOsp::Net

Osp::Security

Osp::SystemOsp::Telephony

Osp::Text

Page 6: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 6/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Namespaces – User Interactive

6

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

User interactive features

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Uix

Extended user

interaction functions:Touch, snap,Sensors …

Page 7: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 7/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Namespaces – User Interactive

7

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

User interactive features

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Web

Browser control API

Page 8: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 8/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Namespaces – Service Oriented

8

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

Service oriented features

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Content

Local and remotecontentmanagement

Page 9: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 9/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Namespaces – Service Oriented

9

User interactive features Service oriented featuresBasic bada features

Osp::App

Osp::Base

Osp::Io

Osp::Locales

Osp::Net

Osp::Security

Osp::System

Osp::Telephony

Osp::Graphics

Osp::Media

Osp::Ui

Osp::Uix

Osp::Web

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Text

Kernel

Device

Service

Service oriented features

Osp::Commerce

Osp::Content

Osp::Locations

Osp::Messaging

Osp::Social

Osp::Locations

Interaction,visualisation oflocations and

maps

Page 10: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 10/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Privilege levels

Privilege levels are related to your developermembership

Regulate access to the platform and user-sensitive data

Every privilege level allows access to differentprivilege groups (= functionalities)

10

Level DescriptionNone-privileged Does not require any privileges.

Normal Usable by all bada developer.

System Usable only by Samsung developer partners.

Page 11: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 11/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Coding idioms

1. Exception handling

2. Two phase construction

3. Memory handling4. Virtual path

11

Page 12: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 12/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Exception handling (1/3)

bada does not use standard C++ exceptionhandling

All exceptions are caught by using the bada

specific result typeExamples for result error types:

12

Error Type Description

E_SUCCESS The method was successful

E_OUT_OF_MEMORY Insufficient memory

E_SYSTEM A system error occurred

Page 13: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 13/39

Page 14: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 14/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Exception handling (3/3)

Check the last result using GetLastResult() – If an operation returns null:

DirEnumerator * pEnum = dir. ReadN ();

if (pEnum == null){

AppLog( "Directory::ReadN() failed with error: %s" ,GetErrorMessage ( GetLastResult ()));

return false ;

}

14

Page 15: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 15/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Two phase construction (1/2)

bada uses a two phase constructionWhy? – bada does not use standard C++ exception

mechanism to increase runtime efficiency – And to prevent resource leaks in C++How? – The resource allocation logic is performed in

an extra Construct() method – The destructor follows traditional C++

conventions

15

Page 16: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 16/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Two phase construction (2/2)

Example:result r = E_SUCCESS;

// 1. Phase: create objectCallManager *pCallManager = new CallManager();

// 2. Phase: initialize object (+allocations)r = pCallManager-> Construct();

if(IsFailed(r)){delete pCallManager;

}

16

Page 17: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 17/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Memory handling (1/3)

Ownership policy: – The “owner” of an object is responsible for

deleting dynamically allocated memory

Image * pImage = new Image ();

// Some code ...

delete pImage;

Must be deleted to avoid a memory leak!

17

Page 18: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 18/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Memory handling (2/3)

Rules for ' N' postfix methods: – The caller must delete the returned instance

after an ‘N’ postfix method is called

– Change of “ownership”

Examples for ‘N’ postfix methods: – GetContentInfoN() – DecodeN() – GetValueListN() – SearchN() – OnLandMarkReceivedN()

18

Page 19: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 19/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Memory handling (3/3)

GetContentInfoN():

OnLandmarksReceivedN():

ContentInfo * pInfo = null;pInfo = mgr. GetContentInfoN (contentId);delete pInfo;

voidLandmarkManager:: OnLandmarksReceivedN (,

Osp::Base::Collection:: IList * pResults,,,){

if (r == E_SUCCESS && pResults) {pMainForm->DrawLandmarks(pResults);pResults->RemoveAll(true);delete pResults;

}}

19

Page 20: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 20/39Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Virtual path

Directory Usage Permission

/HomeUsed to store application specific dataE.g.:String fileName(" /Home/test.txt ");

Read/Write

/Res Used to read resource files, such as for UI ormusic and video files Read-only

/Home/Share Used to share data with other bada applications Read/Write

/Share/[appid] Used to read data from other bada apps via their[appid] Read-only

20

Page 21: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 21/39

Page 22: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 22/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Controls in bada

22

Page 23: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 23/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

UI screen structure

Indicator

Title

Softkey

FrameThe top level windowThere is one per application

Form(s)

High level containerThere can be multiple forms

Control(s)Controls are added to

forms

23

Page 24: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 24/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Create and show a Form

Step 1: Create a Form:

Step 2: Add Form to Frame:

Step 3: Show the Form:

Form1 *pForm = new Form1();pForm-> Construct (FORM_STYLE_TITLE|

FORM_STYLE_SOFTKEY_0|FORM_STYLE_INDICATOR);

Frame *pFrame = GetAppFrame ()-> GetFrame ();pFrame-> AddControl (* pForm );

pFrame-> SetCurrentForm (* pForm );pFrame-> RequestRedraw (true); // true for Draw() & Show()

Other FORM_STYLEs:NORMAL/ TITLE/ INDICATOR/ SOFTKEY_0/ SOFTKEY_1/ OPTIONKEY/ TEXT_TAB/ ICON_TAB

24

Page 25: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 25/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Event handling

Events: – Controls: focus, drag and drop, touch, and key – Add EventListener to Control to handle events

TouchPressed

TouchMoved

TouchReleased

ITouchEventListener{

OnTouchPressed() {…}OnTouchMoved() {…}

OnTouchReleased() {…}OnTouchDoublePressed() {…}// …

}

25

Page 26: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 26/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Handling of Touch events

Step 1: Inherit from listener interface

Step 2: Implement event handler method

Step 3: Add event listener to control

class TouchListener : public ITouchEventListener{…}

void TouchListener ::OnTouchPressed( …, const Point & currentPosition, …)

{…}

AddTouchEventListener( ITouchEventListener &);

26

Page 27: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 27/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

UI Builder tool basics

27

ResourceExplorer

Design Area

Properties

Controls

Page 28: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 28/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Application life cycle

28

Page 29: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 29/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Overall application life cycle

OnAppInitializing()

Terminated

SuccessRunning

Failure OnForeground()

OnAppTerminating()

OnBackground()

Launch

29

Launch

Page 30: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 30/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

OnAppInitializing()

Invoked as soon as application is launchedInitialize application resources

30

bool MyPlaces::OnAppInitializing( AppRegistry & appRegistry)

{// Initialize...…return true ;

}

OnForeground()OnAppInitializing()

Page 31: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 31/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

OnBackground()

OnBackground() is called whena base application is launched(e.g.: incoming calls or SMS messages)

Recommendation: – Release unnecessary

resources

– Stop heavy operations• Multimedia/graphics/etc.

31

OnForeground() OnBackground()

OnAppInitializing()

void MyPlaces::OnBackground( void ) {}

Page 32: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 32/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

OnForeground()

OnForeground() is called whenthe base application is terminated

Recommendation:

– Resume normal applicationprocesses and resourceconsumption

32

void MyPlaces::OnForeground( void ) {}

OnForeground() OnBackground()

OnAppInitializing()

Page 33: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 33/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

OnAppTerminating()

OnAppTerminating() is called when: – Another bada app is launched – End key is pressed – Low battery or memory

Recommendation: – Save state to the registry – Destroy unnecessary, allocated

resources

33

bool MyPlaces::OnAppTerminating( AppRegistry & appRegistry, bool forcedTermination)

{// save app state into appRegistry …

}

OnAppTerminating()

OnBackground()OnForeground()

Page 34: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 34/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Summary

34

Page 35: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 35/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

What we have learned

bada API overview – Namepaces – Privilegesbada coding idioms

– Exception handling through result type – Two phase construction for runtime efficiency – Memory management and ‘ N’ postfix – Virtual path (/Home, /Res, etc.)UI basics – UI screen structure, controls, UI BuilderApp life cycle – 4 states

35

Page 36: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 36/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Find out more

Tutorials: – bada Tutorial.Fundamentals.pdf – bada Tutorial.Application.pdf

– bada Tutorial.UI and Graphics.pdfSamples

– BasicApp

– UiControls

36

Page 37: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 37/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

3D augmented reality first person shooter

Makes use of bada to its full potential

- 360 ° OpenGL 3D graphics- Camera- Accelerometer, compass, tilt sensors- Audio feedback- Powerful hardware- To be published in SamsungApps store

Follow us on Twitter at #ROTU

by Samsung Mobile Innovator

Page 38: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 38/39

Copyright © 2010 Samsung Electronics Co., Ltd. All rights reserved.

Page 39: 004 Bada Basics Fundamentals&UI

8/8/2019 004 Bada Basics Fundamentals&UI

http://slidepdf.com/reader/full/004-bada-basics-fundamentalsui 39/39