Write : Lars Vogel
1. What is Android?
Android is an operating system based on
Linux
with a
Java
programming interface. It provides tools, e.g. a compiler, debugger
and a device emulator as well as its own Java Virtual machine
(Dalvik
Virtual Machine - DVM).
Android is officially guided by the Open Handset Alliance but in reality Google leads the project.
Android supports 2-D and 3-D graphics using the OpenGL libraries and supports data storage in a SQLite database.
Every Android applications runs in its own process and under its own user id which is generated automatically by the Android system during deployment. Therefore the application is isolated from other running applications and a misbehaving application cannot easily harm other Android applications.
Android is officially guided by the Open Handset Alliance but in reality Google leads the project.
Android supports 2-D and 3-D graphics using the OpenGL libraries and supports data storage in a SQLite database.
Every Android applications runs in its own process and under its own user id which is generated automatically by the Android system during deployment. Therefore the application is isolated from other running applications and a misbehaving application cannot easily harm other Android applications.
An Android application consists out of the following parts:
Other Android components are Live Folders and Android Live Wallpapers. Live Folders display data on the homescreen without launching the corresponding application.
-
Activity
- represents the presentation layer of an Android application, e.g. a screen which the user sees. An Android application can have several activities and it can be switched between them during runtime of the application. -
Views
- the User interface of an Activities is built with widget classes which inherit fromandroid.view.View
. The layout of the views is managed byandroid.view.ViewGroups
. Views often have attributes which can be used to change their appearance and behavior. -
Services
- perform background tasks without providing an UI. They can notify the user via the notification framework in Android. -
ContentProvider
- provides data to applications, via a content provider your application can share data with other applications. Android contains a SQLite DB which can serve as data provider -
Intents
- are asynchronous messages which allow the application to request functionality from other services or activities. An application can call directly a service or activity (explicit intent) or ask the Android system for registered services and applications for an intent (implicit intents). For example the application could ask via an intent for a contact application. Applications register themselves to an intent via anIntentFilter
.Intents
are a powerful concept as they allow the creation of loosely coupled applications. BroadcastReceiver
- receives system messages and implicit intents, can be used to react to changed conditions in the system. An application can register as aBroadcastReceiver
for certain events and can be started if such an event occurs.-
Widgets
- interactive components primary used on the Android homescreen to display certain data and to allow the user to have quick access the the information
Other Android components are Live Folders and Android Live Wallpapers. Live Folders display data on the homescreen without launching the corresponding application.
Android uses a special virtual machine, e.g. the Dalvik Virtual
Machine. Dalvik uses
special
bytecode. Therefore you cannot run
standard Java bytecode on
Android.
Android provides a tool
dx
which
allows to convert Java
Class
files
into dex
(Dalvik Executable)
files.
Android applications
are
packed into an .apk
(Android Package)
file by
the program aapt
(Android Asset Packaging Tool) To
simplify
development Google provides the Android Development Tools
(ADT) for Eclipse. The ADT performs automatically the conversion from class to dex
files and creates the apk during deployment.
Android defines certain permissions for certain tasks. For
example if the application wants to access the Internet it must
define
in its configuration file that it would like to use the related
permission. During the installation of an Android application the
user receives a screen in which he needs to confirm the required
permissions of the application.
An Android application is described in the file
The
The tag
The "uses-sdk" part of the "AndroidManifest.xml" defines the minimal SDK version your application is valid for. This will prevent your application being installed on devices with older SDK versions.
AndroidManifest.xml
. This file must declare all Activities
,
Services
, BroadcastReceivers
and ContentProvider
of the
application. It must also contain the
required permissions for the
application. For example if
the
application requires network access it
must be specified here.
AndroidManifest.xml
can be
thought as the
deployment descriptor for
an Android application.
The
package
attribute defines the base package for the
following Java elements. It
also must be unique as the Android
Marketplace only allows application
for a specific package once.
Therefore a good habit is to use your
reverse domain name as a
package
to avoid collisions with other
developers.
android:versionName
and
android:versionCode
specify the
version of your application.
versionName
is what the user sees and
can be any string.
versionCode
must be an integer and the Android
Market uses this to determine if
you provided a newer version to
trigger the update on devices which
have your application installed.
You typically start with "1" and
increase this value by one if you
roll-out a new version of your
application.
The tag
defines an
Activity
, in this
example pointing to the
class
"de.vogella.android.temperature.Convert". An intent filter is
registered for this class which defines that this
Activity
is
started
once
the application starts (action
android:name="android.intent.action.MAIN"
). The category definition
category android:name="android.intent.category.LAUNCHER"
defines
that this application is added to the application directory on
the
Android device. The
@string/app_name
value refer to resource files which contain
the actual values. This
makes it easy to provide different
resources,
e.g. strings, colors,
icons, for different devices and makes it easy
to translate
applications.
The "uses-sdk" part of the "AndroidManifest.xml" defines the minimal SDK version your application is valid for. This will prevent your application being installed on devices with older SDK versions.
The directory
If you create a new resource, the corresponding reference is automatically created in
While the directory
gen
in an Android project contains generated
values.
R.java
is a
generated class which contains references to
resources of the
res
folder in the project. These resources are
defined in the
res
directory and can
be values, menus, layouts,
icons
or pictures or
animations. For example a resource can be an
image or an
XML file which
defines strings.
If you create a new resource, the corresponding reference is automatically created in
R.java
. The references are static
int values,
the Android
system
provides
methods to access the
corresponding
resource. For
example to
access a
String with the
reference id
R.string.yourString
use the
method
getString(R.string.yourString));
. R.java is automatically maintained by the Eclipse development
environment, manual changes are not necessary.
While the directory
res
contains structured values which
are
known to the
Android
platform the
directory
assets
can be used
to
store any kind
of
data. In Java you can access this data
via the
AssetsManager
and the
method
getAssets()
.
In your XML files, e.g. your layout files you can refer to
other
resources via the
@
sign. For example if you want to refer to a
color you defined as
resources you can refer to it via
@color/your_id
or if you have defined a "hello" string as resource you can access it
via
@string/hello
.
The user interface for
UI elements are based on the class
A layout can be defined via Java code or via XML. You typically uses Java code to generate the layout if you don't know the content until runtime; for example if your layout depends on content which you read from the Internet.
XML based layouts are defined via a resource file in the folder
Defining layouts via XML is usually the preferred way as this separates the programming logic from the layout definition. It also allows the definition of different layouts for different devices. You can also mix both approaches.
Activities
is defined via layouts.
At
runtime, layouts are instances of
android.view.ViewGroups
. The
layout defines the UI elements, their properties and their
arrangement.
UI elements are based on the class
android.view.View
.
ViewGroup
is a
subclass of the class
View
and a layout can contain
UI
components
(
Views
) or other layouts
(
ViewGroups
). You should not
nestle
ViewGroups
too deeply as this has a negative
impact on
performance.
A layout can be defined via Java code or via XML. You typically uses Java code to generate the layout if you don't know the content until runtime; for example if your layout depends on content which you read from the Internet.
XML based layouts are defined via a resource file in the folder
/res/layout
. This file specifies the
ViewGroups
,
Views
,
their
relationship and
their attributes for a specific layout. If a UI
element needs to be
accessed via Java code you have to give the UI
element an unique id
via the
android:id
attribute. To assign a new
id to an UI element
use
@+id/yourvalue
. By conversion this will
create and assign a new
id
yourvalue
to the corresponding UI
element. In your Java code you
can later access
these UI elements via
the method
findViewById(R.id.yourvalue)
.
Defining layouts via XML is usually the preferred way as this separates the programming logic from the layout definition. It also allows the definition of different layouts for different devices. You can also mix both approaches.
The operating system controls the life cycle of your
application. At
any time the Android system may stop or destroy your
application, e.g.
because of an incoming call. The Android system
defines a life cycle
for activities via pre-defined methods. The most important methods
are:
The activity will also be restarted if a so called "configuration change" happens. A configuration change for example happens if the user changes the orientation of the device (vertical or horizontal). The activity is in this case restarted to enable the Android platform to load different resources for these configuration, e.g. layouts for vertical or horizontal mode. In the emulator you can simulate the change of the orientation via CNTR+F11.
You can avoid a restart of your application for certain configuration changes via the configChanges attribute on your activity definition in your
-
onSaveInstanceState()
- called if the activity is stopped. Used to save data so that the activity can restore its states if re-started -
onPause()
- always called if the Activity ends, can be used to release resource or save data -
onResume()
- called if the Activity is re-started, can be used to initialize fields
The activity will also be restarted if a so called "configuration change" happens. A configuration change for example happens if the user changes the orientation of the device (vertical or horizontal). The activity is in this case restarted to enable the Android platform to load different resources for these configuration, e.g. layouts for vertical or horizontal mode. In the emulator you can simulate the change of the orientation via CNTR+F11.
You can avoid a restart of your application for certain configuration changes via the configChanges attribute on your activity definition in your
AndroidManifest.xml
. The following
activity will
not be restarted in case of orientation
changes or
position of the
physical keyboard (hidden / visible).
The class
android.content.Context
provides the connections to
the
Android system. It is the interface to
global information about
the
application environment. Context also
provides access to Android
Services
, e.g. theLocation Service. As Activities and Services extend the
class
Context
you
can directly
access the context via
this
.
The following assume that you have already Eclipse installed. For
details please
see
Eclipse Tutorial
.
Use the
Eclipse update manager
to install all available components
for
the
Android Development
Tools
(ADT) from the URL
https://dl-ssl.google.com/android/eclipse/. If you are not familiar with the Eclipse update manager the usage
is described in
Eclipse update manager.
After the new Android development components are installed you will be prompted to install the Android SDK. You can do follow the following wizard or go to the next section to learn how to do it manually.
After the new Android development components are installed you will be prompted to install the Android SDK. You can do follow the following wizard or go to the next section to learn how to do it manually.
The previous step downloads the Android SDK automatically for you.
You can also download the Android SDK manuallz from the Android
homepage under
Android SDK download. The download contains a zip file which you can extract to any
place
in
your file system, e.g. I placed it under
"c:\android-sdk-windows".
Avoid
using spaces in the path name otherwise you may experience
problems
later.
You also have to define the location of the Android SDK in the Eclipse Preferences. In Eclipse open the Preferences dialog via Windows → Preferences. Select Android and enter the installation path of the Android SDK.
You also have to define the location of the Android SDK in the Eclipse Preferences. In Eclipse open the Preferences dialog via Windows → Preferences. Select Android and enter the installation path of the Android SDK.
The Android SDK Manager allows you to install specific versions of
Android.
Select
Window → Android SDK Manager
from the Eclipse menu.
The dialog allows you to install new package and also allow you to delete them. Select "Available packages" and open the "Third Party Add-ons". Select the Google API 14 (Android 4.0) version of the SDK and press "Install".
Press the "Install" button and confirm the license for all package. After the installation restart Eclipse.
The dialog allows you to install new package and also allow you to delete them. Select "Available packages" and open the "Third Party Add-ons". Select the Google API 14 (Android 4.0) version of the SDK and press "Install".
Press the "Install" button and confirm the license for all package. After the installation restart Eclipse.
The following step is optional.
During Android development it is very useful to have the Android source code available as Android uses a lot of defaults.
Haris Peco maintains plugins which provides access to the Android Source code code. Use the Eclipse update manager to install the Android Source plugin from the following update site: "http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update".
More details can be found on the project website.
During Android development it is very useful to have the Android source code available as Android uses a lot of defaults.
Haris Peco maintains plugins which provides access to the Android Source code code. Use the Eclipse update manager to install the Android Source plugin from the following update site: "http://adt-addons.googlecode.com/svn/trunk/source/com.android.ide.eclipse.source.update".
More details can be found on the project website.
The Android tools include an emulator. This emulator behaves
like
a real Android device in most cases and allows you to test your
application without having a real device. You can emulate one or
several devices with different configurations.
Each
configuration is
defined via an "Android
Virtual Device" (AVD).
To define an AVD open the "AVD Manager" via Windows → AVD Manager and press "New".
Enter the following.
We can also select the box "Enabled" for Snapshots. This will make the second start of the virtual device much faster.
At the end press the button "Create AVD".This will create the device and display it under the "Virtual devices". To test if your setup is correct, select your device and press "Start".
After (a long time) your device should be started.
To define an AVD open the "AVD Manager" via Windows → AVD Manager and press "New".
Enter the following.
We can also select the box "Enabled" for Snapshots. This will make the second start of the virtual device much faster.
At the end press the button "Create AVD".This will create the device and display it under the "Virtual devices". To test if your setup is correct, select your device and press "Start".
After (a long time) your device should be started.
Obviously you can use the emulator via the keyboard on the right
side of the emulator. But there are also some nice shortcuts which
are
useful.
Alt+Enter maximizes the emulator. Nice for demos.
Ctrl+F11 changes the orientation of the emulator.
F8 turns network on / off.
Alt+Enter maximizes the emulator. Nice for demos.
Ctrl+F11 changes the orientation of the emulator.
F8 turns network on / off.
Try to use a smaller resolution for your emulator as for example
HVGA. The emulator gets slower the more pixels its needs to render as
it is using software rendering.
Also if you have sufficient memory on your computer, add at least 1 GB of memory to your emulator. This is the value "Device ram size" during the creation of the AVD.
Also set the flag "Enabled" for Snapshots. This will save the state of the emulator and let it start much faster.
Also if you have sufficient memory on your computer, add at least 1 GB of memory to your emulator. This is the value "Device ram size" during the creation of the AVD.
Also set the flag "Enabled" for Snapshots. This will save the state of the emulator and let it start much faster.
Things are not always working as they should. This section gives
an overview over typical problems and how to solve them.
Several users report
that get the following errors:
To solve any of these errors, go to the project menu and select Project -> Clean.
- Project ... is missing required source folder: 'gen'
- The project could not be built until build path errors are resolved.
- Unable to open class file R.java.
To solve any of these errors, go to the project menu and select Project -> Clean.
The communication with the emulator or your Android device
might have problems. This communication is handle by the Android
Debug Bridge (adb).
Eclipse allows to reset the adb in case this causes problems. Select therefore the DDMS perspective via Window → Open Perspective → Other → DDMS
To restart the adb, select the "Reset adb" in the Device
Eclipse allows to reset the adb in case this causes problems. Select therefore the DDMS perspective via Window → Open Perspective → Other → DDMS
To restart the adb, select the "Reset adb" in the Device
View
.
The LogCat view shows you the log message of your Android
device and help you analyzing problems. For example Java exceptions
in your program would be shown here. To open this view, select
"Window -> Show View -> Other -> Android -> LogCat" from the menu.
If your emulator does not start, make sure that the androd-sdk
version is in a path without any spaces in the path name.
The @override annotation was introduced in Java 1.6. If you
receive an error message for @override change the Java compiler
level
to Java 1.6 via right-mouse click on the project -> Properties
->
Java
Compiler -> Compiler compliance level and set it to "1.6".
Java requires that the classes which are not part of the
standard Java Language are either fully qualified or declared via
imports. In your editor use the click mouse click, select "Source->
Organize Imports" if you see error message with "XX cannot be
resolved
to a variable".
This app is also available on the Android Marketplace. Search
for "vogella" for find this example.
Select File → New → Other → Android → Android Project and create the Android project "de.vogella.android.temperature". Enter the following.
Press "Finish". This should create the following directory structure.
While "res" contains structured values which are known to the Android platform the directory "assets" can be used to store any kind of data. In Java you can access this data via the AssetsManager and the method getAssets().
Select File → New → Other → Android → Android Project and create the Android project "de.vogella.android.temperature". Enter the following.
Press "Finish". This should create the following directory structure.
While "res" contains structured values which are known to the Android platform the directory "assets" can be used to store any kind of data. In Java you can access this data via the AssetsManager and the method getAssets().
The Android SDK allows to define certain artifacts, e.g.
strings and UI's, in two ways, via a rich editor and directly via
XML. The following description tries to use the rich UI but for
validation lists also the XML. You can switch between both things by
clicking on the tab on the lower part of the screen. For example in
the
Package Explorer select "res/layout/main.xml".
Android allows you to create attributes for resources, e.g. for
strings and / or colors. These attributes can be used in your UI
definition via XML or in your Java source code.
Select the file "res/values/string.xml" and press "Add". Select "Color" and enter "myColor" as the name and "#3399CC" as the value.
Add also the following "String" attributes. String attributes allow to translate the application at a later point.
Switch to the XML representation and validate the values.
Select the file "res/values/string.xml" and press "Add". Select "Color" and enter "myColor" as the name and "#3399CC" as the value.
Add also the following "String" attributes. String attributes allow to translate the application at a later point.
Switch to the XML representation and validate the values.
Hello World, Convert! Temperature Converter #3399CC myClickHandler to Celsius to Fahrenheit Calculate
Select "res/layout/main.xml" and open the Android editor via a
double-click. This editor allows you to create the UI via drag and
drop
or via the XML source code. You can switch between both
representations via the tabs at the bottom of the editor. For
changing the position and grouping elements you can use the outline
view.
The following shows a screenshot of the Palette view from which you can drag and drop new UI elements into your layout. Please note that the "Palette" view changes frequently so your view might be a bit different.
Right-click on the text object “Hello World, Hello!” in the layout. Select Delete on the popup menu to remove the text object. Then, from the “Palette” view, select Text Fields and locate “Plain Text”. Drag this onto the layout to create a text input field. All object types in the section "Text Fields” derive from the class "EditText", they just specify via an additional attribute which text type can be used.
Now select the Palette section “Form Widgets” and drag a “RadioGroup” object onto the layout. The number of radio buttons added to the radio button group depends on your version of Eclipse. Make sure there are two radio buttons by deleting or adding radio buttons to the group.
From the Palette section Form Widgets, drag a Button object onto the layout.
The result should look like the following.
Switch to "main.xml" and verify that your XML looks like the following.
The following shows a screenshot of the Palette view from which you can drag and drop new UI elements into your layout. Please note that the "Palette" view changes frequently so your view might be a bit different.
Right-click on the text object “Hello World, Hello!” in the layout. Select Delete on the popup menu to remove the text object. Then, from the “Palette” view, select Text Fields and locate “Plain Text”. Drag this onto the layout to create a text input field. All object types in the section "Text Fields” derive from the class "EditText", they just specify via an additional attribute which text type can be used.
Now select the Palette section “Form Widgets” and drag a “RadioGroup” object onto the layout. The number of radio buttons added to the radio button group depends on your version of Eclipse. Make sure there are two radio buttons by deleting or adding radio buttons to the group.
From the Palette section Form Widgets, drag a Button object onto the layout.
The result should look like the following.
Switch to "main.xml" and verify that your XML looks like the following.
If you select a UI element you can change its properties via
the properties view. Most of the properties can be changed via
the
right mouse menu. You can also edit properties of fields directy in
XML. Typically you change properties directly in the XML file as this
is much faster. But the right mouse functionality is nice if you are
searching for a certain property.
Open your file "main.xml" We will delete the initial text for the EditText field in XML. Switch to the XML tab called "main.xml" and delete the
Use the right mouse click on the first radio button to assign the "celsius" string attribute to its "text" property. Assign the and "fahrenheit" string attribute to the second radio button.
From now on I assume you are able to use the properties menu on the UI elements. You can either edit the XML file or modify the properties via right mouse click.
Set the property "Checked" to true for the first RadioButton. Assign "calc" to the text property of your button and assign "myClickHandler" to the "onClick" property. Set the "Input type" property to "numberSigned" and "numberDecimal" on your EditText.
All your other UI controls are contained in a LinearLayout. We want to assign a background color to this LinearLayout. Right-click on an empty space in Graphical Layout mode, then select Other Properties → All by Name → Background. Select “Color” and then “myColor” in the list.
Switch to the "main.xml" tab and verify that the XML is correctly maintained.
Open your file "main.xml" We will delete the initial text for the EditText field in XML. Switch to the XML tab called "main.xml" and delete the
android:text="EditText"
property from the EditText part. Switch back to the "Graphical
Layout" tab and check that the text is removed.
Use the right mouse click on the first radio button to assign the "celsius" string attribute to its "text" property. Assign the and "fahrenheit" string attribute to the second radio button.
From now on I assume you are able to use the properties menu on the UI elements. You can either edit the XML file or modify the properties via right mouse click.
Set the property "Checked" to true for the first RadioButton. Assign "calc" to the text property of your button and assign "myClickHandler" to the "onClick" property. Set the "Input type" property to "numberSigned" and "numberDecimal" on your EditText.
All your other UI controls are contained in a LinearLayout. We want to assign a background color to this LinearLayout. Right-click on an empty space in Graphical Layout mode, then select Other Properties → All by Name → Background. Select “Color” and then “myColor” in the list.
Switch to the "main.xml" tab and verify that the XML is correctly maintained.
READ MORE VISIT HERE
1 komentar:
However, these are the most functional for readers.
There are e - Book companies that will format your manuscript files into e - Book files and
can even provide a cover image. I didn't have much money to spend, and some friends had told me that you could get a free laptop by signing up with a new broadband provider, or new mobile phone provider.
Also visit my web-site free pdf ebook download
Posting Komentar