SlideShare uma empresa Scribd logo
1 de 29
• Toolsets / Frameworks
                            • Hybrid Applications
              HTML5         • Integrated
Portability


                                 • MS .Net
              C#/CLR             • Xamarin Mono
                                       • Barebones
                                         access to
               C++                       low level
                                         API’s

              Flexibility
HTML5/JS/CSS3               C# / CLR
 Web Standard being         Desktop paradigm being
  leveraged for mobile        leveraged for mobile
 Performance hit from       Native execution model
  JavaScript execution        for each platform
 Development tools are      1 Stack - Cloud to Device
  lacking, esp. Debugging
Data Binding
Data Binding
xamarin.com/mobileapi
Xamarin.Mobile




                               Compass +
Contacts         Geolocation                   Camera   Notifications
                               Accelerometer
ContentResolver content= getContentResolver();

Cursor ncursor = null;
try {
    ncursor = content.query (ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Data.MIMETYPE, ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.Contacts.DISPLAY_NAME },
        ContactsContract.Data.MIMETYPE + "=? AND " + ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME + "=?",
        new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, "Smith" }, null);

   while (ncursor.moveToNext()) {
       print (ncursor.getString(ncursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + lineSep);

       String lookupKey = ncursor.getString (ncursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY));
       Cursor dcursor = null;
       try {
           dcursor = content.query (ContactsContract.Data.CONTENT_URI,
                   new String[] { ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.Data.DATA1 },
                   ContactsContract.Contacts.LOOKUP_KEY + "=?", new String[] { lookupKey }, null);
           while (dcursor.moveToNext()) {
               String type = dcursor.getString (ncursor.getColumnIndex(ContactsContract.Data.MIMETYPE));

               if (type.equals (ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE))
                   print ("Phone: " + dcursor.getString(dcursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) +
lineSep);
               else if (type.equals (ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE))
                   print ("Email: " + dcursor.getString(dcursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA1)) +
lineSep);
           }
       } finally {
           if (dcursor != null)
               dcursor.close();
       }
    }
} finally {
    if (ncursor != null)
        ncursor.close();
}
ABAddressBookRef ab = ABAddressBookCreate();
CFStringRef name = CFSTR ("Smith");
CFArrayRef smiths = ABAddressBookCopyPeopleWithName(ab, name);
CFRelease (name);
                                        ABAddressBookRef ab = ABAddressBookCreate();
int count = CFArrayGetCount(smiths);
                                        CFStringRef name = CFSTR ("Smith");
for (int i = 0; i < count; ++i) {       CFArrayRef smiths = ABAddressBookCopyPeopleWithName(ab, name);
    ABRecordRef person = (ABRecordRef)CFArrayGetValueAtIndex(smiths, (CFIndex)i);
                                        CFRelease (name);
    if (ABRecordGetRecordType(person) != kABPersonType)
        continue;                       int count = CFArrayGetCount(smiths);
                                           for (int i = 0; i < count; ++i) {
    NSString *name = (NSString*)ABRecordCopyCompositeName(person);
                                          ABRecordRef person = (ABRecordRef)CFArrayGetValueAtIndex(smiths, (CFIndex)i);
    NSLog ("%@n", name);                 if (ABRecordGetRecordType(person) != kABPersonType)
    [name release];                           continue;

    ABMultiValueRef phoneNumberProp = ABRecordCopyValue(person, kABPersonPhoneProperty);
                                          NSString *name = (NSString*)ABRecordCopyCompositeName(person);
                                          NSLog ("%@n", name);
    NSArray* numbers = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProp);
    CFRelease(phoneNumberProp);           [name release];

    for (NSString *pvalue in numbers)         ABMultiValueRef phoneNumberProp = ABRecordCopyValue(person, kABPersonPhoneProperty);
                                              NSArray* numbers = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProp);
    NSLog ("Phone: %@n", pvalue);
                                              CFRelease(phoneNumberProp);
    [numbers release];                        for (NSString *pvalue in numbers)
                                              NSLog ("Phone: %@n", pvalue);
    ABMultiValueRef emailProp = ABRecordCopyValue(person, kABPersonEmailProperty);
    NSArray* emails = (NSArray*)ABMultiValueCopyArrayOfAllValues(emailProp);
                                          [numbers release];
    CFRelease(emailProp);
                                              ABMultiValueRef emailProp = ABRecordCopyValue(person, kABPersonEmailProperty);
    for (NSString *evalue in emails)          NSArray* emails = (NSArray*)ABMultiValueCopyArrayOfAllValues(emailProp);
        NSLog ("Email: %@n");                CFRelease(emailProp);
    [emails release];
}                                             for (NSString *evalue in emails)
CFRelease (ab);                                  NSLog ("Email: %@n");
CFRelease (smiths);                           [emails release];
                                           }
                                           CFRelease (ab);
                                           CFRelease (smiths);
