SlideShare uma empresa Scribd logo
1 de 79
Baixar para ler offline
Android Meetup


Wednesday, January 16, 13
Designing a Useful and Sexy Product
                            Miki Setlur
                            @mikisetlur




Wednesday, January 16, 13
Looking back...




Wednesday, January 16, 13
Looking back...




Wednesday, January 16, 13
Be Useful & Sexy




Wednesday, January 16, 13
Be Useful & Sexy




Wednesday, January 16, 13
Useful: Select / create intuitive
       design patterns




Wednesday, January 16, 13
Useful: Select / create intuitive
       design patterns
       Example: studying android’s action bar and menu patterns




Wednesday, January 16, 13
Sexy: Focus aesthetics in the
       right places




Wednesday, January 16, 13
Sexy: Focus aesthetics in the
       right places
       Example: home screen explorations before v4 launch




Wednesday, January 16, 13
Sexy: Focus aesthetics in the
       right places
       Example: home screen explorations before v4 launch




Wednesday, January 16, 13
Useful: Go through the flows




Wednesday, January 16, 13
Useful: Go through the flows
     Example: prototyping tablet navigation




Wednesday, January 16, 13
Sexy: Love for Android-only :)




Wednesday, January 16, 13
Sexy: Love for Android-only :)
    Example: designing scalable, customizable widgets




Wednesday, January 16, 13
Sexy: Be clean, crisp and clear




Wednesday, January 16, 13
Sexy: Be clean, crisp and clear
    Example: redesigned note composer




Wednesday, January 16, 13
Useful: Think all sizes and
    orientations




Wednesday, January 16, 13
Useful: Think all sizes and
    orientations
    Example: layout change




Wednesday, January 16, 13
Useful: Think all sizes and
    orientations
    Example: layout change




Wednesday, January 16, 13
Useful: Think all sizes
    and orientations




Wednesday, January 16, 13
Useful: Think all sizes
    and orientations
    Example: cues rather than layout change




Wednesday, January 16, 13
Useful: Think all sizes
    and orientations
    Example: cues rather than layout change




Wednesday, January 16, 13
Useful: Test with real users




Wednesday, January 16, 13
Useful: Test with real users
    Example: discovering flaws




Wednesday, January 16, 13
Useful: Test with real users




Wednesday, January 16, 13
Useful: Test with real users
      Example: eliminating flaws




Wednesday, January 16, 13
Inside Evernote
                               Hemant Garg
                            hgarg@evernote.com




Wednesday, January 16, 13
Wednesday, January 16, 13
Wednesday, January 16, 13
Wednesday, January 16, 13
Process




Wednesday, January 16, 13
Process



                    • Define the feature objectives and goals




Wednesday, January 16, 13
Process



                    • Define the feature objectives and goals
                    • Architect the feature




Wednesday, January 16, 13
Process



                    • Define the feature objectives and goals
                    • Architect the feature
                    • Break into small features




Wednesday, January 16, 13
Process



                    • Define the feature objectives and goals
                    • Architect the feature
                    • Break into small features
                    • Design, Develop & Test




Wednesday, January 16, 13
After development




Wednesday, January 16, 13
After development


               • User Trials




Wednesday, January 16, 13
After development


               • User Trials
               • Beta Release




Wednesday, January 16, 13
After development


               • User Trials
               • Beta Release
               • Crash Reports




Wednesday, January 16, 13
After development


               • User Trials
               • Beta Release
               • Crash Reports
               • Analytics




Wednesday, January 16, 13
Launch!


             •       Test version upgrades, don’t leave too many logs,
                     write nice blog post about it and push the LIVE
                     button.
             •       Monitor crash reports, user reviews & analytics.
             •       1st weekend is very crucial.
             •       Beers and bragging




Wednesday, January 16, 13
Start Building
     OS version
     Target the mass




Wednesday, January 16, 13
OS version..




Wednesday, January 16, 13
OS version..


               • Android Compatibility Library




