The Ultimate Android Lock ScreenAlberto FonsecaFounder -
AgendaWhat is GOTO?Feature OverviewDemoLessons LearnedQ&ACopyright © 2010 InnoWeb Tech, LLC
What is GOTO?Copyright © 2010 InnoWeb Tech, LLCAndroid 1.5
What is GOTO?Copyright © 2010 InnoWeb Tech, LLCAndroid 2.0
What is GOTO?Copyright © 2010 InnoWeb Tech, LLCGOTO UI
FeaturesNotification PreviewsApp shortcutsWeatherCopyright © 2010 InnoWeb Tech, LLC
FeaturesNotification PreviewsCopyright © 2010 InnoWeb Tech, LLC
FeaturesNotification PreviewsApp shortcutsCopyright © 2010 InnoWeb Tech, LLC
FeaturesNotification PreviewsApp shortcutsWeatherCopyright © 2010 InnoWeb Tech, LLC
DEMOCopyright © 2010 InnoWeb Tech, LLC
Lessons LearnedUnsupported API’s – Don’t try this at homeSupporting Android 1.5 – 2.2Testing on real hardwareCopyright © 2010 InnoWeb Tech, LLC
Lessons LearnedUnsupported API’s – Don’t try this at homeMaintenance and internal API changesDevice implementations not consistentVery time consumingCopyright © 2010 InnoWeb Tech, LLC
Lessons LearnedUnsupported API’s – Don’t try this at homeSupporting Android 1.5 – 2.2Copyright © 2010 InnoWeb Tech, LLChttp://developer.android.com/resources/dashboard/platform-versions.htmlData collected during two weeks ending on August 2, 2010
Lessons LearnedUnsupported API’s – Don’t try this at homeSupporting Android 1.5 – 2.2Android ManifestMinSDK version 3TargetSDK version 8ReflectionInitialization on demand holder patternCopyright © 2010 InnoWeb Tech, LLC
GoogleAccountsWrapperpublic abstract classGoogleAccountsWrapper{public staticGoogleAccountsWrappergetInstance(){if (Integer.parseInt(Build.VERSION.SDK) < 5){returnPreEclair.Holder.instance;}else{returnEclairPlus.Holder.instance;}}public abstract voidinitGMailAccount(Activity activity);//…Copyright © 2010 InnoWeb Tech, LLC
private static class PreEclair extends GoogleAccountsWrapper{private static class Holder{	private static finalPreEclair instance = new PreEclair();}/*** Retrieve GMail account info and save it in NotificationInfo* Note: We are relying on an older version of* GoogleLoginServiceHelper linked here via the framework.jar * library and calling it's getAccount() method.*/@Overridepublic voidinitGMailAccount(Activity activity) {com.google.android.googlelogin.GoogleLoginServiceHelper.getAccount(activity, Goto.REQUEST_GET_ACCOUNT, true);}}Copyright © 2010 InnoWeb Tech, LLC
private static classEclairPlus extends GoogleAccountsWrapper{private static class Holder{	private static finalEclairPlusinstance = newEclairPlus();}@Overridepublic voidinitGMailAccount(Activity context) {AccountManageraccountManager = AccountManager.get(context);Account[] accounts = accountManager.getAccountsByType("com.google");if (accounts.length > 0){NotificationInfo.googleAccount= accounts[0].name;}}}}Copyright © 2010 InnoWeb Tech, LLC
// Initialize GMail account infoGoogleAccountsWrappergoogleAccounts = GoogleAccountsWrapper.getInstance();googleAccounts.initGMailAccount(this);Copyright © 2010 InnoWeb Tech, LLC
Lessons LearnedUnsupported API’s – Don’t try this at homeSupporting Android 1.5 – 2.2Testing on real hardwareNetworking with other Android users/devsDeviceAnywhereservicehttp://www.deviceanywhere.comCopyright © 2010 InnoWeb Tech, LLC
Questions?Copyright © 2010 InnoWeb Tech, LLC
ContactAlberto FonsecaAvailable for consulting/project managementE-mail: afonseca@innowebtech.comBlog: www.innowebtech.com/blogTwitter: @innowebtechGOTOAvailable in the Android MarketplaceWeb: www.gotoandroidapp.comCopyright © 2010 InnoWeb Tech, LLC