var book = new AddressBook () {
   PreferContactAggregation = true
};

foreach (Contact c in book.Where (c => c.LastName == "Smith")) {
   Console.WriteLine (c.DisplayName);

    foreach (Phone p in c.Phones)
       Console.WriteLine ("Phone: " + p.Number);

    foreach (Email e in c.Emails)
       Console.WriteLine ("Email: " + e.Address);
}
Contacts List
http://www.unrealengine.com/udk/
IN THE SPOTLIGHT
                                               THE WWE APP IS READY TO RUMBLE!
                                               ●   Kevin Mills and Xudong He from UI Centric brought this
                                                   app to life.
                                               ●   App features: easy-to-explore bios, stunning designs, and
                                                   unique interactions so that fans feel like they're a part of the
                                                   main event.
                                               ●   Mills and He’s top tip: "Get familiar with the PlayerFramework.
                                                   Think Lean. Load time and content caching are important."


READY TO BUILD THE NEXT BIG APP? JOIN GENERATION APP FOR:
●     Tips and tricks on Windows 8 and Windows Phone app development.
●     1:1 on-the-phone access to a Windows 8 and Windows Phone expert*.
●     An exclusive Windows UI style design consultation*.
●     An opportunity to test your app with qualified experts an App Lab.



    Sign Up at www.generationapp.com
    *See Ts&Cs on www.generationapp.com
http://aka.ms/bostonmeetup
http://aka.ms/bostonmeetup

Mais conteúdo relacionado

Semelhante a Building your apps for cross platform compatability

Constance et qualité du code dans une équipe - Rémi Prévost
Constance et qualité du code dans une équipe - Rémi PrévostConstance et qualité du code dans une équipe - Rémi Prévost
Constance et qualité du code dans une équipe - Rémi Prévost
Web à Québec
 

Semelhante a Building your apps for cross platform compatability (20)

Type script by Howard
Type script by HowardType script by Howard
Type script by Howard
 
TypeScript by Howard
TypeScript by HowardTypeScript by Howard
TypeScript by Howard
 
Howard type script
Howard   type scriptHoward   type script
Howard type script
 
Speed up the mobile development process
Speed up the mobile development processSpeed up the mobile development process
Speed up the mobile development process
 
.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#.NET Foundation, Future of .NET and C#
.NET Foundation, Future of .NET and C#
 
Function basics
Function basicsFunction basics
Function basics
 
Constance et qualité du code dans une équipe - Rémi Prévost
Constance et qualité du code dans une équipe - Rémi PrévostConstance et qualité du code dans une équipe - Rémi Prévost
Constance et qualité du code dans une équipe - Rémi Prévost
 
iPhone Development Intro
iPhone Development IntroiPhone Development Intro
iPhone Development Intro
 
Go Programming Patterns
Go Programming PatternsGo Programming Patterns
Go Programming Patterns
 
Novidades do c# 7 e 8
Novidades do c# 7 e 8Novidades do c# 7 e 8
Novidades do c# 7 e 8
 
Typescript - why it's awesome
Typescript - why it's awesomeTypescript - why it's awesome
Typescript - why it's awesome
 
Day 1
Day 1Day 1
Day 1
 
Effective Object Oriented Design in Cpp
Effective Object Oriented Design in CppEffective Object Oriented Design in Cpp
Effective Object Oriented Design in Cpp
 
Deep Dumpster Diving
Deep Dumpster DivingDeep Dumpster Diving
Deep Dumpster Diving
 
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
 
Postman On Steroids
Postman On SteroidsPostman On Steroids
Postman On Steroids
 
Windows Phone Launchers and Choosers
Windows Phone Launchers and ChoosersWindows Phone Launchers and Choosers
Windows Phone Launchers and Choosers
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
Modernize your Objective-C
Modernize your Objective-CModernize your Objective-C
Modernize your Objective-C
 