Wednesday, January 16, 13
OS version..


               • Android Compatibility Library
               • Reflections




Wednesday, January 16, 13
OS version..


               • Android Compatibility Library
               • Reflections
               • Emulators




Wednesday, January 16, 13
Start Building
   Phone sizes




Wednesday, January 16, 13
Phone sizes...

     • Scrollview & Linear Layouts




Wednesday, January 16, 13
Phone sizes...
 • Fragments




Wednesday, January 16, 13
It’s a phone
            Phone processing power and memory- There
            are many fast selling and popular low end
            devices.

            Its a phone
            After all its a mobile phone so think about how
            will your app handle interruptions (incoming
            call) & poor network connectivity.

            Make Android work for you
            - Use Intents to use functionalities from other
            apps.
            - Use content providers to get information from
            OS.
Wednesday, January 16, 13
Give back to Android




Wednesday, January 16, 13
Give back to Android



                    • Open up intents so that other apps can
                            use it. Connect the apps.




Wednesday, January 16, 13
Android Tips
                                 Jess Anders
                            janders@evernote.com




Wednesday, January 16, 13
Fragment Tips



                    •       Fragment.getActivity() (or null)
                    •       FragmentTransactions after
                            onPause()
                    •       Keep track of state of onCreateView
                            and onDestroyView




Wednesday, January 16, 13
Caution posting to Handlers




                            mHandler.post(new Runnable() {
                                public void run() {
                                  if (mIsExited) {
                                      return;
                                  }
                                  updateUI(mNote);
                                }
                            });


Wednesday, January 16, 13
Expect the user not to save




                            •   Auto-save in Evernote client
                            •   Food auto-save
                                •   Meal Activity




Wednesday, January 16, 13
Small Heap & Images


                     Analyze the problem and worst case scenarios.
                   ◦ Calculations Spreadsheet for Food 1.0
                 • Determine if you can do the work in Java code
                 • For Food, we came up with a piece-by-piece
                     approach with BitmapRegionDecoder (2.3+)
                 • For the multi-shot camera, we reused this, but
                     then had a fallback of a native library to process
                     the large photos on older devices.




Wednesday, January 16, 13
What we needed for Food 1.0




        3MP - 2046 x 1536 ~ 12.5MB       1536 x 1536 ~ 9.2MB
        5MP - 2560 x 1920 ~ 19.5MB
        8MP - 3264 x 2448 ~ 31.8MB
         Worst Case all in-memory        Using this method
               8MP ~ 41MB            9.2MB + 1MB*2 = 11.2MB
Wednesday, January 16, 13
Resizing in Max Heap...



        <activity
            android:name=".MultiShotCameraActivity"
            android:process=":photosProcess"
            android:configChanges="keyboardHidden|screenLayout|
        orientation|screenSize"
            android:theme="@android:style/
        Theme.NoTitleBar.Fullscreen" />




Wednesday, January 16, 13
Building Evernote
                             Ahmed El-Helw
                               @ahmedre




Wednesday, January 16, 13
Difficulties




         •      Many distribution channels                                                  
         •      Multiple branches of development
         •      Dependencies on other teams' libraries




Wednesday, January 16, 13
Goal




         •      Security
         •      Build History
         •      Easy Distribution




Wednesday, January 16, 13
Process




                                         property

                                                    Dependencies
                                                    Property File


                                  apks


                            Lint, testing, ...
Wednesday, January 16, 13
Benefits




Wednesday, January 16, 13
The Evernote Platform & Android SDK
                            Ty Smith
                        @tylersmithnet




Wednesday, January 16, 13
The Evernote Platform



         •      The platform ties together all of our products - and it’s
                available to everybody.
         •      We build great apps that help you capture and recall
                important information.
         •      Third party developers add new and different ways to
                capture and recall information, and put your Evernote
                data in context with all of the other services you use.




Wednesday, January 16, 13
What’s in that cloud?




         •      Six billion HTTP requests last month.
         •      20 thousand third party developers
         •      1.5 billion notes have been created to date
         •      380TB of user data
         •      40 million registered users




