SlideShare uma empresa Scribd logo
1 de 32
Building LBS App on bada
         @chengluo




                     bada Orange Partner day - 05 May
Agenda

• Services   available from bada

• Introduction   of BuddyFix project

• Quick   start with BuddyFix

• Get   your hands dirty...
Services on bada

•   Currently 4 types of server side services available on bada
       -   Social Services
       -   Location Services
       -   Content Services
       -   Commerce Services
•   More services will be available on bada 2.0 SDK incl. Ad Services, Push
    notification, Lifelogging...

•   Samsung provides the server infrastructure and free to use

•   Seamless integration with 3rd party solutions, e.g. Facebook, Twitter, MySpace,
    deCarta map etc.
The bada Server

                  •   Handling bada services in unified APIs

                  •   Hiding the details of specific
                      integrations

                  •   Authenticate bada apps with 3rd
                      party servers

                  •   Forwarding calls to 3rd party servers

                  •   No need to worry about load
                      balancing, backup solution or
                      downtime
Social Services

• BuddyService: manages     buddy relationship

• ProfileService: searches   and updates different types of user
 profile

• SNSGateway: provides      easy integration for Twitter, Facebook
 and MySpace

• MessagingService: provides    free messaging services via the
 bada server
Location Services

• MapService: displays   and operate the map

• GeocodingService: translates   coordinates to readable address
 and vice versa

• RouteService: finds   the route between two coordinates

• DirectoryService: provides POI information for given
 geographic area - e.g. check-in
Content Services

•   ContentInfo/RemoteContentInfo: the metadata of physical content on the
    device or bada server

•   ContentManager/RemoteContentManager: create, update or delete the
    content on the device or bada server

•   ContentSearch/RemoteContentSearch: find the right content on the device
    or bada server

•   RemoteContentSharing: sharing content with friends and set the access
    level of content

•   There are more classes from this namespace...
Commerce Services

• ItemInfo: informationof item incl. name, price, download URI,
 description, image, ID and other information

• ItemService: create   and get items from the Samsung store

• PurchaseInfo: providesthe information of purchased item, such
 as name, price, currency, purchased date and image URI etc.

• PurchaseService: purchase   items from the store and get the
 purchase information
BuddyFix
BuddyFix

• Location   based social networking application
BuddyFix

• Location     based social networking application

• Internally   developed by Samsung UK team
BuddyFix

• Location     based social networking application

• Internally   developed by Samsung UK team

• Utilised
         social, location, profile, privacy, messaging, and content
 services on bada
olut ion
      Res
H VGA
BuddyFix 2.0

• Location     based social networking application

• Internally   developed by Samsung UK team

• Utilised
         social, location, profile, privacy, messaging, and content
 services on bada
BuddyFix 2.0

• Location     based social networking application

• Internally   developed by Samsung UK team

• Utilised
         social, location, profile, privacy, messaging, and content
 services on bada
• Integrated    simple Facebook and SMS/MMS location sharing
BuddyFix 2.0

• Location     based social networking application

• Internally   developed by Samsung UK team

• Utilised
         social, location, profile, privacy, messaging, and content
 services on bada
• Integrated    simple Facebook and SMS/MMS location sharing

• Source     code available on Sourceforge under Apache License 2
Facebook Friends
Facebook Friends   Send SMS/MMS
Goal of Designing BuddyFix

•   Easy to use - number of clicks/operation

•   Fast to run - using less memory, WYSIWYG

•   Long battery life - update data only when it needed

•   Easy to implement - central event dispatcher (e.g. FormManager
    class + singleton)

•   Better UX - offline data/persistent database

•   More to be found out by you ...
Easier to use




   Last message   Entire conversation
Faster to run
void
FormManager::ChangeForm(Form* pNewForm)
{

    __pFrame->AddControl(*pNewForm);

    __pFrame->SetCurrentForm(*pNewForm);

    pNewForm->Draw();

    pNewForm->Show();

    if (__pPreviousForm != null)

    
        __pFrame->RemoveControl(*__pPreviousForm);

    __pPreviousForm = pNewForm;
}

