Download EE542 Android Presentation

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Android Fundamentals
What is Android
Software stack for mobile devices
 SDK provides tools and APIs to develop
apps

Major Components
Image source: http://developer.android.com/guide/basics/what-is-android.html
Applications
Ships with core set of apps, written in Java
 Developers have access to core APIs

Views used to build application
 Content providers – access data from other
apps
 Resource manager – access to local strings,
graphics
 Notification manager – display custom alerts
 Activity manager – manages app lifecycle

Libraries
C/C++
 Media libraries – A/V, images
 Surface manager – 2D/3D graphic layers
 LibWebCore – web browser engine
 SGL – 2D graphics engine
 3D – hardware or software acceleration
 FreeType – BMP and vector fonts
 SQLite – database engine

Runtime and Kernel

Includes core set of libraries
Provides most of core Java libraries
 Each app runs in its own process

 Own

instance of the Dalvik Virtual Machine
Linux 2.6 is used for core system services

Abstraction layer between HW & SW stacks
Main Components of Android
Activities
 Services
 Content Providers
 Broadcast Receivers

Activity
Single page user interface
 Most apps have multiple activities
 Callable from other apps (if you allow it)

Service
No user interface
 Runs in background
 Started and stopped by activities

Content Provider
Manages shared set of application data
 Data may be shared between apps or be
private
 Performs data handling functions

Broadcast Receiver
Listens for system wide (intent) broadcasts
 Intent filter limits which intents cared about
 Similar to an interrupt handler


Redirects to appropriate activity or service
Intents

Allows an activity, service or broadcast
receiver to link to another
Within or between apps
 Allows apps to use components of others

Image source: Mednieks, Dornin, Meike, Nakamura. Programming Android
User Interfaces
Images from Android Design
http://developer.android.com/design/get-started/ui-overview.html
User Interface Basics




Recall the basic unit of an Android application is an Activity
An Activity displays the user interface
User Interfaces are built from View and ViewGroup object instances of the
View class
View objects are data structures that store content and layout parameters




controls a specific rectangular region of the screen
responsible for drawing itself
handles events
Subclass “widgets” provide user interface objects:


text fields, buttons, labels
serves as means of interaction with user
Images from Android Design
http://developer.android.com/design/building-blocks/index.html
View & ViewGroup

ViewGroup objects act like containers for View objects


one or more Views are grouped together
Subclass “layouts” provide different layout architectures:

LinearLayout – displays Views in linear direction either horizontally or vertically
default is horizontal
 text field, two radio buttons, and button
in a vertical orientation


RelativeLayout – displays Views in relative position to each other
an id needs to be assigned to elements for
reference
 text field, two radio buttons, and button
in relative position

Images from Android Basics & User Interfaces
http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_BasicsUI.html
ViewGroup Layout

TableLayout – displays Views in table form with rows and columns


buttons for the calculator are in table form
Some other layouts from base class android.view.ViewGroup:



AbsoluteLayout
FrameLayout
ScrollView
Image from Android Basics & User Interfaces
http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_BasicsUI.html
Common Attributes


View and ViewGroup attributes:
 layout_width
 layout_height
 layout_margintop
 layout_marginbottom
 layout_marginleft
 layout_marginright
 layout_x
 layout_y
LinearLayout and TableLayout attributes:
 layout_gravity – specifies how child Views are positioned
 layout_weight – specifies how much space is to be allocated, total
must equal 1
Images from Understanding User Interface In Android
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts
View Hierarchy


Parent nodes contain and organize layout of child nodes
Child nodes are responsible for drawing themselves at the request of the
parent



control and respond to user input contained within their region of the display
The Activity that displays a particular screen calls the setContentView()
method to draw the screen defined by the hierarchy
XML layout files typically used for defining layouts and expressing view
hierarchies

each element in XML is a View or ViewGroup object
Image from Android Developers
http://developer.android.com/guide/topics/ui/index.html
Input Events



Define to inform the system of user interaction
Event listener is defined and registered with the View object
View class has a collection of On<SomeEvent>Listener:




View.OnClickListener
View.OnTouchListener
View.OnKeyListener
Example: OnTouch, when the user touches a defined View object on the
screen


define View.OnTouchListener
register the View object with setOnTouchListener()
Application Menus

Two types of menus

Options menu – typically when an application is running


accessed by pressing the MENU button on the device
Context menu – typically used for displaying specific information about an item

accessed by pressing and hold down on an object
Images from Android User Interfaces
http://eagle.phys.utk.edu/guidry/android/androidUserInterface.html
Application Menus


Options menus allow users quick access to an application’s functions,
preferences and settings
Structured using a View hierarchy




Handle their own events, no need to register event listeners
Selections handled by methods



define onCreateOptionsMenu()
define onCreateContectMenu()
onOptionsItemSelected()
onContextItemSelected()
Items for menus can be declared in an XML file like an application layout
Hardware Systems/Sensors
Images from Z-DeviceTest app
https://market.android.com/details?id=zausan.zdevicetest&hl=en
Sensors
public class SensorActivity extends Activity, implements SensorEventListener {
…
SensorManager mSensorManager =
(SensorManager)getSystemService(SENSOR_SERVICE);
Sensor mAccelerometer =
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
…
mSensorManager.registerListener(this, mAccelerometer,
SensorManager.SENSOR_DELAY_NORMAL);
public void onSensorChanged(SensorEvent event) {
}
…}
Image from AndroSensor app
https://market.android.com/details?id=com.fivasim.androsensor&hl=en
Sensor Constants






public static final float GRAVITY_EARTH = 9.80665
public static final float LIGHT_FULLMOON = 0.25
public static final float MAGNETIC_FIELD_EARTH_MIN = 30.0
public static final float PRESSURE_STANDARD_ATMOSPHERE = 1013.25
public static final float GRAVITY_THE_ISLAND = 4.815162
public static final float GRAVITY_DEATH_STAR_I = 3.5303614E-7
Bluetooth
BluetoothAdapter
Local radio state
 Discover devices

BluetoothServerSocket
Receives connection requests
 Returns a BluetoothSocket when connected

BluetoothSocket
InputStream object
 OutputStream object

Location
LocationManager locman =
(LocationManager) getSystemService(Context.LOCATION_SERVICE)
Location loc = locman.getLastKnownLocation(String provider)

GPS_PROVIDER

NETWORK_PROVIDER
Location Listener
private class MyLocListener implements LocationListener
 onLocationChanged(Location location)
requestLocationUpdates(long minTime, float
minDistance, Criteria criteria, PendingIntent intent)
public void addProximityAlert (double latitude, double longitude, float radius,
long expiration, PendingIntent intent)
References









https://market.android.com/details?id=zausan.zdevicetest&hl=en
https://market.android.com/details?id=com.fivasim.androsensor&hl=
en
http://developer.android.com/reference
Mednicks, Dornin, Meike, Nakamura, Programming Android
http://developer.android.com
http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_B
asicsUI.html
http://phandroid.com/2011/05/11/10-tips-for-android-ui-design/
http://eagle.phys.utk.edu/guidry/android/androidUserInterface.html
Ableson, Sen, King, Ortiz: Android In Action – Third Edition