Wednesday, January 16, 13
Evernote’s Apps




Wednesday, January 16, 13
The Evernote Ecosystem




Wednesday, January 16, 13
Remember Everything




         •      All of your notes live together in context. Search for a
                meal, and you’ll find related meetings, web clips, and
                more.
         •      Every app that adds content to your Evernote account
                makes every other app smarter.




Wednesday, January 16, 13
The Platform Team




         •      Develop APIs, SDKs, sample code and docs
         •      Educate developer communities about the Evernote
                Platform
         •      Support developers
         •      Promote great apps to our user base




Wednesday, January 16, 13
Hackathons




Wednesday, January 16, 13
Android SDK



     •      Open Source and an open roadmap
            https://github.com/evernote/evernote-sdk-android
     •      Library Project for easy integration
     •      Maven Central for dependency management
     •      OAuth2 for secure authentication
     •      Thrift for server-client communication




Wednesday, January 16, 13
Android SDK: Authentication

     private     static final String CONSUMER_KEY = "Your consumer key";
     private     static final String CONSUMER_SECRET = "Your consumer secret";
     private     static final String EVERNOTE_HOST = EvernoteSession.HOST_SANDBOX;
     private     EvernoteSession mEvernoteSession;

     @Override
     public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);

       mEvernoteSession = EvernoteSession.init(this,
                                               CONSUMER_KEY,
                                               CONSUMER_SECRET,
                                               EVERNOTE_HOST,
                                               null);

       if (!mEvernoteSession.isLoggedIn())
         mEvernoteSession.authenticate(this);
     }

     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
       super.onActivityResult(requestCode, resultCode, data);
       if(requestCode == EvernoteSession.REQUEST_CODE_OAUTH &&
           resultCode == Activity.RESULT_OK)
         //Success, Update UI when OAuth activity returns result
     }




Wednesday, January 16, 13
Android SDK: Creating a note




     /**
      * This is a network request, call outside of main thread
      */
     public void createNote(String title, String content) {
       Note note = new Note();
       note.setTitle(title);

       String enmlContent = EvernoteUtil.NOTE_PREFIX +
                       content +
                       EvernoteUtil.NOTE_SUFFIX;

         note.setContent(enmlContent);
         note = mEvernoteSession.createNoteStore().createNote(mEvernoteSession.getAuthToken(), note);
     }




Wednesday, January 16, 13
Intent: Creating a note



     public static final String ACTION_NEW_NOTE = "com.evernote.action.CREATE_NEW_NOTE";

     public void newNoteWithContent(View view) {
       String text = "This is a sample text file.nThis is line two.";
       String title = "New Note with Content";
       
       Intent intent = new Intent();
       intent.setAction(ACTION_NEW_NOTE);
       
        // Set the note's title and plaintext content
       intent.putExtra(Intent.EXTRA_TITLE, title);
       intent.putExtra(Intent.EXTRA_TEXT, text);

       startActivity(intent);
     }




Wednesday, January 16, 13
Intent: Viewing a note




     public static final String ACTION_VIEW_NOTE = "com.evernote.action.VIEW_NOTE";

     public void viewNote(View view) {
       String noteGuid = "63781605-3c3d-4e56-90a8-8be5e3ae7eee";
       boolean hideTitleBar = true;
       
       Intent intent = new Intent();
       intent.setAction(ACTION_VIEW_NOTE);
       intent.putExtra(EXTRA_NOTE_GUID, noteGuid);
       intent.putExtra(EXTRA_FULL_SCREEN, hideTitleBar);
       
        startActivity(intent);
     }




Wednesday, January 16, 13
Thanks!
                                 @evernote_dev
                            http://dev.evernote.com




Wednesday, January 16, 13

Mais conteúdo relacionado

Semelhante a Android meetup

Designing Elegant UX Across Devices and Platforms
Designing Elegant UX Across Devices and PlatformsDesigning Elegant UX Across Devices and Platforms
Designing Elegant UX Across Devices and PlatformsErik Loehfelm
 