void      FormManager::OnUserEventReceivedN(RequestId formId, Osp::Base::Collection::IList* pArgs)
{

         result r = E_SUCCESS;

         switch(formId)

         {

         case QUIT_APP:

         
        if(__pApp != null)

         
        {

         
        
      r = __pApp->Terminate();

         
        
      if(IsFailed(r))

         
        
      
       AppLogDebug("Terminating application failed! %s", GetErrorMessage(r));

         
        }

         
        else

         
        {

         
        
      AppLogDebug("Cannot find application pointer!");

         
        }

         
        break;


         case MAP_VIEW_FORM:

         
       // TODO JAHS - consider whether MapViewForm should be created once or many times (performance issue)

         
       __pMapViewForm = new MapViewForm();

         
       __pMapViewForm->Construct(__pLocationManager);

         
       ChangeForm(__pMapViewForm);

         
       break;

         case SETTING_FORM:

         
       __pSettingForm = new SettingForm();

         
       __pSettingForm->Construct(__pLocationManager, __pMessagingManager, __pProfileManager);

         
       ChangeForm(__pSettingForm);

         
       break;
    ...
}
Longer battery life
//
// API's for power optimisation purpose
// Currently, We optimized the location request and DB update timer.
// If you know few other timers which is not needed when application
// goes to background or screen off, then those can be added here.
void
FormManager::ActivateTimers()
{

     AppLogDebug("Activate all Timers for power optimisation");


    __pLocationManager->ActivateLocRequestTimer();


    AppData::GetInstance()->ActivateDBUpdateTimer();
}
void
FormManager::DeactivateTimers()
{

    AppLogDebug("Deactivate all Timers for power optimisation");


    __pLocationManager->DeactivateLocRequestTimer();


    AppData::GetInstance()->DeactivateDBUpdateTimer();
}


void
BuddyFix::OnForeground(void)
{

    AppLogDebug("BuddyFix::OnForeground");

    __pFormMrg->ActivateTimers();
}

void
BuddyFix::OnBackground(void)
{

    AppLogDebug("BuddyFix::OnBackground");

    __pFormMrg->DeactivateTimers();
}
Easy to implement
AppData*
AppData::GetInstance(void)
{

   if(!__instanceFlag)

   {

   
         __pInstance = new AppData();

   
         __pInstance->Construct();

   
         __instanceFlag = true;

   }

   return __pInstance;
}


void FormManager::OnUserEventReceivedN(RequestId formId, Osp::Base::Collection::IList* pArgs)
{

       result r = E_SUCCESS;

       switch(formId)

       {
    ...

       case SEND_MESSAGE_FORM:

       
        __pSendMessageForm = new SendMessageForm();

       
        __pSendMessageForm->Construct(__pMessagingManager);

       
        ChangeForm(__pSendMessageForm);

       
        break;

       case ADD_RECIPIENT_FORM:

       
        __pAddRecipientForm = new AddRecipientForm();

       
        __pAddRecipientForm->Construct(L"IDF_AddRecipientForm");

       
        ChangeForm(__pAddRecipientForm);

       
        break;

       case RECEIVED_MESSAGE_FORM:

       
        __pReceivedMessageForm = new ReceivedMessageForm();

       
        __pReceivedMessageForm->Construct(__pMessagingManager);

       
        ChangeForm(__pReceivedMessageForm);

       
        break;

       case USER_PROFILE_FORM:

       
        __pUserProfileForm = new UserProfileForm();

       
        __pUserProfileForm->Construct(__pProfileManager);

       
        ChangeForm(__pUserProfileForm);

       
        break;
      }
  ...
}
Better UX
//setting exposure level after signIn, otherwise API is failing
AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry();
int value = -1;
result r = pAppRegistry->Get(Osp::Base::Integer::ToString(SettingForm::PROFILE_EXPOSURE_LEVEL), value);
if (!IsFailed(r))

      __pProfileManager->SetUserInfoPrivacyLevel((ProfileExposureLevel)value);//set Basic Profile exposure level


result
AppData::LoadApplicationDataFromDatabase(void)
{

    result r = __pDatabaseManager->OpenDatabase();

    if (IsFailed(r))

    {

    
         AppLogDebug("Failed to open the database, result %s", GetErrorMessage(r));

    
         __pDatabaseManager->CloseDatabase();

    
         return r;

    }

    r = __pDatabaseManager->ReadAll();

    if (IsFailed(r))

    
         AppLogDebug("Failed to read data from the database, result %s", GetErrorMessage(r));

    return r;
}


buddyTable
 +------------+---------------+----------------+------------+-//
 |   userId   |   buddyName   |    longitude   | latitude |
 +------------+---------------+----------------+------------+-//
 | dz7yp3ifya |   BuddyName   | -1.79675333333 | 51.498485 |
 +------------+---------------+----------------+------------+-//

messageTable
 +------------+---------------------+------------------+------------+
 | senderId |        receivedAt     |   messageText    | convId     |
 +------------+---------------------+------------------+------------+
 | b9ayhvtso3 | 11/28/2010 11:57:33 |   Hello world    | -853525128 |
 +------------+---------------------+------------------+------------+
Let’s add a new feature to BuddyFix
Let’s add a new feature to BuddyFix

    Find POI around you
Thank you!

Mais conteúdo relacionado

Destaque

LinuxCon Europe 2012 - Tizen Mini Summit
LinuxCon Europe 2012 - Tizen Mini Summit LinuxCon Europe 2012 - Tizen Mini Summit
LinuxCon Europe 2012 - Tizen Mini Summit Cheng Luo
 
Social Media Strategies for Non-Profits
Social Media Strategies for Non-ProfitsSocial Media Strategies for Non-Profits
Social Media Strategies for Non-ProfitsDayn Wilberding
 
From Castellar
From CastellarFrom Castellar
From CastellarECT
 
Hybrid Financing For Tax Credit Homes
Hybrid Financing For Tax Credit HomesHybrid Financing For Tax Credit Homes
Hybrid Financing For Tax Credit HomesKevin Stahle
 
digital PR communication with opinion mining
digital PR communication with opinion miningdigital PR communication with opinion mining
digital PR communication with opinion miningMedicom
 
Google's Top Ten Tricks
Google's Top Ten TricksGoogle's Top Ten Tricks
Google's Top Ten Tricksbchatchett
 
JOKOWI'S MENTAL REVOLUTION
JOKOWI'S MENTAL REVOLUTIONJOKOWI'S MENTAL REVOLUTION
JOKOWI'S MENTAL REVOLUTIONAgnes Stephanie
 
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing Cheng Luo
 
RestaurantFinder
RestaurantFinderRestaurantFinder
RestaurantFindermiiiillin
 
Digital PR Communication with Opinion Mining
Digital PR Communication with Opinion MiningDigital PR Communication with Opinion Mining
Digital PR Communication with Opinion MiningMedicom
 
Convert Your Web App to Tizen
Convert Your Web App to TizenConvert Your Web App to Tizen
Convert Your Web App to TizenCheng Luo
 

Destaque (16)

LinuxCon Europe 2012 - Tizen Mini Summit
LinuxCon Europe 2012 - Tizen Mini Summit LinuxCon Europe 2012 - Tizen Mini Summit
LinuxCon Europe 2012 - Tizen Mini Summit
 
Social Media Strategies for Non-Profits
Social Media Strategies for Non-ProfitsSocial Media Strategies for Non-Profits
Social Media Strategies for Non-Profits
 
MonkeyLove App
MonkeyLove AppMonkeyLove App
MonkeyLove App
 
From Castellar
From CastellarFrom Castellar
From Castellar
 
Hybrid Financing For Tax Credit Homes
Hybrid Financing For Tax Credit HomesHybrid Financing For Tax Credit Homes
Hybrid Financing For Tax Credit Homes
 
digital PR communication with opinion mining
digital PR communication with opinion miningdigital PR communication with opinion mining
digital PR communication with opinion mining
 
Faith Healing
Faith HealingFaith Healing
Faith Healing
 
Google's Top Ten Tricks
Google's Top Ten TricksGoogle's Top Ten Tricks
Google's Top Ten Tricks
 
JOKOWI'S MENTAL REVOLUTION
JOKOWI'S MENTAL REVOLUTIONJOKOWI'S MENTAL REVOLUTION
JOKOWI'S MENTAL REVOLUTION
 
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing
Amazon AB Testing - Modifying & Measuring App Behaviors Without Republishing
 
RestaurantFinder
RestaurantFinderRestaurantFinder
RestaurantFinder
 
Restaurant management
Restaurant managementRestaurant management
Restaurant management
 
My restaurant finder hci
My restaurant finder hciMy restaurant finder hci
My restaurant finder hci
 
Digital PR Communication with Opinion Mining
Digital PR Communication with Opinion MiningDigital PR Communication with Opinion Mining
Digital PR Communication with Opinion Mining
 
Convert Your Web App to Tizen
Convert Your Web App to TizenConvert Your Web App to Tizen
Convert Your Web App to Tizen
 
Bentley company case
Bentley company caseBentley company case
Bentley company case
 

Semelhante a Build Location Based App on bada

Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverSpike Brehm
 
Getting Started with DrupalGap
Getting Started with DrupalGapGetting Started with DrupalGap
Getting Started with DrupalGapAlex S
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013Kiril Iliev
 
Cloudbase.io MoSync Reload Course
Cloudbase.io MoSync Reload CourseCloudbase.io MoSync Reload Course
Cloudbase.io MoSync Reload Coursecloudbase.io
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Luc Bors
 
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...Codemotion
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalCampDN
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...Alex S
 
What's New In Laravel 5
What's New In Laravel 5What's New In Laravel 5
What's New In Laravel 5Darren Craig
 
Ember.js Self Defining Apps
Ember.js Self Defining AppsEmber.js Self Defining Apps
Ember.js Self Defining AppsOli Griffiths
 
Windows phone 7 series
Windows phone 7 seriesWindows phone 7 series
Windows phone 7 seriesopenbala
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps OfflinePedro Morais
 
BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!Craig Schumann
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Lou Sacco
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteorSapna Upreti
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Jim McKeeth
 
Serverless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData SeattleServerless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData SeattleJim Dowling
 
Building Web Apps with Express
Building Web Apps with ExpressBuilding Web Apps with Express
Building Web Apps with ExpressAaron Stannard
 

Semelhante a Build Location Based App on bada (20)

Introducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and serverIntroducing Rendr: Run your Backbone.js apps on the client and server
Introducing Rendr: Run your Backbone.js apps on the client and server
 
Flutter-Dart project || Hotel Management System
Flutter-Dart project || Hotel Management SystemFlutter-Dart project || Hotel Management System
Flutter-Dart project || Hotel Management System
 
Getting Started with DrupalGap
Getting Started with DrupalGapGetting Started with DrupalGap
Getting Started with DrupalGap
 
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
jsSaturday - PhoneGap and jQuery Mobile for SharePoint 2013
 
Cloudbase.io MoSync Reload Course
Cloudbase.io MoSync Reload CourseCloudbase.io MoSync Reload Course
Cloudbase.io MoSync Reload Course
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)Reaching out from ADF Mobile (ODTUG KScope 2014)
Reaching out from ADF Mobile (ODTUG KScope 2014)
 
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...
Sebastian Schmidt, Rachel Myers - How To Go Serverless And Not Violate The GD...
 
