[Galaxy 3 Android Development] Dharam_Maniar:
Android Basics

1) Android Basics

​

Introduction:

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. Google Inc. purchased the initial developer of the software, Android Inc., in 2005. Android's mobile operating system is based on the Linux kernel. Google and other members of the Open Handset Alliance collaborated on Android's development and release. The Android Open Source Project (AOSP) is tasked with the maintenance and further development of Android. The Android operating system is currently the world's best-selling Smartphone platform.:cool:

Android has a large community of developers writing applications ("apps") that extend the functionality of the devices. There are currently over 200,000 apps:eek: available for Android. Android Market is the online app store run by Google, though apps can also be downloaded from third-party sites. Developers write primarily in the Java language, controlling the device via Google-developed Java libraries.

The unveiling of the Android distribution on 5 November 2007 was announced with the founding of the Open Handset Alliance, a consortium of 80 hardware, software, and telecom companies devoted to advancing open standards for mobile devices. Google released most of the Android code under the Apache License, a free software and open source license.

The Android open-source software stack consists of Java applications running on a Java-based, object-oriented application framework on top of Java core libraries running on a Dalvik virtual machine featuring JIT compilation. Libraries written in C include the surface manager, OpenCore media framework, SQLite relational database management system, OpenGL ES 2.0 3D graphics API, WebKit layout engine, SGL graphics engine, SSL, and Bionic libc. The Android operating system, including the Linux kernel, consists of roughly 12 million lines of code including 3 million lines of XML, 2.8 million lines of C, 2.1 million lines of Java, and 1.75 million lines of C++.:eek::eek::eek:

​

Version history

2.1 Eclair

Changelog:

Sync: Expanded Account sync. Multiple accounts can be added to a device for email and contact synchronization

Email: Exchange support, Combined inbox to browse email from multiple accounts in one page.

Bluetooth: 2.1 support

Contacts: Tap a contact photo and select to call, SMS, or email the person.

Messaging: Search all saved SMS and MMS messages. Auto delete oldest messages in a conversation when a defined limit is reached.

Camera: Flash support, Digital zoom, Scene mode, White balance, Color effect, Macro focus

Virtual keyboard: Improved typing speed, smarter dictionary learns from word usage and includes contact names as suggestions.

Browser: Refreshed UI, Bookmark thumbnails, Double-tap zoom, Support for HTML5

Calendar: Agenda view enhanced, Attending status for each invitee, Invite new guests to events.

System: Optimized hardware speed, Revamped UI

Display: Support for more screen sizes and resolutions, Better contrast ratio

Maps: Improved Google Maps 3.1.2

MotionEvent class enhanced to track multi-touch events

Live Wallpapers: Home screen background images can be animated to show movement

2.2 Froyo

Changelog:

System: Speed, memory, and performance optimizations

Additional application speed improvements courtesy of JIT implementation

Integration of Chrome's V8 JavaScript engine into the Browser application

Improved Microsoft Exchange support (security policies, auto-discovery, GAL look-up, calendar synchronization, remote wipe)

Improved application launcher with shortcuts to Phone and Browser applications

USB tethering and Wi-Fi hotspot functionality

Added an option to disable data access over mobile network

Updated Market application with batch and automatic update features

Quick switching between multiple keyboard languages and their dictionaries

Voice dialing and contact sharing over Bluetooth

Support for numeric and alphanumeric passwords

Support for file upload fields in the Browser application

Support for installing applications to the expandable memory

Adobe Flash support

Support for extra high DPI screens (320 dpi), such as 4" 720p

2.3 Gingerbread

Changelog:

System: Updated user interface design for simplicity and speed

Display: Support for extra-large screen sizes and resolutions (WXGA and higher)

Internet calling: Native support for SIP VoIP telephony

Virtual Keyboard: Faster, more intuitive text input, improved accuracy, better suggested text. Voice input mode

Copy/Paste: Enhanced. Select a word by press-hold, copy, and paste.

Near Field Communication lets the user read an NFC tag embedded in a poster, sticker, or advertisement.

New audio effects such as reverb, equalization, headphone virtualization, and bass boost

System: Improved power management with a more active role in managing apps that are keeping the device awake for too long.