What do you mean, backwards compatibility?
What do you mean, backwards compatibility?What do you mean, backwards compatibility?
What do you mean, backwards compatibility?Trisha Gee
 
Web Motion: Motion Detection on the Web
Web Motion: Motion Detection on the WebWeb Motion: Motion Detection on the Web
Web Motion: Motion Detection on the Webfisherwebdev
 
Responsive Design & the Business Analyst
Responsive Design & the Business AnalystResponsive Design & the Business Analyst
Responsive Design & the Business AnalystTed Hardy, MBA, CBAP
 
Código Fácil De Testear
Código Fácil De TestearCódigo Fácil De Testear
Código Fácil De TestearAlvaro Videla
 
iOS Hackathon 2012 Objective-C talk
iOS Hackathon 2012 Objective-C talkiOS Hackathon 2012 Objective-C talk
iOS Hackathon 2012 Objective-C talkGabriel Lim
 
Greg Isenberg: My Million Dollar Product Mistake
Greg Isenberg: My Million Dollar Product MistakeGreg Isenberg: My Million Dollar Product Mistake
Greg Isenberg: My Million Dollar Product MistakeDealmaker Media
 
Building a Completed iPhone App
Building a Completed iPhone AppBuilding a Completed iPhone App
Building a Completed iPhone AppVu Tran Lam
 
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...IndicThreads
 
Frontend United: Etching wireframes & agile UX
Frontend United: Etching wireframes & agile UXFrontend United: Etching wireframes & agile UX
Frontend United: Etching wireframes & agile UXWunderkraut
 
Proud to be polyglot!
Proud to be polyglot!Proud to be polyglot!
Proud to be polyglot!NLJUG
 
Node.js Patterns and Opinions
Node.js Patterns and OpinionsNode.js Patterns and Opinions
Node.js Patterns and OpinionsIsaacSchlueter
 
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitIntroduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitRan Mizrahi
 
Hybrid Mobile Web Apps with Sencha Touch 2
Hybrid Mobile Web Apps with Sencha Touch 2Hybrid Mobile Web Apps with Sencha Touch 2
Hybrid Mobile Web Apps with Sencha Touch 2Ibuildings
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentJumping Bean
 
AppEngine Performance Tuning
AppEngine Performance TuningAppEngine Performance Tuning
AppEngine Performance TuningDavid Chen
 
jQuery Mobile Jump Start
jQuery Mobile Jump StartjQuery Mobile Jump Start
jQuery Mobile Jump StartTroy Miles
 

Semelhante a Android meetup (20)

Designing Elegant UX Across Devices and Platforms
Designing Elegant UX Across Devices and PlatformsDesigning Elegant UX Across Devices and Platforms
Designing Elegant UX Across Devices and Platforms
 
Paranoid Android
Paranoid AndroidParanoid Android
Paranoid Android
 
What do you mean, backwards compatibility?
What do you mean, backwards compatibility?What do you mean, backwards compatibility?
What do you mean, backwards compatibility?
 
Web Motion: Motion Detection on the Web
Web Motion: Motion Detection on the WebWeb Motion: Motion Detection on the Web
Web Motion: Motion Detection on the Web
 
Responsive Design & the Business Analyst
Responsive Design & the Business AnalystResponsive Design & the Business Analyst
Responsive Design & the Business Analyst
 
Código Fácil De Testear
Código Fácil De TestearCódigo Fácil De Testear
Código Fácil De Testear
 
iOS Hackathon 2012 Objective-C talk
iOS Hackathon 2012 Objective-C talkiOS Hackathon 2012 Objective-C talk
iOS Hackathon 2012 Objective-C talk
 
Greg Isenberg: My Million Dollar Product Mistake
Greg Isenberg: My Million Dollar Product MistakeGreg Isenberg: My Million Dollar Product Mistake
Greg Isenberg: My Million Dollar Product Mistake
 