GOTO - The Ultimate Android Lock Screen

  • 1.
    The Ultimate AndroidLock ScreenAlberto FonsecaFounder -
  • 2.
    AgendaWhat is GOTO?FeatureOverviewDemoLessons LearnedQ&ACopyright © 2010 InnoWeb Tech, LLC
  • 3.
    What is GOTO?Copyright© 2010 InnoWeb Tech, LLCAndroid 1.5
  • 4.
    What is GOTO?Copyright© 2010 InnoWeb Tech, LLCAndroid 2.0
  • 5.
    What is GOTO?Copyright© 2010 InnoWeb Tech, LLCGOTO UI
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
    DEMOCopyright © 2010InnoWeb Tech, LLC
  • 11.
    Lessons LearnedUnsupported API’s– Don’t try this at homeSupporting Android 1.5 – 2.2Testing on real hardwareCopyright © 2010 InnoWeb Tech, LLC
  • 12.
    Lessons LearnedUnsupported API’s– Don’t try this at homeMaintenance and internal API changesDevice implementations not consistentVery time consumingCopyright © 2010 InnoWeb Tech, LLC
  • 13.
    Lessons LearnedUnsupported API’s– Don’t try this at homeSupporting Android 1.5 – 2.2Copyright © 2010 InnoWeb Tech, LLChttp://developer.android.com/resources/dashboard/platform-versions.htmlData collected during two weeks ending on August 2, 2010
  • 14.
    Lessons LearnedUnsupported API’s– Don’t try this at homeSupporting Android 1.5 – 2.2Android ManifestMinSDK version 3TargetSDK version 8ReflectionInitialization on demand holder patternCopyright © 2010 InnoWeb Tech, LLC
  • 15.
    GoogleAccountsWrapperpublic abstract classGoogleAccountsWrapper{publicstaticGoogleAccountsWrappergetInstance(){if (Integer.parseInt(Build.VERSION.SDK) < 5){returnPreEclair.Holder.instance;}else{returnEclairPlus.Holder.instance;}}public abstract voidinitGMailAccount(Activity activity);//…Copyright © 2010 InnoWeb Tech, LLC
  • 16.
    private static classPreEclair extends GoogleAccountsWrapper{private static class Holder{ private static finalPreEclair instance = new PreEclair();}/*** Retrieve GMail account info and save it in NotificationInfo* Note: We are relying on an older version of* GoogleLoginServiceHelper linked here via the framework.jar * library and calling it's getAccount() method.*/@Overridepublic voidinitGMailAccount(Activity activity) {com.google.android.googlelogin.GoogleLoginServiceHelper.getAccount(activity, Goto.REQUEST_GET_ACCOUNT, true);}}Copyright © 2010 InnoWeb Tech, LLC
  • 17.
    private static classEclairPlusextends GoogleAccountsWrapper{private static class Holder{ private static finalEclairPlusinstance = newEclairPlus();}@Overridepublic voidinitGMailAccount(Activity context) {AccountManageraccountManager = AccountManager.get(context);Account[] accounts = accountManager.getAccountsByType("com.google");if (accounts.length > 0){NotificationInfo.googleAccount= accounts[0].name;}}}}Copyright © 2010 InnoWeb Tech, LLC
  • 18.
    // Initialize GMailaccount infoGoogleAccountsWrappergoogleAccounts = GoogleAccountsWrapper.getInstance();googleAccounts.initGMailAccount(this);Copyright © 2010 InnoWeb Tech, LLC
  • 19.
    Lessons LearnedUnsupported API’s– Don’t try this at homeSupporting Android 1.5 – 2.2Testing on real hardwareNetworking with other Android users/devsDeviceAnywhereservicehttp://www.deviceanywhere.comCopyright © 2010 InnoWeb Tech, LLC
  • 20.
  • 21.
    ContactAlberto FonsecaAvailable forconsulting/project managementE-mail: afonseca@innowebtech.comBlog: www.innowebtech.com/blogTwitter: @innowebtechGOTOAvailable in the Android MarketplaceWeb: www.gotoandroidapp.comCopyright © 2010 InnoWeb Tech, LLC