SlideShare ist ein Scribd-Unternehmen logo
1 von 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!

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdfChristopherTHyatt
 

Kürzlich hochgeladen (20)

ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 

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

Hinweis der Redaktion

  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