Building a Completed iPhone App
Building a Completed iPhone AppBuilding a Completed iPhone App
Building a Completed iPhone App
 
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
 
Frontend United: Etching wireframes & agile UX
Frontend United: Etching wireframes & agile UXFrontend United: Etching wireframes & agile UX
Frontend United: Etching wireframes & agile UX
 
Proud to be polyglot!
Proud to be polyglot!Proud to be polyglot!
Proud to be polyglot!
 
Node.js Patterns and Opinions
Node.js Patterns and OpinionsNode.js Patterns and Opinions
Node.js Patterns and Opinions
 
Usability principles 2
Usability principles 2Usability principles 2
Usability principles 2
 
Introduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim SummitIntroduction to node.js by Ran Mizrahi @ Reversim Summit
Introduction to node.js by Ran Mizrahi @ Reversim Summit
 
Aten ntc-stories
Aten ntc-storiesAten ntc-stories
Aten ntc-stories
 
Hybrid Mobile Web Apps with Sencha Touch 2
Hybrid Mobile Web Apps with Sencha Touch 2Hybrid Mobile Web Apps with Sencha Touch 2
Hybrid Mobile Web Apps with Sencha Touch 2
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
AppEngine Performance Tuning
AppEngine Performance TuningAppEngine Performance Tuning
AppEngine Performance Tuning
 
jQuery Mobile Jump Start
jQuery Mobile Jump StartjQuery Mobile Jump Start
jQuery Mobile Jump Start
 