Node.js and Parse
Node.js and ParseNode.js and Parse
Node.js and Parse
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...
 
DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...DrupalGap. How to create native application for mobile devices based on Drupa...
DrupalGap. How to create native application for mobile devices based on Drupa...
 
What's New In Laravel 5
What's New In Laravel 5What's New In Laravel 5
What's New In Laravel 5
 
Ember.js Self Defining Apps
Ember.js Self Defining AppsEmber.js Self Defining Apps
Ember.js Self Defining Apps
 
Windows phone 7 series
Windows phone 7 seriesWindows phone 7 series
Windows phone 7 series
 
Taking Web Apps Offline
Taking Web Apps OfflineTaking Web Apps Offline
Taking Web Apps Offline
 
BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!
 
Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014Meteor Meet-up San Diego December 2014
Meteor Meet-up San Diego December 2014
 
Reactive application using meteor
Reactive application using meteorReactive application using meteor
Reactive application using meteor
 
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
Accessing REST & Backend as a Service (BaaS) - Developer Direct - Mobile Summ...
 
Serverless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData SeattleServerless ML Workshop with Hopsworks at PyData Seattle
Serverless ML Workshop with Hopsworks at PyData Seattle
 
Building Web Apps with Express
Building Web Apps with ExpressBuilding Web Apps with Express
Building Web Apps with Express
 