Dynamic Language Performance
Dynamic Language PerformanceDynamic Language Performance
Dynamic Language Performance
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Último (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
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?
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Building your apps for cross platform compatability

  • 1.
  • 2.
  • 3.
  • 4. • Toolsets / Frameworks • Hybrid Applications HTML5 • Integrated Portability • MS .Net C#/CLR • Xamarin Mono • Barebones access to C++ low level API’s Flexibility
  • 5. HTML5/JS/CSS3 C# / CLR  Web Standard being  Desktop paradigm being leveraged for mobile leveraged for mobile  Performance hit from  Native execution model JavaScript execution for each platform  Development tools are  1 Stack - Cloud to Device lacking, esp. Debugging
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 14. Xamarin.Mobile Compass + Contacts Geolocation Camera Notifications Accelerometer
  • 15. ContentResolver content= getContentResolver(); Cursor ncursor = null; try { ncursor = content.query (ContactsContract.Data.CONTENT_URI, new String[] { ContactsContract.Data.MIMETYPE, ContactsContract.Contacts.LOOKUP_KEY, ContactsContract.Contacts.DISPLAY_NAME }, ContactsContract.Data.MIMETYPE + "=? AND " + ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME + "=?", new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE, "Smith" }, null); while (ncursor.moveToNext()) { print (ncursor.getString(ncursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) + lineSep); String lookupKey = ncursor.getString (ncursor.getColumnIndex(ContactsContract.Contacts.LOOKUP_KEY)); Cursor dcursor = null; try { dcursor = content.query (ContactsContract.Data.CONTENT_URI, new String[] { ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.Data.DATA1 }, ContactsContract.Contacts.LOOKUP_KEY + "=?", new String[] { lookupKey }, null); while (dcursor.moveToNext()) { String type = dcursor.getString (ncursor.getColumnIndex(ContactsContract.Data.MIMETYPE)); if (type.equals (ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) print ("Phone: " + dcursor.getString(dcursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)) + lineSep); else if (type.equals (ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE)) print ("Email: " + dcursor.getString(dcursor.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA1)) + lineSep); } } finally { if (dcursor != null) dcursor.close(); } } } finally { if (ncursor != null) ncursor.close(); }
  • 16. ABAddressBookRef ab = ABAddressBookCreate(); CFStringRef name = CFSTR ("Smith"); CFArrayRef smiths = ABAddressBookCopyPeopleWithName(ab, name); CFRelease (name); ABAddressBookRef ab = ABAddressBookCreate(); int count = CFArrayGetCount(smiths); CFStringRef name = CFSTR ("Smith"); for (int i = 0; i < count; ++i) { CFArrayRef smiths = ABAddressBookCopyPeopleWithName(ab, name); ABRecordRef person = (ABRecordRef)CFArrayGetValueAtIndex(smiths, (CFIndex)i); CFRelease (name); if (ABRecordGetRecordType(person) != kABPersonType) continue; int count = CFArrayGetCount(smiths); for (int i = 0; i < count; ++i) { NSString *name = (NSString*)ABRecordCopyCompositeName(person); ABRecordRef person = (ABRecordRef)CFArrayGetValueAtIndex(smiths, (CFIndex)i); NSLog ("%@n", name); if (ABRecordGetRecordType(person) != kABPersonType) [name release]; continue; ABMultiValueRef phoneNumberProp = ABRecordCopyValue(person, kABPersonPhoneProperty); NSString *name = (NSString*)ABRecordCopyCompositeName(person); NSLog ("%@n", name); NSArray* numbers = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProp); CFRelease(phoneNumberProp); [name release]; for (NSString *pvalue in numbers) ABMultiValueRef phoneNumberProp = ABRecordCopyValue(person, kABPersonPhoneProperty); NSArray* numbers = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProp); NSLog ("Phone: %@n", pvalue); CFRelease(phoneNumberProp); [numbers release]; for (NSString *pvalue in numbers) NSLog ("Phone: %@n", pvalue); ABMultiValueRef emailProp = ABRecordCopyValue(person, kABPersonEmailProperty); NSArray* emails = (NSArray*)ABMultiValueCopyArrayOfAllValues(emailProp); [numbers release]; CFRelease(emailProp); ABMultiValueRef emailProp = ABRecordCopyValue(person, kABPersonEmailProperty); for (NSString *evalue in emails) NSArray* emails = (NSArray*)ABMultiValueCopyArrayOfAllValues(emailProp); NSLog ("Email: %@n"); CFRelease(emailProp); [emails release]; } for (NSString *evalue in emails) CFRelease (ab); NSLog ("Email: %@n"); CFRelease (smiths); [emails release]; } CFRelease (ab); CFRelease (smiths);
  • 17. var book = new AddressBook () { PreferContactAggregation = true }; foreach (Contact c in book.Where (c => c.LastName == "Smith")) { Console.WriteLine (c.DisplayName); foreach (Phone p in c.Phones) Console.WriteLine ("Phone: " + p.Number); foreach (Email e in c.Emails) Console.WriteLine ("Email: " + e.Address); }
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 26. IN THE SPOTLIGHT THE WWE APP IS READY TO RUMBLE! ● Kevin Mills and Xudong He from UI Centric brought this app to life. ● App features: easy-to-explore bios, stunning designs, and unique interactions so that fans feel like they're a part of the main event. ● Mills and He’s top tip: "Get familiar with the PlayerFramework. Think Lean. Load time and content caching are important." READY TO BUILD THE NEXT BIG APP? JOIN GENERATION APP FOR: ● Tips and tricks on Windows 8 and Windows Phone app development. ● 1:1 on-the-phone access to a Windows 8 and Windows Phone expert*. ● An exclusive Windows UI style design consultation*. ● An opportunity to test your app with qualified experts an App Lab. Sign Up at www.generationapp.com *See Ts&Cs on www.generationapp.com
  • 27.