Último

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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 MenDelhi Call girls
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
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
 
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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
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
 
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
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Android meetup

  • 2. Designing a Useful and Sexy Product Miki Setlur @mikisetlur Wednesday, January 16, 13
  • 5. Be Useful & Sexy Wednesday, January 16, 13
  • 6. Be Useful & Sexy Wednesday, January 16, 13
  • 7. Useful: Select / create intuitive design patterns Wednesday, January 16, 13
  • 8. Useful: Select / create intuitive design patterns Example: studying android’s action bar and menu patterns Wednesday, January 16, 13
  • 9. Sexy: Focus aesthetics in the right places Wednesday, January 16, 13
  • 10. Sexy: Focus aesthetics in the right places Example: home screen explorations before v4 launch Wednesday, January 16, 13
  • 11. Sexy: Focus aesthetics in the right places Example: home screen explorations before v4 launch Wednesday, January 16, 13
  • 12. Useful: Go through the flows Wednesday, January 16, 13
  • 13. Useful: Go through the flows Example: prototyping tablet navigation Wednesday, January 16, 13
  • 14. Sexy: Love for Android-only :) Wednesday, January 16, 13
  • 15. Sexy: Love for Android-only :) Example: designing scalable, customizable widgets Wednesday, January 16, 13
  • 16. Sexy: Be clean, crisp and clear Wednesday, January 16, 13
  • 17. Sexy: Be clean, crisp and clear Example: redesigned note composer Wednesday, January 16, 13
  • 18. Useful: Think all sizes and orientations Wednesday, January 16, 13
  • 19. Useful: Think all sizes and orientations Example: layout change Wednesday, January 16, 13
  • 20. Useful: Think all sizes and orientations Example: layout change Wednesday, January 16, 13
  • 21. Useful: Think all sizes and orientations Wednesday, January 16, 13
  • 22. Useful: Think all sizes and orientations Example: cues rather than layout change Wednesday, January 16, 13
  • 23. Useful: Think all sizes and orientations Example: cues rather than layout change Wednesday, January 16, 13
  • 24. Useful: Test with real users Wednesday, January 16, 13
  • 25. Useful: Test with real users Example: discovering flaws Wednesday, January 16, 13
  • 26. Useful: Test with real users Wednesday, January 16, 13
  • 27. Useful: Test with real users Example: eliminating flaws Wednesday, January 16, 13
  • 28. Inside Evernote Hemant Garg hgarg@evernote.com Wednesday, January 16, 13
  • 33. Process • Define the feature objectives and goals Wednesday, January 16, 13
  • 34. Process • Define the feature objectives and goals • Architect the feature Wednesday, January 16, 13
  • 35. Process • Define the feature objectives and goals • Architect the feature • Break into small features Wednesday, January 16, 13
  • 36. Process • Define the feature objectives and goals • Architect the feature • Break into small features • Design, Develop & Test Wednesday, January 16, 13
  • 38. After development • User Trials Wednesday, January 16, 13
  • 39. After development • User Trials • Beta Release Wednesday, January 16, 13
  • 40. After development • User Trials • Beta Release • Crash Reports Wednesday, January 16, 13
  • 41. After development • User Trials • Beta Release • Crash Reports • Analytics Wednesday, January 16, 13
  • 42. Launch! • Test version upgrades, don’t leave too many logs, write nice blog post about it and push the LIVE button. • Monitor crash reports, user reviews & analytics. • 1st weekend is very crucial. • Beers and bragging Wednesday, January 16, 13
  • 43. Start Building OS version Target the mass Wednesday, January 16, 13
  • 45. OS version.. • Android Compatibility Library Wednesday, January 16, 13
  • 46. OS version.. • Android Compatibility Library • Reflections Wednesday, January 16, 13
  • 47. OS version.. • Android Compatibility Library • Reflections • Emulators Wednesday, January 16, 13
  • 48. Start Building Phone sizes Wednesday, January 16, 13
  • 49. Phone sizes... • Scrollview & Linear Layouts Wednesday, January 16, 13
  • 50. Phone sizes... • Fragments Wednesday, January 16, 13
  • 51. It’s a phone Phone processing power and memory- There are many fast selling and popular low end devices. Its a phone After all its a mobile phone so think about how will your app handle interruptions (incoming call) & poor network connectivity. Make Android work for you - Use Intents to use functionalities from other apps. - Use content providers to get information from OS. Wednesday, January 16, 13
  • 52. Give back to Android Wednesday, January 16, 13
  • 53. Give back to Android • Open up intents so that other apps can use it. Connect the apps. Wednesday, January 16, 13
  • 54. Android Tips Jess Anders janders@evernote.com Wednesday, January 16, 13
  • 55. Fragment Tips • Fragment.getActivity() (or null) • FragmentTransactions after onPause() • Keep track of state of onCreateView and onDestroyView Wednesday, January 16, 13
  • 56. Caution posting to Handlers mHandler.post(new Runnable() { public void run() { if (mIsExited) { return; } updateUI(mNote); } }); Wednesday, January 16, 13
  • 57. Expect the user not to save • Auto-save in Evernote client • Food auto-save • Meal Activity Wednesday, January 16, 13
  • 58. Small Heap & Images Analyze the problem and worst case scenarios. ◦ Calculations Spreadsheet for Food 1.0 • Determine if you can do the work in Java code • For Food, we came up with a piece-by-piece approach with BitmapRegionDecoder (2.3+) • For the multi-shot camera, we reused this, but then had a fallback of a native library to process the large photos on older devices. Wednesday, January 16, 13
  • 59. What we needed for Food 1.0 3MP - 2046 x 1536 ~ 12.5MB 1536 x 1536 ~ 9.2MB 5MP - 2560 x 1920 ~ 19.5MB 8MP - 3264 x 2448 ~ 31.8MB Worst Case all in-memory Using this method 8MP ~ 41MB 9.2MB + 1MB*2 = 11.2MB Wednesday, January 16, 13
  • 60. Resizing in Max Heap... <activity android:name=".MultiShotCameraActivity" android:process=":photosProcess" android:configChanges="keyboardHidden|screenLayout| orientation|screenSize" android:theme="@android:style/ Theme.NoTitleBar.Fullscreen" /> Wednesday, January 16, 13
  • 61. Building Evernote Ahmed El-Helw @ahmedre Wednesday, January 16, 13
  • 62. Difficulties • Many distribution channels                                                   • Multiple branches of development • Dependencies on other teams' libraries Wednesday, January 16, 13
  • 63. Goal • Security • Build History • Easy Distribution Wednesday, January 16, 13
  • 64. Process property Dependencies Property File apks Lint, testing, ... Wednesday, January 16, 13
  • 66. The Evernote Platform & Android SDK Ty Smith @tylersmithnet Wednesday, January 16, 13
  • 67. The Evernote Platform • The platform ties together all of our products - and it’s available to everybody. • We build great apps that help you capture and recall important information. • Third party developers add new and different ways to capture and recall information, and put your Evernote data in context with all of the other services you use. Wednesday, January 16, 13
  • 68. What’s in that cloud? • Six billion HTTP requests last month. • 20 thousand third party developers • 1.5 billion notes have been created to date • 380TB of user data • 40 million registered users Wednesday, January 16, 13
  • 71. Remember Everything • All of your notes live together in context. Search for a meal, and you’ll find related meetings, web clips, and more. • Every app that adds content to your Evernote account makes every other app smarter. Wednesday, January 16, 13
  • 72. The Platform Team • Develop APIs, SDKs, sample code and docs • Educate developer communities about the Evernote Platform • Support developers • Promote great apps to our user base Wednesday, January 16, 13
  • 74. Android SDK • Open Source and an open roadmap https://github.com/evernote/evernote-sdk-android • Library Project for easy integration • Maven Central for dependency management • OAuth2 for secure authentication • Thrift for server-client communication Wednesday, January 16, 13
  • 75. Android SDK: Authentication private static final String CONSUMER_KEY = "Your consumer key"; private static final String CONSUMER_SECRET = "Your consumer secret"; private static final String EVERNOTE_HOST = EvernoteSession.HOST_SANDBOX; private EvernoteSession mEvernoteSession; @Override public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);   mEvernoteSession = EvernoteSession.init(this, CONSUMER_KEY, CONSUMER_SECRET, EVERNOTE_HOST, null);   if (!mEvernoteSession.isLoggedIn())     mEvernoteSession.authenticate(this); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) {   super.onActivityResult(requestCode, resultCode, data);   if(requestCode == EvernoteSession.REQUEST_CODE_OAUTH && resultCode == Activity.RESULT_OK)     //Success, Update UI when OAuth activity returns result } Wednesday, January 16, 13
  • 76. Android SDK: Creating a note /** * This is a network request, call outside of main thread */ public void createNote(String title, String content) { Note note = new Note(); note.setTitle(title); String enmlContent = EvernoteUtil.NOTE_PREFIX +                   content +                   EvernoteUtil.NOTE_SUFFIX; note.setContent(enmlContent); note = mEvernoteSession.createNoteStore().createNote(mEvernoteSession.getAuthToken(), note); } Wednesday, January 16, 13
  • 77. Intent: Creating a note public static final String ACTION_NEW_NOTE = "com.evernote.action.CREATE_NEW_NOTE"; public void newNoteWithContent(View view) {   String text = "This is a sample text file.nThis is line two.";   String title = "New Note with Content";      Intent intent = new Intent();   intent.setAction(ACTION_NEW_NOTE);    // Set the note's title and plaintext content   intent.putExtra(Intent.EXTRA_TITLE, title);   intent.putExtra(Intent.EXTRA_TEXT, text);   startActivity(intent); } Wednesday, January 16, 13
  • 78. Intent: Viewing a note public static final String ACTION_VIEW_NOTE = "com.evernote.action.VIEW_NOTE"; public void viewNote(View view) {   String noteGuid = "63781605-3c3d-4e56-90a8-8be5e3ae7eee";   boolean hideTitleBar = true;      Intent intent = new Intent();   intent.setAction(ACTION_VIEW_NOTE);   intent.putExtra(EXTRA_NOTE_GUID, noteGuid);   intent.putExtra(EXTRA_FULL_SCREEN, hideTitleBar);    startActivity(intent); } Wednesday, January 16, 13
  • 79. Thanks! @evernote_dev http://dev.evernote.com Wednesday, January 16, 13