Último

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...apidays
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 

Último (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

Build Location Based App on bada

  • 1. Building LBS App on bada @chengluo bada Orange Partner day - 05 May
  • 2. Agenda • Services available from bada • Introduction of BuddyFix project • Quick start with BuddyFix • Get your hands dirty...
  • 3. Services on bada • Currently 4 types of server side services available on bada - Social Services - Location Services - Content Services - Commerce Services • More services will be available on bada 2.0 SDK incl. Ad Services, Push notification, Lifelogging... • Samsung provides the server infrastructure and free to use • Seamless integration with 3rd party solutions, e.g. Facebook, Twitter, MySpace, deCarta map etc.
  • 4. The bada Server • Handling bada services in unified APIs • Hiding the details of specific integrations • Authenticate bada apps with 3rd party servers • Forwarding calls to 3rd party servers • No need to worry about load balancing, backup solution or downtime
  • 5. Social Services • BuddyService: manages buddy relationship • ProfileService: searches and updates different types of user profile • SNSGateway: provides easy integration for Twitter, Facebook and MySpace • MessagingService: provides free messaging services via the bada server
  • 6. Location Services • MapService: displays and operate the map • GeocodingService: translates coordinates to readable address and vice versa • RouteService: finds the route between two coordinates • DirectoryService: provides POI information for given geographic area - e.g. check-in
  • 7. Content Services • ContentInfo/RemoteContentInfo: the metadata of physical content on the device or bada server • ContentManager/RemoteContentManager: create, update or delete the content on the device or bada server • ContentSearch/RemoteContentSearch: find the right content on the device or bada server • RemoteContentSharing: sharing content with friends and set the access level of content • There are more classes from this namespace...
  • 8. Commerce Services • ItemInfo: informationof item incl. name, price, download URI, description, image, ID and other information • ItemService: create and get items from the Samsung store • PurchaseInfo: providesthe information of purchased item, such as name, price, currency, purchased date and image URI etc. • PurchaseService: purchase items from the store and get the purchase information
  • 10. BuddyFix • Location based social networking application
  • 11. BuddyFix • Location based social networking application • Internally developed by Samsung UK team
  • 12. BuddyFix • Location based social networking application • Internally developed by Samsung UK team • Utilised social, location, profile, privacy, messaging, and content services on bada
  • 13.
  • 14. olut ion Res H VGA
  • 15. BuddyFix 2.0 • Location based social networking application • Internally developed by Samsung UK team • Utilised social, location, profile, privacy, messaging, and content services on bada
  • 16. BuddyFix 2.0 • Location based social networking application • Internally developed by Samsung UK team • Utilised social, location, profile, privacy, messaging, and content services on bada • Integrated simple Facebook and SMS/MMS location sharing
  • 17. BuddyFix 2.0 • Location based social networking application • Internally developed by Samsung UK team • Utilised social, location, profile, privacy, messaging, and content services on bada • Integrated simple Facebook and SMS/MMS location sharing • Source code available on Sourceforge under Apache License 2
  • 18.
  • 20. Facebook Friends Send SMS/MMS
  • 21.
  • 22.
  • 23.
  • 24. Goal of Designing BuddyFix • Easy to use - number of clicks/operation • Fast to run - using less memory, WYSIWYG • Long battery life - update data only when it needed • Easy to implement - central event dispatcher (e.g. FormManager class + singleton) • Better UX - offline data/persistent database • More to be found out by you ...
  • 25. Easier to use Last message Entire conversation
  • 26. Faster to run void FormManager::ChangeForm(Form* pNewForm) { __pFrame->AddControl(*pNewForm); __pFrame->SetCurrentForm(*pNewForm); pNewForm->Draw(); pNewForm->Show(); if (__pPreviousForm != null) __pFrame->RemoveControl(*__pPreviousForm); __pPreviousForm = pNewForm; } void FormManager::OnUserEventReceivedN(RequestId formId, Osp::Base::Collection::IList* pArgs) { result r = E_SUCCESS; switch(formId) { case QUIT_APP: if(__pApp != null) { r = __pApp->Terminate(); if(IsFailed(r)) AppLogDebug("Terminating application failed! %s", GetErrorMessage(r)); } else { AppLogDebug("Cannot find application pointer!"); } break; case MAP_VIEW_FORM: // TODO JAHS - consider whether MapViewForm should be created once or many times (performance issue) __pMapViewForm = new MapViewForm(); __pMapViewForm->Construct(__pLocationManager); ChangeForm(__pMapViewForm); break; case SETTING_FORM: __pSettingForm = new SettingForm(); __pSettingForm->Construct(__pLocationManager, __pMessagingManager, __pProfileManager); ChangeForm(__pSettingForm); break; ... }
  • 27. Longer battery life // // API's for power optimisation purpose // Currently, We optimized the location request and DB update timer. // If you know few other timers which is not needed when application // goes to background or screen off, then those can be added here. void FormManager::ActivateTimers() { AppLogDebug("Activate all Timers for power optimisation"); __pLocationManager->ActivateLocRequestTimer(); AppData::GetInstance()->ActivateDBUpdateTimer(); } void FormManager::DeactivateTimers() { AppLogDebug("Deactivate all Timers for power optimisation"); __pLocationManager->DeactivateLocRequestTimer(); AppData::GetInstance()->DeactivateDBUpdateTimer(); } void BuddyFix::OnForeground(void) { AppLogDebug("BuddyFix::OnForeground"); __pFormMrg->ActivateTimers(); } void BuddyFix::OnBackground(void) { AppLogDebug("BuddyFix::OnBackground"); __pFormMrg->DeactivateTimers(); }
  • 28. Easy to implement AppData* AppData::GetInstance(void) { if(!__instanceFlag) { __pInstance = new AppData(); __pInstance->Construct(); __instanceFlag = true; } return __pInstance; } void FormManager::OnUserEventReceivedN(RequestId formId, Osp::Base::Collection::IList* pArgs) { result r = E_SUCCESS; switch(formId) { ... case SEND_MESSAGE_FORM: __pSendMessageForm = new SendMessageForm(); __pSendMessageForm->Construct(__pMessagingManager); ChangeForm(__pSendMessageForm); break; case ADD_RECIPIENT_FORM: __pAddRecipientForm = new AddRecipientForm(); __pAddRecipientForm->Construct(L"IDF_AddRecipientForm"); ChangeForm(__pAddRecipientForm); break; case RECEIVED_MESSAGE_FORM: __pReceivedMessageForm = new ReceivedMessageForm(); __pReceivedMessageForm->Construct(__pMessagingManager); ChangeForm(__pReceivedMessageForm); break; case USER_PROFILE_FORM: __pUserProfileForm = new UserProfileForm(); __pUserProfileForm->Construct(__pProfileManager); ChangeForm(__pUserProfileForm); break; } ... }
  • 29. Better UX //setting exposure level after signIn, otherwise API is failing AppRegistry* pAppRegistry = Application::GetInstance()->GetAppRegistry(); int value = -1; result r = pAppRegistry->Get(Osp::Base::Integer::ToString(SettingForm::PROFILE_EXPOSURE_LEVEL), value); if (!IsFailed(r)) __pProfileManager->SetUserInfoPrivacyLevel((ProfileExposureLevel)value);//set Basic Profile exposure level result AppData::LoadApplicationDataFromDatabase(void) { result r = __pDatabaseManager->OpenDatabase(); if (IsFailed(r)) { AppLogDebug("Failed to open the database, result %s", GetErrorMessage(r)); __pDatabaseManager->CloseDatabase(); return r; } r = __pDatabaseManager->ReadAll(); if (IsFailed(r)) AppLogDebug("Failed to read data from the database, result %s", GetErrorMessage(r)); return r; } buddyTable +------------+---------------+----------------+------------+-// | userId | buddyName | longitude | latitude | +------------+---------------+----------------+------------+-// | dz7yp3ifya | BuddyName | -1.79675333333 | 51.498485 | +------------+---------------+----------------+------------+-// messageTable +------------+---------------------+------------------+------------+ | senderId | receivedAt | messageText | convId | +------------+---------------------+------------------+------------+ | b9ayhvtso3 | 11/28/2010 11:57:33 | Hello world | -853525128 | +------------+---------------------+------------------+------------+
  • 30. Let’s add a new feature to BuddyFix
  • 31. Let’s add a new feature to BuddyFix Find POI around you

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n