3. SMELLS LIKE ANDROID | About me Joana Costa Computer Engineer [email_address] Engª Informática – Universidade de Coimbra Software Architect @ Alert Life Science Computing +3 years experience in mobile development (J2ME) Interests within the mobile area – and currently involved in the Android platform Should I be doing this? I should because: I’m a girl This is a dinner I’m 1/6 of a geek I have experience in mobile technology and starting in Android platform I shouldn’t because: I wrote just one Android app from start to finish
7. SMELLS LIKE ANDROID | Anatomy I “ Android is a software stack for mobile devices that includes an operating system, middleware and key applications” http://developer.android.com
8. SMELLS LIKE ANDROID | Anatomy II Phone users App developers Programmers Hardware developers
9. SMELLS LIKE ANDROID | Anatomy II Activity Service UI screen (typically) Services that runs in the background Broadcast Receiver Components for broadcast notifications/alarms Content Provider Sharing of data across applications
21. 6 major releases of the platform in a year and a half. SMELLS LIKE ANDROID | Fragmentation No one wants to see that their cool new gadget is suddenly unable to do all the things that the new stuff can do. 1.5 (Cupcake) February 2009 1.6 (Donut) September 2009 2.0/2.1 (Eclair) October 2009 2.2 (Froyo) May 2010 Gingerbread Q4 2010 Honeycomb 2011
SO baseado em linux Utiliza Java como linguagem de programaçao own Java Virtual machine (Dalvik). É um sistema aberto Tem um suporte e documentação mt bom A simple and powerful SDK
System C library - a BSD-derived implementation of the standard C system library (libc), tuned for embedded Linux-based devices Media Libraries - based on PacketVideo's OpenCORE; the libraries support playback and recording of many popular audio and video formats, as well as static image files, including MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG Surface Manager - manages access to the display subsystem and seamlessly composites 2D and 3D graphic layers from multiple applications LibWebCore - a modern web browser engine which powers both the Android browser and an embeddable web view SGL - the underlying 2D graphics engine 3D libraries - an implementation based on OpenGL ES 1.0 APIs; the libraries use either hardware 3D acceleration (where available) or the included, highly optimized 3D software rasterizer FreeType - bitmap and vector font rendering SQLite - a powerful and lightweight relational database engine available to all applications
Application building blocks Key classes Activities Presents a visual UI for a single endeavor Examples: list of photos, buttons to start/stop a song Activities : Building block of the UI. Every screen in your application will be an extension of the Activity class. You can think of an activity as being analogous to a window or dialog in a desktop environment. Activity Present a visual user interface for one focused endeavor the user can undertake Example: a list of menu items users can choose from Services Performs background work (no UI) Examples: play background music, retrieve data over a network Services : Headless (non-UI) application that runs in the background. They are designed to keep running independent of any activity. Services Run in the background for an indefinite period of time Example: calculate and provide the result to activities that need it Broadcast Receivers Receives and reacts to broadcast announcements (no UI) Broadcast examples: battery is low, pic is taken, lang pref changed Intents : A simple message passing framework. Using intents you can broadcast messages system-wide or to a target Activity or Service. Broadcast Receivers : Intent broadcast consumers. By registering a broadcast receiver your application an listen for broadcast Intents that match specific filter criteria. Notifications : User notification framework. Let you signal users without interrupting their current activity. For instance an incoming call can alert you with flashing lights, making sounds, or showing a dialog. Broadcast Receivers Receive and react to broadcast announcements Example: announcements that the time zone has changed 4. Content Providers Provides app data to other applications (no UI) Examples: share contact info from SQLite, provide image from the file system Content Providers : Provide a level of abstraction for any data stored on the device that is accessible by multiple applications. Content Providers Store and retrieve data and make it accessible to all applications Example: Android ships with a number of content providers for common data types (e.g., audio, video, images, personal contact information, etc.)
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
1. Eclipse Integrated Design Environment (IDE), a program to write code and manage software development 2. Java Development Kit (JDK), the Java compiler and support tools 3. The Android Software Development Kit (SDK), base code and emulators for developing Android apps 4. Android Development Toolkit (ADT), a plug-in for Eclipse that makes Android development seamless 5. Apache Ant, a program that automates software build processes (similar to 'make') Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
Android 2.1 – api level 7 It declares the minimum level of the Android API that the application requires. The manifest presents essential information about the application to the Android system, information the system must have before it can run any of the application's code. Enter a Min SDK Version . This is an integer that indicates the minimum API Level required to properly run your application. The Android system does check any system version compatibility expressed by an application in its manifest, in the minSdkVersion attribute. This allows an application to specify the minimum system API with which is compatible. If your application requires a specific minimum version of the Android platform, or is designed only to support a certain range of Android platform versions, you can specify those version requirements as API Level identifiers in the application's manifest file. Doing so ensures that your application can only be installed on devices that are running a compatible version of the Android system.
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
when handsets come to market running Android 2.3, you can bet the people stuck on 2.2 are going to feel shafted. No one wants to see that their cool new gadget is suddenly unable to do all the things that the new stuff can do. One of the greatest and worst features of the Android OS is it’s open source nature. there are apps that won’t run on all the Android devices in the market.
Gingerbed, Honeycomb
Android 2.2 comes packaged with a little piece of code called the just in time (JIT) compiler . A JIT compiler will increase the speed of Android and its applications by translating their code into a form that’s much faster for your phone to run. With JIT enabled (Just-in-time compilation), applications will run a lot faster — like 3x faster. In addition to speed improvements, it has a positive effect on battery life.
Probably one of the most talked about and highly anticipated features, Flash does not come installed with the Froyo update, rather it is supported. You still must download the Flash 10.1 release for Android which is an easy enough process. Once that is done feel free to browse any website you like and watch just about any flash video (save for some sites like Hulu). Adobe even released a mobile site that directs you to many full featured Flash sites to get you going. ( Download Flash for Android 2.2 here ) ( Download the Flash Showcase here or navigate to http://m.flash.com )
What? Android 2.1 can’t voice dial over bluetooth? I know right. It is one of those little things that you would think Android already has the capability to do. I think it was likely a slight oversight by Android developer but alas, Froyo gives you the voice dialing capability over bluetooth – and it works well. I find that the voice recognition does its job for the most part except with a handful of tricky names. Get prepared to get your hands-free dialing on with Froyo.
The enhanced camera features are another subtle improvement to the Andorid 2.2 feature set. Innate digital zoom, 4-way camera rotation, and enhanced on-screen menus make the camera much easier to use under 2.2. The menus give you a mulititude of new options that allow you to control zoom, flash, white balance, geo-tagging, focus and exposure I find it much easier to turn functions on and off with the new menus and zooming is easier than ever without the need to install a 3rd party zoom app. Additionally the flash LED can be enabled under camcorder mode for your low light video needs.
Certain devices like the Nexus One can be turned into a portable Wi-Fi hotspot that can be shared with up to 8 devices. You can use your Android-powered phone as a 3G connection for a Windows or Linux laptop by connecting their phone to the computer with a USB cable. The connection is then shared between the two devices. USB tethering --that is, using your phone as a modem to get online--is available on Windows and Linux (not the Mac). Windows XP users have to download a driver ; Windows 7, Vista, and Linux users are good to go by just enabling tethering on the phone and connecting it via the USB cable to your computer.
This is largely one of the best and most anticipated features of Froyo. Apps to SD will allow you to install apps to the SD storage area so long as the app supports the feature. This invariably will save many users that have limited space on their internal storage (such as Droid users) from having to delete apps in order to install new ones. For mainstream users the biggest anticipation will be in waiting for app developers to build in support for the Apps to SD feature so we can get on with our space
This is largely one of the best and most anticipated features of Froyo. Apps to SD will allow you to install apps to the SD storage area so long as the app supports the feature. This invariably will save many users that have limited space on their internal storage (such as Droid users) from having to delete apps in order to install new ones. For mainstream users the biggest anticipation will be in waiting for app developers to build in support for the Apps to SD feature so we can get on with our space
This is largely one of the best and most anticipated features of Froyo. Apps to SD will allow you to install apps to the SD storage area so long as the app supports the feature. This invariably will save many users that have limited space on their internal storage (such as Droid users) from having to delete apps in order to install new ones. For mainstream users the biggest anticipation will be in waiting for app developers to build in support for the Apps to SD feature so we can get on with our space
google goggles
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
App’s data is private Data can be shared using content providers Preferences: Lightweight mechanism to store and retrieve key-value pairs of primitive data types Files: Store on mobile device or on a removable storage medium
A click performs the action. No confirmation, no "save". You clic on a setting, the setting changes. You select a filter in a drop down list, it filters. That's the user expectation. o Don't overload your menu. The contextual menu is used very often, it has to be used very quickly. If you have a lot of stuff, create one entry for a submenu named "more" like Google does. * It's a little screen, avoid putting to much information on it. Meaning only what the user will mostly use 90 % of the time. The rest of the data or actions must be contextual : long clic, menu, gestures, timers, etc. Yes, your user will not find all the feature immidiatly. He will probably even discover some of them monthes after using your app for the first time. But it worked for Apple :-) * Design for interruption. It's a phone : it gets on and off, calls income, music is played, etc. Your app will be open and shut a 1000 times so cut loading, save the right states and ensure congruency. * Design for big fingers. You don't have a stylus, and people have very different size of fingers. Design for the biggest so they won't get mad, while ordinary people will just feel more comfortable. In general, I don't think Google has a different mindset than Apple when it comes to design so I doubt there will ever be as much official material. No real design guidelines, just clutter about coding, no concrete hints how apps have to look like what you are expecting when you read "UI Design". OK - Android is a very open system for many different hardware types - maybe a little bit hard to give advices that fit for all systems - but not impossible