Download Manager gives the user easy access to any file downloaded from the browser, email, or another application.

Camera: Access multiple cameras on the device, including a front-facing camera, if available.

Media: Support for WebM/VP8 video playback, and AAC audio encoding

System: Enhanced support for native code development

Audio, graphical, and input enhancements for game developers

Concurrent garbage collection for increased performance

Native support for more sensors (such as gyroscopes and barometers)

Switched from YAFFS to ext4 on newer devices

Android Architecture

​

FEATURES OF ANDROID

Handset layouts	The platform is adaptable to larger, VGA, 2D graphics library, 3D graphics library based on OpenGL ES 2.0 specifications, and traditional smartphone layouts.

Storage	SQLite, a lightweight relational database, is used for data storage purposes

Connectivity	Android supports connectivity technologies including GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi (no connections through Proxy server and no Ad hoc wireless network), LTE, NFC and WiMAX.

Messaging	SMS and MMS are available forms of messaging, including threaded text messaging and now Android Cloud To Device Messaging Framework(C2DM) is also a part of Android Push Messaging service.

Multiple Language Support	Multiple languages are available on Android. The number of languages more than doubled for the platform 2.3 Gingerbread. Android lacks font rendering of several languages even after official announcements[citation needed] of added support (e.g. Hindi).

Web browser	The web browser available in Android is based on the open-source WebKit layout engine, coupled with Chrome's V8 JavaScript engine. The browser scores a 93/100 on the Acid3 Test.

Java support	While most Android applications are written in Java, there is no Java Virtual Machine in the platform and Java byte code is not executed. Java classes are compiled into Dalvik executables and run on the Dalvik virtual machine. Dalvik is a specialized virtual machine designed specifically for Android and optimized for battery-powered mobile devices with limited memory and CPU. J2ME support can be provided via third-party applications.

Media support	Android supports the following audio/video/still media formats: WebM, H.263, H.264 (in 3GP or MP4 container), MPEG-4 SP, AMR, AMR-WB (in 3GP container), AAC, HE-AAC (in MP4 or 3GP container), MP3, MIDI, Ogg Vorbis, FLAC, WAV, JPEG, PNG, GIF (though earlier versions do not support animated GIFs, BMP.

Streaming media support	RTP/RTSP streaming (3GPP PSS, ISMA), HTML progressive download (HTML5 <video> tag). Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming are supported by the Flash plugin. Apple HTTP Live Streaming is supported by RealPlayer for Mobile, and by the operating system in Android 3.0 (Honeycomb). Microsoft Smooth Streaming is planned to be supported through the awaited port of Silverlight plugin to Android.

Additional hardware support	Android can use video/still cameras, touchscreens, GPS, accelerometers, gyroscopes, magnetometers, dedicated gaming controls, proximity and pressure sensors, thermometers, accelerated 2D bit blits (with hardware orientation, scaling, pixel format conversion) and accelerated 3D graphics.

Multi-touch	Android has native support for multi-touch which was initially made available in handsets such as the HTC Hero. The feature was originally disabled at the kernel level (possibly to avoid infringing Apple's patents on touch-screen technology at the time). Google has since released an update for the Nexus One and the Motorola Droid which enables multi-touch natively.

Bluetooth	Supports A2DP, AVRCP, sending files (OPP), accessing the phone book (PBAP), voice dialing and sending contacts between phones. Keyboard, mouse and joystick (HID) support is available through manufacturer customizations and third-party applications. Full HID support is planned for Android 3.0 (Honeycomb).

Video calling	Android does not provide native video calling support, but some handsets have a customized version of the operating system that support it, either via the UMTS network (like the Samsung Galaxy S) or over IP. Video calling through Google Talk is available in Android 2.3.4 and later.

Multitasking	Multitasking of applications is available.

Voice based features	Google search through voice has been available since initial release. Voice actions for calling, texting, navigation, etc. are supported on Android 2.2 onwards.

Tethering	Android supports tethering, which allows a phone to be used as a wireless/wired hotspot. Prior to Android 2.2 this was supported by third-party applications or manufacturer customizations.

Screen Capture	Android does not currently support screenshot capture. This is supported by manufacturer and third-party customizations.