What
is Android?
Android
is a software stack for mobile devices that includes an operating
system, middleware and key applications.
Explain
the Architecture of android ?
Top
-> Applications (Contacts, Browser, Phone, etc)
Below
Applications -> Application Framework(Activity Manager, Window
Manager, Content Providers, View System, Package manager,
Telephony
manager, Resource, Notification, Location managers)
Below Application
Framework -> System Libraries(Like Sqlite, webkit, SSL, OpenGL,
Media Framework etc) & Android Runtime( Core Libraries and DVM)
Atlast Last ->
Linux Kernel (which composed of drivers like display, camera etc.)
Describe
the APK format.
The
APK file is compressed the AndroidManifest.xml file, application code
(.dex files), resource files, and other files.
A project is
compiled into a single .apk file.
What is
an action?
A
description of something that an Intent sender desires.
What is
an activity?
A
single screen in an application, with supporting Java code.
An
activity presents a visual user interface for one focused endeavor
the user can undertake.
For example, an activity might present a
list of menu items users can choose from or it might display
photographs along with their captions.
Each one is implemented as
a subclass of the Activity base class.
What is a
service?
A
service doesn’t have a visual user interface, but rather runs in
the background for an indefinite period of time.
For example, a
service might play background music as the user attends to other
matters, or it might fetch data over the network or
calculate
something and provide the result to activities that need
it.
Each service extends the Service base class.
What is a
Broadcast receivers?
A
broadcast receiver is a component that does nothing but receive and
react to broadcast announcements.
For example, announcements that
the timezone has changed, that the battery is low or that the user
changed a language preference.
All receivers extend the
BroadcastReceiver base class.
Broadcast receivers do not display a
user interface. However, they may start an activity in response to
the information they receive,
or they may use the
NotificationManager to alert the user like(flashing the backlight,
vibrating the device, playing a sound)
What is a
content provider?
A
content provider makes a specific set of the application’s data
available to other applications.The content provider extends the
ContentProvider
base class to implement a standard set of methods
that enable other applications to retrieve and store data of the type
it controls.
However, applications do not call these methods
directly. Rather they use a ContentResolver object and call its
methods instead.
What is
intent?
A
class (Intent) describes what a caller desires to do. The caller
sends this intent to Android’s intent resolver, which finds the
most suitable activity for the intent.
How is
nine-patch image different from a regular bitmap?
It
is a resizable bitmap resource that can be used for backgrounds or
other images on the device. The NinePatch class permits drawing a
bitmap in nine sections. The four corners are unscaled; the four
edges are scaled in one axis, and the middle is scaled in both axes.
What
languages does Android support for application development?
Android
applications are written using the Java programming language.
What is a
resource?
A
user-supplied XML, bitmap, or other file, injected into the
application build process, which can later be loaded from code.
What
Virtual Machine Android runs on?
Dalvik
virtual machine
What are
the features of Android?
Components
can be reused and replaced by the application framework.
Optimized
DVM for mobile devices
SQLite enables to store the data in a
structured manner.
Supports GSM telephone and Bluetooth, WiFi, 3G
and EDGE technologies
The development is a combination of a device
emulator, debugging tools, memory profiling and plug-in for Eclipse
IDE.
Why to
use Android?
Android
is useful because:
It is simple and powerful SDK
Licensing,
Distribution or Development fee is not required
Easy to Import
third party Java library
Supporting platforms are – Linux, Mac
Os, Windows
Android
Glossary
.apk
extension
The
extension for an Android package file, which typically contains all
of the files related to a single Android application. The file itself
is a compressed collection of an AndroidManifest.xml file,
application code (.dex files), resource files, and other files. A
project is compiled into a single .apk file.
.dex
extension
Android
programs are compiled into .dex (Dalvik Executable) files, which are
in turn zipped into a single .apk file on the device. .dex files can
be created by automatically translating compiled applications written
in the Java programming language.
Action
A
description of something that an Intent sender wants done. An action
is a string value assigned to an Intent. Action strings can be
defined by Android or by a third-party developer. For example,
android.intent.action.VIEW for a Web URL, or
com.example.rumbler.SHAKE_PHONE for a custom application to vibrate
the phone.
Activity
A
single screen in an application, with supporting Java code, derived
from the Activity class.
adb
Android
Debug Bridge, a command-line debugging application shipped with the
SDK. It provides tools to browse the device, copy tools on the
device, and forward ports for debugging.
Application
A
collection of one or more activities, services, listeners, and intent
receivers. An application has a single manifest, and is compiled into
a single .apk file on the device.
Content
Provider
A
class built on ContentProvider that handles content query strings of
a specific format to return data in a specific format.
Content
URI
A
type of URI.
Dalvik
The
name of Android's virtual machine. The Dalvik VM is an
interpreter-only virtual machine that executes files in the Dalvik
Executable (.dex) format, a format that is optimized for efficient
storage and memory-mappable execution. The virtual machine is
register-based, and it can run classes compiled by a Java language
compiler that have been transformed into its native format using the
included "dx" tool. The VM runs on top of Posix-compliant
operating systems, which it relies on for underlying functionality
(such as threading and low level memory management). The Dalvik core
class library is intended to provide a familiar development base for
those used to programming with Java Standard Edition, but it is
geared specifically to the needs of a small mobile device.
DDMS
Dalvik
Debug Monitor Service, a GUI debugging application shipped with the
SDK. It provides screen capture, log dump, and process examination
capabilities.
Drawable
A
compiled visual resource that can be used as a background, title, or
other part of the screen. It is compiled into an
android.graphics.drawable subclass.
Intent
A
class (Intent) that contains several fields describing what a caller
would like to do. The caller sends this intent to Android's intent
resolver, which looks through the intent filters of all applications
to find the activity most suited to handle this intent. Intent fields
include the desired action, a category, a data string, the MIME type
of the data, a handling class, and other restrictions.
Intent
Filter
Activities
and intent receivers include one or more filters in their manifest to
describe what kinds of intents or messages they can handle or want to
receive. An intent filter lists a set of requirements, such as data
type, action requested, and URI format, that the Intent or message
must fulfill. For Activities, Android searches for the Activity with
the most closely matching valid match between the Intent and the
activity filter. For messages, Android will forward a message to all
receivers with matching intent filters.
Intent
Receiver
An
application class that listens for messages broadcast by calling
Context.broadcastIntent().
Layout
resource
An
XML file that describes the layout of an Activity screen.
Manifest
An
XML file associated with each Application that describes the various
activies, intent filters, services, and other items that it exposes.
Nine-patch
/ 9-patch / Ninepatch image
A
resizeable bitmap resource that can be used for backgrounds or other
images on the device.
Resource
A
user-supplied XML, bitmap, or other file, entered into an application
build process, which can later be loaded from code. Android can
accept resources of many types. Application-defined resources should
be stored in the res/
subfolders.
Service
A
class that runs in the background to perform various persistent
actions, such as playing music or monitoring network activity.
Theme
A
set of properties (text size, background color, and so on) bundled
together to define various default display settings. Android provides
a few standard themes, listed in R.style (starting with "Theme_").
URIs
Android
uses URI strings both for requesting data (e.g., a list of contacts)
and for requesting actions (e.g., opening a Web page in a browser).
Both are valid URI strings, but have different values. All requests
for data must start with the string "content://". Action
strings are valid URIs that can be handled appropriately by
applications on the device; for example, a URI starting with
"http://" will be handled by the browser.
What’s the difference between file, class and activity in android?
File – It is a block of arbitrary information, or resource for storing information. It can be of any type.
Class – Its a compiled form of .Java file . Android finally used this .class files to produce an executable apk
Activity – An activity is the equivalent of a Frame/Window in GUI toolkits. It is not a file or a file type it is just a class that can be extended in Android for loading UI elements on view.
What is a Sticky Intent?
sendStickyBroadcast() performs a sendBroadcast (Intent) that is “sticky,” i.e. the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver (BroadcastReceiver, IntentFilter). In all other ways, this behaves the same as sendBroadcast(Intent).
One example of a sticky broadcast sent via the operating system is ACTION_BATTERY_CHANGED. When you call registerReceiver() for that action — even with a null BroadcastReceiver — you get the Intent that was last broadcast for that action. Hence, you can use this to find the state of the battery without necessarily registering for all future state changes in the battery.
Does Android support the Bluetooth serial port profile?
Yes.
Can an application be started on powerup?
Yes.
How to Remove Desktop icons and Widgets ?
A. Press and Hold the icon or widget. The phone will vibrate and on the bottom of the phone you will see anoption to remove. While still holding the icon or widget drag it to the remove button. Once remove turns red drop the item and it is gone
Describe a real time scenario where android can be used?
Imagine a situation that you are in a country where no one understands the language you speak and you can not read or write. However, you have mobile phone with you.
With a mobile phone with android, the Google translator translates the data of one language into another language by using XMPP to transmit data. You can type the message in English and select the language which is understood by the citizens of the country in order to reach the message to the citizens.
How to select more than one option from list in android xml file?
Give an example.
Specify android id, layout height and width as depicted in the following example.
What languages does Android support for application development?
Android applications are written using the Java programming language.
Describe Android Application Architecture.
Android Application Architecture has the following components:
• Services – like Network Operation
• Intent – To perform inter-communication between activities or services
• Resource Externalization – such as strings and graphics
• Notification signaling users – light, sound, icon, notification, dialog etc.
• Content Providers – They share data between applications
Common Tricky questions
Remember that the GUI layer doesn’t request data directly from the web; data is always loaded from a local database.
The service layer periodically updates the local database.
What is the risk in blocking the Main thread when performing a lengthy operation such as web access or heavy computation? Application_Not_Responding exception will be thrown which will crashandrestarttheapplication.
Why is List View not recommended to have active components? Clicking on the active text box will pop up the software keyboard but this will resize the list, removing focus from the clicked element.
Open Source
What is the Android Open Source Project?
We use the phrase “Android Open Source Project” or “AOSP” to refer to the people, the processes, and the source code that make up Android.
The people oversee the project and develop the actual source code. The processes refer to the tools and procedures we use to manage the development of the software. The net result is the source code that you can use to build cell phone and other devices.
Why did we open the Android source code?
Google started the Android project in response to our own experiences launching mobile apps. We wanted to make sure that there would always be an open platform available for carriers, OEMs, and developers to use to make their innovative ideas a reality. We also wanted to make sure that there was no central point of failure, so that no single industry player could restrict or control the innovations of any other. The single most important goal of the Android Open-Source Project (AOSP) is to make sure that the open-source Android software is implemented as widely and compatibly as possible, to everyone’s benefit.
You can find more information on this topic at our Project Philosophy page.
What kind of open-source project is Android?
Google oversees the development of the core Android open-source platform, and works to create robust developer and user communities. For the most part the Android source code is licensed under the permissive Apache Software License 2.0, rather than a “copyleft” license. The main reason for this is because our most important goal is widespread adoption of the software, and we believe that the ASL2.0 license best achieves that goal.
You can find more information on this topic at our Project Philosophy and Licensing pages.
Why is Google in charge of Android?
Launching a software platform is complex. Openness is vital to the long-term success of a platform, since openness is required to attract investment from developers and ensure a level playing field. However, the platform itself must also be a compelling product to end users.
That’s why Google has committed the professional engineering resources necessary to ensure that Android is a fully competitive software platform. Google treats the Android project as a full-scale product development operation, and strikes the business deals necessary to make sure that great devices running Android actually make it to market.
By making sure that Android is a success with end users, we help ensure the vitality of Android as a platform, and as an open-source project. After all, who wants the source code to an unsuccessful product?
Google’s goal is to ensure a successful ecosystem around Android, but no one is required to participate, of course. We opened the Android source code so anyone can modify and distribute the software to meet their own needs.
What is Google’s overall strategy for Android product development?
We focus on releasing great devices into a competitive marketplace, and then incorporate the innovations and enhancements we made into the core platform, as the next version.
In practice, this means that the Android engineering team typically focuses on a small number of “flagship” devices, and develops the next version of the Android software to support those product launches. These flagship devices absorb much of the product risk and blaze a trail for the broad OEM community, who follow up with many more devices that take advantage of the new features. In this way, we make sure that the Android platform evolves according to the actual needs of real-world devices.
How is the Android software developed?
Each platform version of Android (such as 1.5, 1.6, and so on) has a corresponding branch in the open-source tree. At any given moment, the most recent such branch will be considered the “current stable” branch version. This current stable branch is the one that manufacturers port to their devices. This branch is kept suitable for release at all times.
Simultaneously, there is also a “current experimental” branch, which is where speculative contributions, such as large next-generation features, are developed. Bug fixes and other contributions can be included in the current stable branch from the experimental branch as appropriate.
Finally, Google works on the next version of the Android platform in tandem with developing a flagship device. This branch pulls in changes from the experimental and stable branches as appropriate.
You can find more information on this topic at our Branches and Releases.
What is a Sticky Intent?
sendStickyBroadcast() performs a sendBroadcast(Intent) known as sticky, i.e. the Intent you are sending stays around after the broadcast is complete, so that others can quickly retrieve that data through the return value of registerReceiver(BroadcastReceiver, IntentFilter). In all other ways, this behaves the same as sendBroadcast(Intent). One example of a sticky broadcast sent via the operating system is ACTION_BATTERY_CHANGED. When you call registerReceiver() for that action -- even with a null BroadcastReceiver -- you get the Intent that was last broadcast for that action. Hence, you can use this to find the state of the battery without necessarily registering for all future state changes in the battery
.
How the nine-patch Image different from a regular bitmap? Alternatively, what is the difference between nine-patch Image vs regular Bitmap Image?
It is one of a resizable bitmap resource which is being used as backgrounds or other images on the device. The NinePatch class allows drawing a bitmap in nine sections. The four corners are unscaled; the middle of the image is scaled in both axes, the four edges are scaled into one axis.
What is a resource?
A user defined JSON, XML, bitmap, or other file, injected into the application build process, which can later be loaded from code.
How will you record a phone call in Android? or How to handle an Audio Stream for a call in Android?
Permission.PROCESS_OUTGOING_CALLS: Will Allow an application to monitor, modify, or abort outgoing calls. So using that permission we can monitor the Phone calls.
Does Android support the Bluetooth serial port profile?
Yes.
Can an application be started on powerup?
Yes.
Why are parts of Android developed in private?
It typically takes over a year to bring a device to market, but of course device manufacturers want to ship the latest software they can. Developers, meanwhile, don’t want to have to constantly track new versions of the platform when writing apps. Both groups experience a tension between shipping products, and not wanting to fall behind.
To address this, some parts of the next version of Android including the core platform APIs are developed in a private branch. These APIs constitute the next version of Android. Our aim is to focus attention on the current stable version of the Android source code, while we create the next version of the platform as driven by flagship Android devices. This allows developers and OEMs to focus on a single version without having to track unfinished future work just to keep up. Other parts of the Android system that aren’t related to application compatibility are developed in the open, however. It’s our intention to move more of these parts to open development over time.