SlideShare ist ein Scribd-Unternehmen logo
1 von 143
BASICS OF MOBILE O/S
A MOBILE OPERATING
SYSTEM
• A MOBILE OPERATING SYSTEM, ALSO REFERRED TO AS
MOBILE OS, IS AN OPERATING SYSTEM THAT OPERATES A
SMARTPHONE, TABLET, PDA, OR OTHER MOBILE DEVICE.
MODERN MOBILE OPERATING SYSTEMS COMBINE THE
FEATURES OF A PERSONAL COMPUTER OPERATING SYSTEM
WITH OTHER FEATURES, INCLUDING A TOUCHSCREEN,
CELLULAR, BLUETOOTH, WI-FI, GPS MOBILE NAVIGATION,
CAMERA, VIDEO CAMERA, SPEECH RECOGNITION, VOICE
RECORDER, MUSIC PLAYER, NEAR FIELD COMMUNICATION
AND INFRARED BLASTER.
• MOBILE DEVICES WITH MOBILE COMMUNICATIONS
CAPABILITIES (E.G. SMARTPHONES) CONTAIN TWO MOBILE
OPERATING SYSTEMS - THE MAIN USER-FACING SOFTWARE
PLATFORM IS SUPPLEMENTED BY A SECOND LOW-LEVEL
PROPRIETARY REAL-TIME OPERATING SYSTEM WHICH
OPERATES THE RADIO AND OTHER HARDWARE. RESEARCH
HAS SHOWN THAT THESE LOW-LEVEL SYSTEMS MAY
CONTAIN A RANGE OF SECURITY VULNERABILITIES
PERMITTING MALICIOUS BASE STATIONS TO GAIN HIGH
LEVELS OF CONTROL OVER THE MOBILE DEVICE.
• BLACKBERRY
• IT IS CLOSED SOURCE AND PROPRIETARY. BLACKBERRY 10 (PREVIOUSLY
BLACKBERRY BBX) WAS THE NEXT GENERATION PLATFORM FOR
BLACKBERRY SMARTPHONES AND TABLETS. ONE OS WAS PLANNED FOR
BOTH BLACKBERRY SMARTPHONES AND TABLETS GOING FORWARD

•IOS
• IOS IS FROM APPLE INC. IT IS CLOSED SOURCE AND PROPRIETARY AND BUILT
ON OPEN SOURCE DARWIN CORE OS. THE APPLE IPHONE, IPOD TOUCH, IPAD
AND SECOND-GENERATION APPLE.
• WINDOWS PHONE
• WINDOWS PHONE IS FROM MICROSOFT. IT IS CLOSED SOURCE
AND PROPRIETARY. ON FEBRUARY 15, 2010, MICROSOFT
UNVEILED ITS NEXT-GENERATION MOBILE OS, WINDOWS PHONE.
THE NEW MOBILE OS INCLUDES A COMPLETELY NEW OVERHAULED UI INSPIRED BY MICROSOFT'S "METRO DESIGN
LANGUAGE". IT INCLUDES FULL INTEGRATION OF MICROSOFT
SERVICES SUCH AS MICROSOFT SKYDRIVE AND OFFICE, XBOX
MUSIC, XBOX VIDEO, XBOX LIVE GAMES AND BING, BUT ALSO
INTEGRATES WITH MANY OTHER NON-MICROSOFT SERVICES
SUCH AS FACEBOOK AND GOOGLE ACCOUNTS. WINDOWS PHONE
DEVICES ARE MADE PRIMARILY BY NOKIA, ALONG WITH HTC,
SAMSUNG, HUAWEI AND OTHER. OEMS. (ORIGINAL EQUIPMENT
MANUFACTURER)
J2ME
ANDROID O/S
• ANDROID IS AN OPERATING SYSTEM BASED ON THE LINUX
KERNEL AND DESIGNED PRIMARILY FOR TOUCHSCREEN
MOBILE DEVICES SUCH AS SMARTPHONES AND TABLET
COMPUTERS. INITIALLY DEVELOPED BY ANDROID, INC.,
WHICH GOOGLE BACKED FINANCIALLY AND LATER BOUGHT
IN 2005, ANDROID WAS UNVEILED IN 2007 ALONG WITH THE
FOUNDING OF THE OPEN HANDSET ALLIANCE: A
CONSORTIUM OF HARDWARE, SOFTWARE, AND
TELECOMMUNICATION COMPANIES DEVOTED TO ADVANCING
OPEN STANDARDS FOR MOBILE DEVICES. THE FIRST
PUBLICLY AVAILABLE SMARTPHONE RUNNING ANDROID, THE
HTC DREAM, WAS RELEASED ON OCTOBER 22, 2008
• ANDROID'S SOURCE CODE IS RELEASED BY GOOGLE UNDER
THE APACHE LICENSE;
• AS OF JULY 2013, ANDROID HAS THE LARGEST NUMBER OF
APPLICATIONS ("APPS"), AVAILABLE FOR DOWNLOAD IN
GOOGLE PLAY STORE WHICH HAS HAD OVER 1 MILLION APPS
PUBLISHED, AND OVER 50 BILLION DOWNLOADS.
• A DEVELOPER SURVEY CONDUCTED IN APRIL–MAY 2013
FOUND THAT ANDROID IS THE MOST USED PLATFORM AMONG
DEVELOPERS: IT IS USED BY 71% OF THE MOBILE
DEVELOPERS POPULATION
OHA
• THE OPEN HANDSET ALLIANCE (OHA) IS A CONSORTIUM OF 84 FIRMS TO
DEVELOP OPEN STANDARDS FOR MOBILE DEVICES. MEMBER FIRMS INCLUDE
GOOGLE, HTC, SONY, DELL, INTEL, MOTOROLA, QUALCOMM, TEXAS
INSTRUMENTS, SAMSUNG ELECTRONICS, LG ELECTRONICS, T-MOBILE,
SPRINT CORPORATION, NVIDIA, AND WIND RIVER SYSTEMS.
•

THE OHA WAS ESTABLISHED ON 6 NOVEMBER 2007, LED BY GOOGLE WITH 34
MEMBERS INCLUDING MOBILE HANDSET MAKERS, APPLICATION
DEVELOPERS, SOME MOBILE CARRIERS AND CHIP MAKERS.

• ANDROID, THE FLAGSHIP SOFTWARE OF THE ALLIANCE, IS BASED ON AN
OPEN SOURCE LICENSE AND HAS COMPETED AGAINST MOBILE PLATFORMS
FROM APPLE, MICROSOFT, NOKIA (SYMBIAN), HP (FORMERLY PALM),
SAMSUNG ELECTRONICS / INTEL (TIZEN, BADA), AND BLACKBERRY.
• AS PART OF ITS EFFORTS TO PROMOTE A UNIFIED ANDROID PLATFORM, OHA
MEMBERS ARE CONTRACTUALLY FORBIDDEN FROM PRODUCING DEVICES
THAT ARE BASED OFF INCOMPATIBLE FORKS OF ANDROID
GALAXY
TABLET
ANDROID-POWERED MICROWAVE

By Touch Revolution – at CES 2010
http://www.pocket-lint.com/news/30712/android-powered-microwave-cookinggoogle
ANDROID-POWERED WATCH
ANDROID-POWERED CAMERA
ANDROID-POWERED TV
ANDROID-POWERED CAR RADIO
ANDROID-POWERED WASHING
MACHINE
ANDROID-POWERED PC
ANDROID TV
ANDROID
VERSIONS

Honeycomb
Android 3.0-3.2

Ice cream Sandwich

Jelly Bean

KitKat

Android 4.0+

Android 4.1.1

Android 4.4
DIFFERENT ANDROID VERSIONS
DISTRIBUTION OF DEVICES

DATA COLLECTED DURING A 14-DAY PERIOD ENDING ON JANUARY 3, 2012
HTTP://DEVELOPER.ANDROID.COM/RESOURCES/DASHBOARD/PLATFORM-VERSIONS.HTML
DISTRIBUTION OF DEVICES

HTTP://DEVELOPER.ANDROID.COM/RESOURCES/DASHBOARD/PLATFORM-VERSIONS.HTML
WHAT IS GOOGLE ANDROID?
• A SOFTWARE STACK FOR MOBILE DEVICES
THAT INCLUDES
• AN OPERATING SYSTEM
• MIDDLEWARE
• KEY APPLICATIONS

• USES LINUX TO PROVIDE CORE SYSTEM
SERVICES
•
•
•
•
•

SECURITY
MEMORY MANAGEMENT
PROCESS MANAGEMENT
POWER MANAGEMENT
HARDWARE DRIVERS
ANDROID ARCHITECTURE
MOBILE DEVICES: ADVANTAGES
• ALWAYS WITH THE USER
• TYPICALLY HAVE INTERNET ACCESS
• TYPICALLY GPS ENABLED
• TYPICALLY HAVE ACCELEROMETER & COMPASS
• MOST HAVE CAMERAS & MICROPHONES
• MANY APPS ARE FREE OR LOW-COST
MOBILE DEVICES:
DISADVANTAGES
•
•
•
•

LIMITED SCREEN SIZE
LIMITED BATTERY LIFE
LIMITED PROCESSOR SPEED
LIMITED AND SOMETIMES SLOW NETWORK
ACCESS
• LIMITED OR AWKWARD INPUT: SOFT
KEYBOARD, PHONE KEYPAD, TOUCH
SCREEN, OR STYLUS
• LIMITED WEB BROWSER FUNCTIONALITY
• RANGE OF PLATFORMS & CONFIGURATIONS
ACROSS DEVICES
MOBILE APPLICATIONS
• WHAT ARE THEY?
• ANY APPLICATION THAT RUNS ON A MOBILE DEVICE

• TYPES
• WEB APPS: RUN IN A WEB BROWSER
• HTML, JAVASCRIPT, FLASH, SERVER-SIDE COMPONENTS, ETC.

• NATIVE: COMPILED BINARIES FOR THE DEVICE
• OFTEN MAKE USE OF WEB SERVICES
ANDROID APPS
• BUILT USING JAVA AND NEW SDK LIBRARIES
• NO SUPPORT FOR SOME JAVA LIBRARIES LIKE SWING & AWT

• JAVA CODE COMPILED INTO DALVIK BYTE CODE (.DEX)
• OPTIMIZED FOR MOBILE DEVICES (BETTER MEMORY
MANAGEMENT, BATTERY UTILIZATION, ETC.)

• DALVIK VM RUNS .DEX FILES
• DEVELOPMENT PROCESS
FOR AN ANDROID APP

http://developer.android.com/guide/developing/index.html
ANDROID DESIGN PHILOSOPHY
• APPLICATIONS SHOULD BE:
• FAST
• RESOURCE CONSTRAINTS: <200MB RAM, SLOW PROCESSOR

• RESPONSIVE
• APPS MUST RESPOND TO USER ACTIONS WITHIN 5 SECONDS

• SECURE
• APPS DECLARE PERMISSIONS IN MANIFEST

• SEAMLESS
• USABILITY IS KEY, PERSIST DATA, SUSPEND SERVICES
• ANDROID KILLS PROCESSES IN BACKGROUND AS NEEDED
BUILDING AND RUNNING
Compiled resources
(xml files)

Android Debug Bridge

•

ADB IS A CLIENT SERVER PROGRAM THAT CONNECTS CLIENTS ON DEVELOPER MACHINE
TO DEVICES/EMULATORS TO FACILITATE DEVELOPMENT.

•

AN IDE LIKE ECLIPSE HANDLES THIS ENTIRE PROCESS FOR YOU.

http://developer.android.com/guide/developing/building/index.html#detailed-build
BUILDING
AND
RUNNING
APPLICATIONS ARE BOXED

• BY DEFAULT, EACH APP IS RUN IN ITS OWN LINUX
PROCESS
• PROCESS STARTED WHEN APP’S CODE NEEDS TO BE
EXECUTED
• THREADS CAN BE STARTED TO HANDLE TIMECONSUMING OPERATIONS

• EACH PROCESS HAS ITS OWN DALVIK VM
• BY DEFAULT, EACH APP IS ASSIGNED UNIQUE LINUX
ID
• PERMISSIONS ARE SET SO APP’S FILES ARE ONLY
VISIBLE TO THAT APP
ANDROID
RCHITECTURE
PUBLISHING AND MONETIZING
• PAID APPS IN ANDROID MARKET, VARIOUS
OTHER MARKETS
• FREE, AD-SUPPORTED APPS IN ANDROID
MARKET
• AD NETWORKS (GOOGLE ADMOB, QUATTRO
WIRELESS)
• SELL YOUR OWN ADS

• SERVICES TO OTHER DEVELOPERS
• CONTESTS (ANDROID DEVELOPER
CHALLENGE)
• SELLING PRODUCTS FROM WITHIN YOUR
APP
ADNROID O/S FILE SYSTEM
THE ANDROID OS – 2. FILE SYSTEM
 SUPPORTED BY YAFFS2 FILE SYSTEM.
 YAFFS: YET ANOTHER FLASH FILE SYSTEM
 YAFFS1: DESIGNED FOR OLD NAND CHIPS WITH 512 BYTE
PAGES PLUS 16 BYTE SPARE AREAS.
 YAFFS2: EVOLVED FROM YAFFS1 TO ACCOMMODATE NEWER
CHIPS WITH 2048 BYTE PAGES PLUS 64 BYTES SPARE
AREAS.
YAFFS2
• YAFFS (YET ANOTHER FLASH FILE SYSTEM) IS AN OPENSOURCE FILE SYSTEM SPECIFICALLY DESIGNED TO BE
FAST, ROBUST AND SUITABLE FOR EMBEDDED USE
WITH NAND AND NOR FLASH. IT IS WIDELY USED WITH
LINUX, RTOSS (A REAL-TIME OPERATING SYSTEM) AT ALL,
IN CONSUMER DEVICES. IT IS AVAILABLE
UNDER GNU PUBLIC LICENSE, GPL, OR ON COMMERCIAL
TERMS FROM ALEPH ONE.
ANDROID SDK MOBILE DEVICE
EMULATOR

• THE ANDROID SDK INCLUDES A MOBILE DEVICE
EMULATOR — A VIRTUAL MOBILE DEVICE THAT RUNS ON
YOUR COMPUTER. THE EMULATOR LETS YOU DEVELOP
AND TEST ANDROID APPLICATIONS WITHOUT USING A
PHYSICAL DEVICE.
32 bit / 64 bit
• The main difference between 32-bit processors and 64-bit processors is
the speed they operate. 64-bit processors can come in dual core, quad
core, and six core versions for home computing (with eight core
versions coming soon).
• It is important to note that 64-bit computers can still use 32-bit based
software programs, even when the Windows operating system is a 64bit version.
• Another big difference between 32-bit processors and 64-bit processors
is the maximum amount of memory (RAM) that is supported. 32-bit
computers support a maximum of 3-4GB of memory, whereas a 64-bit
computer can support memory amounts over 4 GB.
• One thing to note is that 3D graphic programs and games do not benefit
much, if at all, from switching to a 64-bit computer, unless the program
is a 64-bit program. A 32-bit processor is adequate for any program
written for a 32-bit processor
• In the end, 64-bit processors are becoming more and more
commonplace in home computers. Most manufacturers build
computers with 64-bit processors due to cheaper prices and because
more users are now using 64-bit operating systems and programs.
ANDROID BASICS
SETTING UP ANDROID
DEVELOPMENT ENVIRONMENT /
INSTALLING ANDROID
•

STEP 1 : DOWNLOAD JDK: (JAVA DEVELOPMENT KIT). FOR JAVA DEVELOPERS. INCLUDES A
COMPLETE JRE PLUS TOOLS FOR DEVELOPING, DEBUGGING, AND MONITORING JAVA
APPLICATIONS.

•

STEP 2 :

•

GET THE ANDROID SDK

•

THE ANDROID SDK PROVIDES YOU THE API LIBRARIES AND DEVELOPER TOOLS NECESSARY TO
BUILD, TEST, AND DEBUG APPS FOR ANDROID.

•

WITH A SINGLE DOWNLOAD, THE ADT BUNDLE INCLUDES EVERYTHING YOU NEED TO BEGIN
DEVELOPING APPS:

•

ECLIPSE + ADT PLUGIN

•

ANDROID SDK TOOLS

•

ANDROID PLATFORM-TOOLS

•

THE LATEST ANDROID PLATFORM

•

THE LATEST ANDROID SYSTEM IMAGE FOR THE EMULATOR

•

STEP 3 AFTER INSTALL THE APPLICATION YOU NEED TO SPECIFY THE PACKAGES, THAT WHICH
API VERSION YOU NEED.
ANDROID SDK
• ONCE INSTALLED OPEN THE SDK MANAGER
• INSTALL THE DESIRED PACKAGES
• CREATE AN ANDROID VIRTUAL DEVICE (AVD)
SDK MANAGER
AVD
ADT PLUGIN (1)
• IN ECLIPSE, GO TO HELP -> INSTALL NEW SOFTWARE
• CLICK ‗ADD‘ IN TOP RIGHT
• ENTER:
• NAME: ADT PLUGIN
• LOCATION: HTTPS://DL-SSL.GOOGLE.COM/ANDROID/ECLIPSE/

• CLICK OK, THEN SELECT ‗DEVELOPER TOOLS‘, CLICK
NEXT
• CLICK NEXT AND THEN FINISH
• AFTERWARDS, RESTART ECLIPSE
• SPECIFY SDK LOCATION (NEXT 3 SLIDES)
• MUST DO THIS EVERY TIME START A NEW PROJECT IN A NEW
LOCATION (AT LEAST IN WINDOWS)
ADT PLUGIN (2)
ADT PLUGIN (3)
ADT PLUGIN (4)
CREATING A PROJECT (1)
NEED
THE
ITEMS
CIRCLED

THEN
CLICK
FINISH

CREATING A PROJECT (2)
PROJECT COMPONENTS
• SRC – YOUR SOURCE CODE
• GEN – AUTO-GENERATED CODE (USUALLY JUST R.JAVA)
• INCLUDED LIBRARIES
• RESOURCES
• DRAWABLES (LIKE .PNG IMAGES)
• LAYOUTS
• VALUES (LIKE STRINGS)

• MANIFEST FILE
XML
• USED TO DEFINE SOME OF THE RESOURCES
• LAYOUTS (UI)
• STRINGS

• MANIFEST FILE

• SHOULDN‘T USUALLY HAVE TO EDIT IT DIRECTLY, ECLIPSE
CAN DO THAT FOR YOU
• PREFERRED WAY OF CREATING UIS
• SEPARATES THE DESCRIPTION OF THE LAYOUT FROM ANY
ACTUAL CODE THAT CONTROLS IT
• CAN EASILY TAKE A UI FROM ONE PLATFORM TO ANOTHER
R CLASS
• AUTO-GENERATED: YOU SHOULDN‘T EDIT IT
• CONTAINS IDS OF THE PROJECT RESOURCES
• ENFORCES GOOD SOFTWARE ENGINEERING
• USE FINDVIEWBYID AND RESOURCES OBJECT TO GET
ACCESS TO THE RESOURCES
• EX. BUTTON B = (BUTTON)FINDVIEWBYID(R.ID.BUTTON1)
• EX. GETRESOURCES().GETSTRING(R.STRING.HELLO));
LAYOUTS (1)
• ECLIPSE HAS A GREAT UI CREATOR
• GENERATES THE XML FOR YOU

• COMPOSED OF VIEW OBJECTS

• CAN BE SPECIFIED FOR PORTRAIT AND LANDSCAPE MODE
• USE SAME FILE NAME, SO CAN MAKE COMPLETELY
DIFFERENT UIS FOR THE ORIENTATIONS WITHOUT
MODIFYING ANY CODE
LAYOUTS (2)
LAYOUTS (3)
• CLICK ‗CREATE‘ TO MAKE LAYOUT MODIFICATIONS

• WHEN IN PORTRAIT MODE CAN SELECT ‗PORTRAIT‘
TO MAKE A RES SUB FOLDER FOR PORTRAIT
LAYOUTS
• LIKEWISE FOR LANDSCAPE LAYOUTS WHILE IN
LANDSCAPE MODE
• WILL CREATE FOLDERS TITLED ‗LAYOUT-PORT‘ AND
‗LAYOUT-LAND‘

• NOTE: THESE ‗PORT‘ AND ‗LAND‘ FOLDERS ARE
EXAMPLES OF ‗ALTERNATE LAYOUTS‘, SEE HERE
FOR MORE INFO
• HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/RESOURCES/PROVIDINGRESOURCES.HTML

• AVOID ERRORS BY MAKING SURE COMPONENTS
LAYOUTS (4)
STRINGS
• IN RES/VALUES
• STRINGS.XML

• APPLICATION WIDE AVAILABLE STRINGS
• PROMOTES GOOD SOFTWARE ENGINEERING
• UI COMPONENTS MADE IN THE UI EDITOR SHOULD HAVE
TEXT DEFINED IN STRINGS.XML
• STRINGS ARE JUST ONE KIND OF ‗VALUE‘ THERE ARE
MANY OTHERS
MANIFEST FILE (1)
• CONTAINS CHARACTERISTICS ABOUT YOUR APPLICATION
• WHEN HAVE MORE THAN ONE ACTIVITY IN APP, NEED TO
SPECIFY IT IN MANIFEST FILE
• GO TO GRAPHICAL VIEW OF THE MANIFEST FILE
• ADD AN ACTIVITY IN THE BOTTOM RIGHT
• BROWSE FOR THE NAME OF THE ACTIVITY

• NEED TO SPECIFY SERVICES AND OTHER COMPONENTS
TOO

• ALSO IMPORTANT TO DEFINE PERMISSIONS AND
EXTERNAL LIBRARIES, LIKE GOOGLE MAPS API
MANIFEST FILE (2) – ADDING AN
ACTIVITY
ANDROID PROGRAMMING
COMPONENTS
• ACTIVITY
• HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTALS/ACTIV
ITIES.HTML

• SERVICE
• HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTALS/SERVI
CES.HTML

• CONTENT PROVIDERS
• BROADCAST RECEIVERS

• ANDROID IN A NUTSHELL:
• HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTA
LS.HTML
ACTIVITIES (1)
• THE BASIS OF ANDROID APPLICATIONS
• A SINGLE ACTIVITY DEFINES A SINGLE VIEWABLE SCREEN
• THE ACTIONS, NOT THE LAYOUT

• CAN HAVE MULTIPLE PER APPLICATION
• EACH IS A SEPARATE ENTITY
• THEY HAVE A STRUCTURED LIFE CYCLE
• DIFFERENT EVENTS IN THEIR LIFE HAPPEN EITHER VIA THE
USER TOUCHING BUTTONS OR PROGRAMMATICALLY
ACTIVITIES (2)
SERVICES (1)

• RUN IN THE BACKGROUND
• CAN CONTINUE EVEN IF ACTIVITY THAT STARTED IT DIES
• SHOULD BE USED IF SOMETHING NEEDS TO BE DONE WHILE
THE USER IS NOT INTERACTING WITH APPLICATION
• OTHERWISE, A THREAD IS PROBABLY MORE APPLICABLE

• SHOULD CREATE A NEW THREAD IN THE SERVICE TO DO
WORK IN, SINCE THE SERVICE RUNS IN THE MAIN THREAD
• CAN BE BOUND TO AN APPLICATION
• IN WHICH CASE WILL TERMINATE WHEN ALL APPLICATIONS
BOUND TO IT UNBIND
• ALLOWS MULTIPLE APPLICATIONS TO COMMUNICATE WITH IT
VIA A COMMON INTERFACE
• NEEDS TO BE DECLARED IN MANIFEST FILE

• LIKE ACTIVITIES, HAS A STRUCTURED LIFE CYCLE
SERVICES (2)
RUNNING IN ECLIPSE (1)
• SIMILAR TO LAUNCHING A REGULAR JAVA APP, USE THE
LAUNCH CONFIGURATIONS
• SPECIFY AN ANDROID APPLICATION AND CREATE A NEW
ONE

• SPECIFY ACTIVITY TO BE RUN
• CAN SELECT A MANUAL OPTION, SO EACH TIME PROGRAM
IS RUN, YOU ARE ASKED WHETHER YOU WANT TO USE
THE ACTUAL PHONE OR THE EMULATOR
• OTHERWISE, IT SHOULD BE SMART AND USE WHICHEVER
ONE IS AVAILABLE
RUNNING IN ECLIPSE (2)
RUNNING IN ECLIPSE (3)
RUNNING IN ECLIPSE (4)
USB DEBUGGING
• SHOULD BE ENABLED ON PHONE TO USE DEVELOPER
FEATURES
• IN THE MAIN APPS SCREEN SELECT SETTINGS ->
APPLICATIONS -> DEVELOPMENT -> USB DEBUGGING (IT
NEEDS TO BE CHECKED)
ANDROID DEBUG BRIDGE
• USED FOR A WIDE VARIETY OF DEVELOPER TASKS
• READ FROM THE LOG FILE
• SHOW WHAT ANDROID DEVICES ARE AVAILABLE
• INSTALL ANDROID APPLICATIONS (.APK FILES)

• IN THE ‗PLATFORM-TOOLS‘ DIRECTORY OF THE MAIN
ANDROID SDK DIRECTORY
• RECOMMEND PUTTING THIS DIRECTORY AND THE ‗TOOLS‘
DIRECTORY ON THE SYSTEM PATH

• ADB.EXE
DEBUGGING
• INSTEAD OF USING TRADITIONAL SYSTEM.OUT.PRINTLN,
USE THE LOG CLASS
• IMPORTED WITH ANDROID.UTIL.LOG
• MULTIPLE TYPES OF OUTPUT (DEBUG, WARNING, ERROR,
…)
• LOG.D(<TAG>,<STRING>)
• CAN BE READ USING LOGCAT.
• PRINT OUT THE WHOLE LOG, WHICH AUTO-UPDATES
• ADB LOGCAT

• ERASE LOG

• ADB LOGCAT –C

• FILTER OUTPUT VIA TAGS
• ADB LOGCAT <TAG>:<MSG TYPE> *:S
• CAN HAVE MULTIPLE <TAG>:<MSG TYPE> FILTERS
• <MSG TYPE> CORRESPONDS TO DEBUG, WARNING, ERROR,
ETC.
• IF USE LOG.D(), THEN <MSG TYPE> = D

• REFERENCE
• HTTP://DEVELOPER.ANDROID.COM/GUIDE/DEVELOPING/DEBUGGING/DEB
UGGING-LOG.HTML
ANDROID – INTERFACE AND
LAYOUT
L. GREWE
INTERFACES: TWO ALTERNATIVES
CODE OR XML
• YOU HAVE TWO WAYS YOU CAN CREATE THE INTERFACE(S)
OF YOUR APPLICATION.
1.

CODE = WRITE CODE USING SDK WITH CLASSES LIKE
LINEARLAYOUT, TEXTVIEW, ……

2.

XML = CREATE XML FILES IN RES/LAYOUT (I.E. MAIN.XML)
THAT CONTAIN ANDROID XML VIEW TAGS LIKE
<LINEARLAYOUT> <TEXTVIEW>, ETC.
OPTION: XML INTERFACE
LETS LOOK AT THIS OPTION FIRST
XML INTERFACE CREATION
• GENERALLY, I WOULD SAY IF IT IS POSSIBLE, DOING XML
WOULD BE BETTER AS IT MEANS A DECOUPLING OF DESIGN
FROM JAVA CODE.
• YOU CAN HAVE BOTH IN YOUR SYSTEM….
• LETS DISCUSS THIS FIRST.
THE LAYOUT --- THE INTERFACE
• LAYOUTS DEFINED WITH
XML LOCATED IN
RES/LAYOUT
THE LAYOUT-THE INTERFACE
• RES/LAYOUT/MAIN.XML = CONTAINS LAYOUT FOR INTERFACE
<?XML VERSION="1.0" ENCODING="UTF-8"?>
<LINEARLAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID"
ANDROID:ORIENTATION="VERTICAL"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="FILL_PARENT"
>
<TEXTVIEW
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT"
ANDROID:TEXT="@STRING/HELLO"
/>
</LINEARLAYOUT>

THE ABOVE WILL CREATE AN INTERFACE IN VERTICAL (VERSUS PORTRAIT) MODE THAT FILLS THE
PARENT
BOTH IN WIDTH AND WRITE AND WRAPS AND CONTENT AS NECESSARY.
XML INTERFACE
• IT'S A TREE OF XML ELEMENTS,
• INSPIRED BY WEB AUTHORING
• BUILD UP UI QUICKLY

• EACH NODE IS THE NAME OF A VIEW CLASS (EXAMPLE IS
JUST ONE VIEW ELEMENT).
• CREATE YOUR OWN VIEW ---EXTENDS
• EACH NODE CAN HAVE MULTIPLE ATTRIBUTES
• LOOK TO API FOR DETAILS
XML INTERFACE
• <TEXTVIEW
XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="FILL_PARENT"
ANDROID:TEXT="@STRING/HELLO"/>
• XMLNS:ANDROID XML NAMESPACE DECLARATION THAT TELLS THE ANDROID
TOOLS THAT YOU ARE GOING TO REFER TO COMMON ATTRIBUTES DEFINED IN THE
ANDROID NAMESPACE. THE OUTERMOST TAG IN EVERY ANDROID LAYOUT FILE
MUST HAVE THIS ATTRIBUTE.
• ANDROID:LAYOUT_WIDTH THIS ATTRIBUTE DEFINES HOW MUCH OF THE AVAILABLE
WIDTH ON THE SCREEN THIS VIEW SHOULD CONSUME. AS IT'S THE ONLY VIEW SO
YOU WANT IT TO TAKE UP THE ENTIRE SCREEN, WHICH IS WHAT A VALUE OF
"FILL_PARENT" MEANS.
ANDROID:LAYOUT_HEIGHT THIS IS JUST LIKE ANDROID:LAYOUT_WIDTH, EXCEPT
THAT IT REFERS TO AVAILABLE SCREEN HEIGHT.
• ANDROID:TEXT THIS SETS THE TEXT THAT THE TEXTVIEW SHOULD DISPLAY. IN
THIS EXAMPLE, YOU USE A STRING RESOURCE INSTEAD OF A HARD-CODED
STRING VALUE. THE HELLO STRING IS DEFINED IN THE RES/VALUES/STRINGS.XML
FILE.
USING ECLIPSE IDE TO VISUALLY
CREATE XML FILE
• VISUAL CREATION OF XML FILE
• CREATE NEW->OTHER->ANDROID->XML FILE• SELECT FOR LAYOUT TYPE
• PLAY WITH IT….
DRAG AND DROP
USING ECLIPSE IDE TO VISUALLY
CREATE XML FILE
• VISUAL CREATION OF XML FILE
• CREATE NEW->OTHER->ANDROID->XML FILE• SELECT FOR LAYOUT TYPE
• PLAY WITH IT….
DRAG AND DROP
VISUALLY CREATING XML
INTERFACE
• I DRAGGED AND DROPPED AN EDITTEXT VIEW AND A BUTTON. BELOW I
SHOW YOU THE CORRESPONDING CODE.
RES/LAYOUT/MAIN2.XML
<?XML VERSION="1.0" ENCODING="UTF-8"?>
<ABSOLUTELAYOUT
XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID"
ANDROID:ORIENTATION="VERTICAL"
ANDROID:LAYOUT_WIDTH="MATCH_PARENT"

ANDROID:LAYOUT_HEIGHT="MATCH_PARENT">
<EDITTEXT ANDROID:TEXT="@STRING/HELLO" ANDROID:ID="@+ID/EDITTEXT1" ANDROID:INPUTTYPE="TEXTMULTILINE"
ANDROID:LAYOUT_WIDTH="169DP" ANDROID:LAYOUT_HEIGHT="115DP" ANDROID:LAYOUT_X="11DP"
ANDROID:LAYOUT_Y="20DP"></EDITTEXT>
<BUTTON ANDROID:ID="@+ID/BUTTON1" ANDROID:LAYOUT_WIDTH="WRAP_CONTENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT" ANDROID:TEXT="BUTTON" ANDROID:LAYOUT_X="27DP"
ANDROID:LAYOUT_Y="146DP"></BUTTON>

</ABSOLUTELAYOUT>
BESIDES DRAG AND DROP
YOU CAN EDIT THE XML
FILE DIRECTLY. LETS
DISCUSS SOME OF THE
ANDROID XML INTERFACE
RELATED TAGS

XML INTERFACE TAGS
LAYOUT TAGS
CONTROL STRUCTURE OF INTERFACE
LAYOUT TAGS
• DETERMINES HOW THE LAYOUT IS STRUCTURED.
• SOME TAGS
• LINEARLAYOUT
• A LAYOUT THAT ARRANGES ITS CHILDREN IN A SINGLE COLUMN OR A
SINGLE ROW. THE DIRECTION OF THE ROW CAN BE SET BY CALLING
SETORIENTATION(). YOU CAN ALSO SPECIFY GRAVITY, WHICH SPECIFIES
THE ALIGNMENT OF ALL THE CHILD ELEMENTS BY CALLING
SETGRAVITY() OR SPECIFY THAT SPECIFIC CHILDREN GROW TO FILL UP
ANY REMAINING SPACE IN THE LAYOUT BY SETTING THE WEIGHT
MEMBER OF LINEARLAYOUT.LAYOUTPARAMS. THE DEFAULT
ORIENTATION IS HORIZONTAL.
• ABSOLUTELAYOUT
• A LAYOUT THAT LETS YOU SPECIFY EXACT LOCATIONS (X/Y
COORDINATES) OF ITS CHILDREN. ABSOLUTE LAYOUTS ARE LESS
FLEXIBLE AND HARDER TO MAINTAIN THAN OTHER TYPES OF LAYOUTS
WITHOUT ABSOLUTE POSITIONING.
• RELATIVELAYOUT
• FRAMELAYOUT
• TABLELAYOUT
LINEARLAYOUT XML TAG
• VISUAL CREATION OF XML FILE
• XML ATTRIBUTES ATTRIBUTE NAME RELATED METHOD
DESCRIPTION ANDROID:BASELINEALIGNED
SETBASELINEALIGNED(BOOLEAN) WHEN SET TO FALSE, PREVENTS THE
LAYOUT FROM ALIGNING ITS CHILDREN'S
BASELINES. ANDROID:BASELINEALIGNEDCHILDINDEX
SETBASELINEALIGNEDCHILDINDEX(INT) WHEN A LINEAR LAYOUT IS
PART OF ANOTHER LAYOUT THAT IS BASELINE ALIGNED, IT CAN SPECIFY
WHICH OF ITS CHILDREN TO BASELINE ALIGN TO (THAT IS, WHICH CHILD
TEXTVIEW). ANDROID:GRAVITY SETGRAVITY(INT) SPECIFIES HOW TO
PLACE THE CONTENT OF AN OBJECT, BOTH ON THE X- AND Y-AXIS,
WITHIN THE OBJECT ITSELF. ANDROID:MEASUREWITHLARGESTCHILD
WHEN SET TO TRUE, ALL CHILDREN WITH A WEIGHT WILL BE
CONSIDERED HAVING THE MINIMUM SIZE OF THE LARGEST
CHILD. ANDROID:ORIENTATION SETORIENTATION(INT) SHOULD THE
LAYOUT BE A COLUMN OR A ROW? USE "HORIZONTAL" FOR A ROW,
"VERTICAL" FOR A COLUMN. ANDROID:WEIGHTSUM DEFINES THE
MAXIMUM WEIGHT SUM.
RELATED LAYOUT TAGS
CONTROL STRUCTURE OF INTERFACE, BUT COMMONLY A
SUB-AREA
LISTVIEW <LISTVIEW …..>
• A VIEW THAT SHOWS ITEMS IN A VERTICALLY
SCROLLING LIST.
ATTRIBUTES
• ANDROID:DIVIDER DRAWABLE OR COLOR TO DRAW
BETWEEN LIST ITEMS.
• ANDROID:DIVIDERHEIGHT HEIGHT OF THE DIVIDER.
• ANDROID:ENTRIES REFERENCE TO AN ARRAY
RESOURCE THAT WILL POPULATE THE LISTVIEW.
• ANDROID:FOOTERDIVIDERSENABLED WHEN SET TO
FALSE, THE LISTVIEW WILL NOT DRAW THE DIVIDER
BEFORE EACH FOOTER VIEW.
• ANDROID:HEADERDIVIDERSENABLED WHEN SET TO
FALSE, THE LISTVIEW WILL NOT DRAW THE DIVIDER
AFTER EACH HEADER VIEW.
GALLERY <GALLERY ….>
• A VIEW THAT SHOWS ITEMS IN A CENTER-LOCKED,
HORIZONTALLY SCROLLING LIST.
•

THE DEFAULT VALUES FOR THE GALLERY ASSUME YOU WILL BE USING
THEME_GALLERYITEMBACKGROUND AS THE BACKGROUND FOR EACH VIEW
GIVEN TO THE GALLERY FROM THE ADAPTER. IF YOU ARE NOT DOING THIS, YOU
MAY NEED TO ADJUST SOME GALLERY PROPERTIES, SUCH AS THE SPACING.

ATTRIBUTES
• ANDROID:ANIMATIONDURATION SETANIMATIONDURATION(INT) SETS
HOW LONG A TRANSITION ANIMATION SHOULD RUN (IN
MILLISECONDS) WHEN LAYOUT HAS CHANGED.
•

ANDROID:GRAVITY SETGRAVITY(INT) SPECIFIES HOW TO PLACE THE
CONTENT OF AN OBJECT, BOTH ON THE X- AND Y-AXIS, WITHIN THE
OBJECT ITSELF.

•

ANDROID:SPACING SETSPACING(INT)

• ANDROID:UNSELECTEDALPHA SETUNSELECTEDALPHA(FLOAT) SETS
THE ALPHA ON THE ITEMS THAT ARE NOT SELECTED.
CODE—SETTING UP GALLERY
@OVERRIDE
PUBLIC VOID ONCREATE(BUNDLE SAVEDINSTANCESTATE) {
SUPER.ONCREATE(SAVEDINSTANCESTATE);
SETCONTENTVIEW(R.LAYOUT.MAIN);
GALLERY GALLERY = (GALLERY) FINDVIEWBYID(R.ID.GALLERY);
GALLERY.SETADAPTER(NEW IMAGEADAPTER(THIS));

GALLERY.SETONITEMCLICKLISTENER(NEW ONITEMCLICKLISTENER() {
PUBLIC VOID ONITEMCLICK(ADAPTERVIEW PARENT, VIEW V, INT
POSITION, LONG ID) {
TOAST.MAKETEXT(HELLOGALLERY.THIS, "" + POSITION,
TOAST.LENGTH_SHORT).SHOW();
}
});
}
VIEWS AND VIEWGROUPS
MAKING THE ELEMENTS OF YOUR GUI
VIEWS AND VIEWGROUPS
• AN ACTIVITY CAN CONTAIN VIEWS AND VIEWGROUPS.

• ANDROID.VIEW.VIEW.* = BASE CLASS FOR ALL VIEWS.
• EXAMPLE SUB-CLASSES INCLUDE: TEXTVIEW, IMAGEVIEW, ETC.

• ANDROID.VIEW.VIEWGROUP = LAYOUT FOR VIEWS IT
CONTAINS, SUBCLASSES INCLUDE
• ANDROID.WIDGET.LINEARLAYOUT
• ANDROID.WIDGET.ABSOLUTELAYOUT
• ANDROID.WIDGET.TABLELAYOUT
• ANDROID.WIDGET.RELATIVELAYOUT
• ANDROID.WIDGET.FRAMELAYOUT

• ANDROID.WIDGET.SCROLLLAYOUT
LINEARLAYOUT (<LINEARLAYOUT> OR
ANDROID.WIDGET.LINEARLAYOUT)
• ARRANGES BY SINGLE COLUMN OR ROW.
• CHILD VIEWS CAN BE ARRANGED VERTICALLY OR
HORIZONTALLY. <?XML VERSION="1.0" ENCODING="UTF-8"?>
<LINEARLAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="FILL_PARENT"
ANDROID:ORIENTATION="VERTICAL" >

<TEXT VIEW
ANDROID:LAYOUT_WIDTH=―FILL_PARENT‖
ANDROID:LAYOUT_HEIGHT=―WRAP_CONTENT‖
ANDROID:TEXT=―@STRING/HELLO‖/>

</LINEARLAYOUT>
LINEAR LAYOUT EXAMPLE
<?XML VERSION="1.0" ENCODING="UTF-8"?>
<LINEARLAYOUT
XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="FILL_PARENT―
ANDROID:ORIENTATION="VERTICAL" >
<BUTTON ANDROID:ID="@+ID/BTN_WEBBROWSER"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT"
ANDROID:TEXT="WEB BROWSER―
ANDROID:ONCLICK="ONCLICKWEBBROWSER" />
<BUTTON ANDROID:ID="@+ID/BTN_MAKECALLS"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT―
ANDROID:TEXT="MAKE CALLS"
ANDROID:ONCLICK="ONCLICKMAKECALLS" />
<BUTTON ANDROID:ID="@+ID/BTN_SHOWMAP"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT―
ANDROID:TEXT="SHOW MAP"
ANDROID:ONCLICK="ONCLICKSHOWMAP" />
<BUTTON ANDROID:ID="@+ID/BTN_LAUNCHMYBROWSER"
ANDROID:LAYOUT_WIDTH="FILL_PARENT"
ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT"
ANDROID:TEXT="LAUNCH MY BROWSER"
ANDROID:ONCLICK="ONCLICKLAUNCHMYBROWSER" />
</LINEARLAYOUT>
LINEARLAYOUT ATTRIBUTES
• YOU CAN SET EITHER IN XML OR WITH SET*() METHODS.

• I.E. XML
ANDROID:ORIENTATION=―VERTICAL‖

CODE (LL IS LINEARLAYOUT INSTANCE)
LL.SETORIENTATION(VERTICAL);
EACH VIEW OR VIEWGROUP CAN HAVE ITS
OWN SET OF ATTRIBUTES…BUT, SOME ARE
VERY COMMON
Attribute

Description

layout_width

specifies width of View or ViewGroup

layout_height

specifies height

layout_marginTop

extra space on top

layout_marginBottom

extra space on bottom side

layout_marginLeft

extra space on left side

layout_marginRight

extra space on right side

layout_gravity

how child views are positioned

layout_weight

how much extra space in layout
should be allocated to View (only
when in LinearLayout or TableView)

layout_x

x-coordinate

layout_y

y-coordinate
GOAL
• UNDERSTAND APPLICATIONS AND THEIR COMPONENTS
• CONCEPTS:
• ACTIVITY,

• SERVICE,
• BROADCAST RECEIVER,
• CONTENT PROVIDER,
• INTENT,

• ANDROIDMANIFEST
APPLICATIONS
• WRITTEN IN JAVA (IT‘S POSSIBLE TO WRITE NATIVE CODE –
WILL NOT COVER THAT HERE)
• GOOD SEPARATION (AND CORRESPONDING SECURITY)
FROM OTHER APPLICATIONS:
• EACH APPLICATION RUNS IN ITS OWN PROCESS
• EACH PROCESS HAS ITS OWN SEPARATE VM
• EACH APPLICATION IS ASSIGNED A UNIQUE LINUX USER ID –
BY DEFAULT FILES OF THAT APPLICATION ARE ONLY VISIBLE
TO THAT APPLICATION (CAN BE EXPLICITLY EXPORTED)
APPLICATION COMPONENTS
• ACTIVITIES – VISUAL USER INTERFACE FOCUSED ON A
SINGLE THING A USER CAN DO
• SERVICES – NO VISUAL INTERFACE – THEY RUN IN THE
BACKGROUND
• BROADCAST RECEIVERS – RECEIVE AND REACT TO
BROADCAST ANNOUNCEMENTS
• CONTENT PROVIDERS – ALLOW DATA EXCHANGE
BETWEEN APPLICATIONS
ACTIVITIES
• BASIC COMPONENT OF MOST APPLICATIONS
• MOST APPLICATIONS HAVE SEVERAL ACTIVITIES THAT
START EACH OTHER AS NEEDED

• EACH IS IMPLEMENTED AS A SUBCLASS OF THE BASE
ACTIVITY CLASS
ACTIVITIES – THE VIEW
• EACH ACTIVITY HAS A DEFAULT WINDOW TO DRAW IN
(ALTHOUGH IT MAY PROMPT FOR DIALOGS OR
NOTIFICATIONS)
• THE CONTENT OF THE WINDOW IS A VIEW OR A GROUP OF
VIEWS (DERIVED FROM VIEW OR VIEWGROUP)
• EXAMPLE OF VIEWS: BUTTONS, TEXT FIELDS, SCROLL
BARS, MENU ITEMS, CHECK BOXES, ETC.
• VIEW(GROUP) MADE VISIBLE VIA
ACTIVITY.SETCONTENTVIEW() METHOD.
SERVICES
• DOES NOT HAVE A VISUAL INTERFACE
• RUNS IN THE BACKGROUND INDEFINITELY
• EXAMPLES
• NETWORK DOWNLOADS
• PLAYING MUSIC
• TCP/UDP SERVER

• YOU CAN BIND TO A AN EXISTING SERVICE AND CONTROL
ITS OPERATION
BROADCAST RECEIVERS
• RECEIVE AND REACT TO BROADCAST ANNOUNCEMENTS
• EXTEND THE CLASS BROADCASTRECEIVER
• EXAMPLES OF BROADCASTS:
• LOW BATTERY, POWER CONNECTED, SHUTDOWN, TIMEZONE
CHANGED, ETC.
• OTHER APPLICATIONS CAN INITIATE BROADCASTS
CONTENT PROVIDERS
• MAKES SOME OF THE APPLICATION DATA AVAILABLE TO
OTHER APPLICATIONS
• IT‘S THE ONLY WAY TO TRANSFER DATA BETWEEN
APPLICATIONS IN ANDROID (NO SHARED FILES, SHARED
MEMORY, PIPES, ETC.)
• EXTENDS THE CLASS CONTENTPROVIDER;
• OTHER APPLICATIONS USE A CONTENTRESOLVER OBJECT
TO ACCESS THE DATA PROVIDED VIA A
CONTENTPROVIDER
INTENTS
• AN INTENT IS AN INTENT OBJECT WITH A MESSAGE
CONTENT.
• ACTIVITIES, SERVICES AND BROADCAST RECEIVERS
ARE STARTED BY INTENTS. CONTENTPROVIDERS
ARE STARTED BY CONTENTRESOLVERS:
• AN ACTIVITY IS STARTED BY
CONTEXT.STARTACTIVITY(INTENT INTENT) OR
ACTIVITY.STARTACTIVITYFORRESULT(INTENT INTENT, INT
REQUESTCODE)
• A SERVICE IS STARTED BY
CONTEXT.STARTSERVICE(INTENT SERVICE)
• AN APPLICATION CAN INITIATE A BROADCAST BY USING
AN INTENT IN ANY OF CONTEXT.SENDBROADCAST(INTENT
INTENT), CONTEXT.SENDORDEREDBROADCAST(), AND
CONTEXT.SENDSTICKYBROADCAST()
SHUTTING DOWN COMPONENTS
• ACTIVITIES
• CAN TERMINATE ITSELF VIA FINISH();
• CAN TERMINATE OTHER ACTIVITIES IT STARTED VIA
FINISHACTIVITY();

• SERVICES
• CAN TERMINATE VIA STOPSELF(); OR CONTEXT.STOPSERVICE();

• CONTENT PROVIDERS
• ARE ONLY ACTIVE WHEN RESPONDING TO CONTENTRESOLVERS

• BROADCAST RECEIVERS
• ARE ONLY ACTIVE WHEN RESPONDING TO BROADCASTS
ANDROID MANIFEST
• ITS MAIN PURPOSE IN LIFE IS TO DECLARE THE
COMPONENTS TO THE SYSTEM:
<?XML VERSION="1.0" ENCODING="UTF-8"?>
<MANIFEST . . . >
<APPLICATION . . . >
<ACTIVITY
ANDROID:NAME="COM.EXAMPLE.PROJECT.FRENETICACTIVIT
Y"
ANDROID:ICON="@DRAWABLE/SMALL_PIC.PNG"
ANDROID:LABEL="@STRING/FRENETICLABEL"
... >
</ACTIVITY>
...
</APPLICATION>
</MANIFEST>
INTENT FILTERS
• DECLARE INTENTS HANDLED BY THE CURRENT APPLICATION
Shows in the
(IN THE ANDROIDMANIFEST):

Launcher and
is the main
activity to
start

<?XML VERSION="1.0" ENCODING="UTF-8"?>
<MANIFEST . . . >
<APPLICATION . . . >
<ACTIVITY ANDROID:NAME="COM.EXAMPLE.PROJECT.FRENETICACTIVITY"
ANDROID:ICON="@DRAWABLE/SMALL_PIC.PNG"
ANDROID:LABEL="@STRING/FRENETICLABEL"
... >
<INTENT-FILTER . . . >
<ACTION ANDROID:NAME="ANDROID.INTENT.ACTION.MAIN" />
<CATEGORY ANDROID:NAME="ANDROID.INTENT.CATEGORY.LAUNCHER" />
</INTENT-FILTER>
<INTENT-FILTER . . . >
<ACTION ANDROID:NAME="COM.EXAMPLE.PROJECT.BOUNCE" />
<DATA ANDROID:MIMETYPE="IMAGE/JPEG" />
<CATEGORY ANDROID:NAME="ANDROID.INTENT.CATEGORY.DEFAULT" />
</INTENT-FILTER>
</ACTIVITY>
...
</APPLICATION>
</MANIFEST>

Handles JPEG
images in
some way
DATE STORAGE IN ANDROID
• ANDROID PROVIDES SEVERAL OPTIONS FOR YOU TO
SAVE PERSISTENT APPLICATION DATA. THE SOLUTION
YOU CHOOSE DEPENDS ON YOUR SPECIFIC NEEDS, SUCH
AS WHETHER THE DATA SHOULD BE PRIVATE TO YOUR
APPLICATION OR ACCESSIBLE TO OTHER APPLICATIONS
(AND THE USER) AND HOW MUCH SPACE YOUR DATA
REQUIRES.
YOUR DATA STORAGE OPTIONS ARE
THE FOLLOWING:
• SHARED PREFERENCES
STORE PRIVATE PRIMITIVE DATA IN KEY-VALUE PAIRS.

• INTERNAL STORAGE
STORE PRIVATE DATA ON THE DEVICE MEMORY.
• EXTERNAL STORAGE
STORE PUBLIC DATA ON THE SHARED EXTERNAL STORAGE.
• SQLITE DATABASES
STORE STRUCTURED DATA IN A PRIVATE DATABASE.
• NETWORK CONNECTION
STORE DATA ON THE WEB WITH YOUR OWN NETWORK SERVER.
SHARED PREFERENCES
• THE SHAREDPREFERENCES CLASS PROVIDES A GENERAL
FRAMEWORK THAT ALLOWS YOU TO SAVE AND RETRIEVE
PERSISTENT KEY-VALUE PAIRS OF PRIMITIVE DATA TYPES.
YOU CAN USE SHAREDPREFERENCES TO SAVE ANY
PRIMITIVE DATA: BOOLEANS, FLOATS, INTS, LONGS, AND
STRINGS. THIS DATA WILL PERSIST ACROSS USER
SESSIONS (EVEN IF YOUR APPLICATION IS KILLED).
INTERNAL STORAGE
• YOU CAN SAVE FILES DIRECTLY ON THE DEVICE'S
INTERNAL STORAGE. BY DEFAULT, FILES SAVED TO THE
INTERNAL STORAGE ARE PRIVATE TO YOUR APPLICATION
AND OTHER APPLICATIONS CANNOT ACCESS THEM (NOR
CAN THE USER). WHEN THE USER UNINSTALLS YOUR
APPLICATION, THESE FILES ARE REMOVED.
EXTERNAL STORAGE
• EVERY ANDROID-COMPATIBLE DEVICE SUPPORTS A SHARED
"EXTERNAL STORAGE" THAT YOU CAN USE TO SAVE FILES.
THIS CAN BE A REMOVABLE STORAGE MEDIA (SUCH AS AN SD
CARD) OR AN INTERNAL (NON-REMOVABLE) STORAGE. FILES
SAVED TO THE EXTERNAL STORAGE ARE WORLD-READABLE
AND CAN BE MODIFIED BY THE USER WHEN THEY ENABLE
USB MASS STORAGE TO TRANSFER FILES ON A COMPUTER.
• CAUTION: EXTERNAL STORAGE CAN BECOME UNAVAILABLE
IF THE USER MOUNTS THE EXTERNAL STORAGE ON A
COMPUTER OR REMOVES THE MEDIA, AND THERE'S NO
SECURITY ENFORCED UPON FILES YOU SAVE TO THE
EXTERNAL STORAGE. ALL APPLICATIONS CAN READ AND
WRITE FILES PLACED ON THE EXTERNAL STORAGE AND THE
USER CAN REMOVE THEM.
SQLITE DATABASES
• ANDROID PROVIDES FULL SUPPORT FOR SQLITE
DATABASES. ANY DATABASES YOU CREATE WILL BE
ACCESSIBLE BY NAME TO ANY CLASS IN THE
APPLICATION, BUT NOT OUTSIDE THE APPLICATION.
• THE RECOMMENDED METHOD TO CREATE A NEW SQLITE
DATABASE IS TO CREATE A SUBCLASS OF
SQLITEOPENHELPER AND OVERRIDE THE ONCREATE()
METHOD, IN WHICH YOU CAN EXECUTE A SQLITE
COMMAND TO CREATE TABLES IN THE DATABASE. FOR
EXAMPLE:
NETWORK CONNECTION
• YOU CAN USE THE NETWORK (WHEN IT'S AVAILABLE) TO
STORE AND RETRIEVE DATA ON YOUR OWN WEB-BASED
SERVICES. TO DO NETWORK OPERATIONS, USE CLASSES
IN THE FOLLOWING PACKAGES:

• JAVA.NET.*
• ANDROID.NET.*
SQLLITE AND JAVA
SQLLITE
• EMBEDDED RDBMS
• ACID COMPLIANT ( IN COMPUTER SCIENCE, ACID (ATOMICITY, CONSISTENCY,
ISOLATION, DURABILITY) IS A SET OF PROPERTIES THAT GUARANTEE THAT DATABASE
TRANSACTIONS ARE PROCESSED RELIABLY. IN THE CONTEXT OF DATABASES, A SINGLE
LOGICAL OPERATION ON THE DATA IS CALLED A TRANSACTION. FOR EXAMPLE, A
TRANSFER OF FUNDS FROM ONE BANK ACCOUNT TO ANOTHER, EVEN INVOLVING
MULTIPLE CHANGES SUCH AS DEBITING ONE ACCOUNT AND CREDITING ANOTHER, IS A
SINGLE TRANSACTION.)

• SIZE – ABOUT 257 KBYTES
• NOT A CLIENT/SERVER ARCHITECTURE
• ACCESSED VIA FUNCTION CALLS FROM THE APPLICATION

• WRITING (INSERT, UPDATE, DELETE) LOCKS THE DATABASE,
QUERIES CAN BE DONE IN PARALLEL
SQLLITE
• DATASTORE – SINGLE, CROSS PLATFORM FILE (KINDA LIKE
AN MS ACCESS DB)
• DEFINITIONS
• TABLES
• INDICIES
• DATA
SQLITE DATA TYPES
• THIS IS QUITE DIFFERENT THAN THE NORMAL SQL DATA
TYPES SO PLEASE READ:
HTTP://WWW.SQLITE.ORG/DATATYPE3.HTML
STORAGE CLASSES
• NULL – NULL VALUE
• INTEGER - SIGNED INTEGER, STORED IN 1, 2, 3, 4, 6, OR 8
BYTES DEPENDING ON THE MAGNITUDE OF THE VALUE
• REAL - A FLOATING POINT VALUE, 8-BYTE IEEE FLOATING
POINT NUMBER.
• TEXT - TEXT STRING, STORED USING THE DATABASE
ENCODING (UTF-8, UTF-16BE OR UTF-16LE).
• BLOB. THE VALUE IS A BLOB OF DATA, STORED EXACTLY
AS IT WAS INPUT.
ANDROID.DATABASE.SQLITE
• CONTAINS THE SQLITE DATABASE MANAGEMENT
CLASSES THAT AN APPLICATION WOULD USE TO MANAGE
ITS OWN PRIVATE DATABASE.
ANDROID.DATABASE.SQLITE CLASSES
• SQLITECLOSEABLE - AN OBJECT CREATED FROM A SQLITEDATABASE THAT CAN BE
CLOSED.
• SQLITECURSOR - A CURSOR IMPLEMENTATION THAT EXPOSES RESULTS FROM A
QUERY ON A SQLITEDATABASE.
• SQLITEDATABASE - EXPOSES METHODS TO MANAGE A SQLITE DATABASE.
• SQLITEOPENHELPER - A HELPER CLASS TO MANAGE DATABASE CREATION AND
VERSION MANAGEMENT.
• SQLITEPROGRAM - A BASE CLASS FOR COMPILED SQLITE PROGRAMS.
• SQLITEQUERY - A SQLITE PROGRAM THAT REPRESENTS A QUERY THAT READS THE
RESULTING ROWS INTO A CURSORWINDOW.
• SQLITEQUERYBUILDER - A CONVENIENCE CLASS THAT HELPS BUILD SQL QUERIES
TO BE SENT TO SQLITEDATABASE OBJECTS.
• SQLITESTATEMENT - A PRE-COMPILED STATEMENT AGAINST A SQLITEDATABASE THAT
CAN BE REUSED.
ANDROID.DATABASE.SQLITE.SQLITED
ATABASE

• CONTAINS THE METHODS FOR: CREATING, OPENING,
CLOSING, INSERTING, UPDATING, DELETING AND QUERING
AN SQLITE DATABASE
• THESE METHODS ARE SIMILAR TO JDBC BUT MORE
METHOD ORIENTED THAN WHAT WE SEE WITH JDBC
(REMEMBER THERE IS NOT A RDBMS SERVER RUNNING)
OPENORCREATEDATABASE( )
• THIS METHOD WILL OPEN AN EXISTING DATABASE OR
CREATE ONE IN THE APPLICATION DATA AREA

import android.database.sqlite.SQLiteDatabase;
SQLiteDatabase myDatabase;
myDatabase = openOrCreateDatabase ("my_sqlite_database.db" ,
SQLiteDatabase.CREATE_IF_NECESSARY , null);
SQLITE DATABASE PROPERTIES
• IMPORTANT DATABASE CONFIGURATION OPTIONS
INCLUDE: VERSION, LOCALE, AND THREAD-SAFE LOCKING.

import java.util.Locale;
myDatabase.setVersion(1);
myDatabase.setLockingEnabled(true);
myDatabase.SetLocale(Locale.getDefault());
CREATING TABLES

• CREATE A STATIC STRING CONTAINING THE
SQLITE CREATE STATEMENT, USE THE EXECSQL(
) METHOD TO EXECUTE IT.
String createAuthor = "CREAT TABLE authors (
id INTEGER PRIMARY KEY AUTOINCREMENT,
fname TEXT,
lname TEXT);
myDatabase.execSQL(createAuthor);
INSERT( )
• LONG INSERT(STRING TABLE, STRING NULLCOLUMNHACK,
CONTENTVALUES VALUES)

import android.content.ContentValues;
ContentValues values = new ContentValues( );
values.put("firstname" , "J.K.");
values.put("lastname" , "Rowling");
long newAuthorID = myDatabase.insert("tbl_authors" , "" , values);
UPDATE( )
• INT UPDATE(STRING TABLE, CONTENTVALUES
VALUES, STRING WHERECLAUSE, STRING[ ]
WHEREARGS)
public void updateBookTitle(Integer bookId, String newTitle) {
ContentValues values = new ContentValues();
values.put("title" , newTitle);
myDatabase.update("tbl_books" , values ,
"id=?" , new String[ ] {bookId.toString() } );
}
DELETE( )
• INT DELETE(STRING TABLE, STRING
WHERECLAUSE, STRING[] WHEREARGS)
public void deleteBook(Integer bookId) {
myDatabase.delete("tbl_books" , "id=?" ,
new String[ ] { bookId.toString( ) } ) ;
}
ANDROID.DATABASE

• HTTP://DEVELOPER.ANDROID.COM/REFERENCE/ANDROID/
DATABASE/PACKAGE-SUMMARY.HTML
• CONTAINS CLASSES AND INTERFACES TO EXPLORE DATA
RETURNED THROUGH A CONTENT PROVIDER.
• THE MAIN THING YOU ARE GOING TO USE HERE IS THE
CURSOR INTERFACE TO GET THE DATA FROM THE
RESULTSET THAT IS RETURNED BY A QUERY
HTTP://DEVELOPER.ANDROID.COM/REFERENCE/ANDROID/DATABASE
/CURSOR.HTML
QUERIES
• METHOD OF SQLITEDATABASE CLASS AND PERFORMS QUERIES ON
THE DB AND RETURNS THE RESULTS IN A CURSOR OBJECT
• CURSOR C = MDB.QUERY(P1,P2,P3,P4,P5,P6,P7)
• P1 ; TABLE NAME (STRING)
• P2 ; COLUMNS TO RETURN (STRING ARRAY)
• P3 ; WHERE CLAUSE (USE NULL FOR ALL, ?S FOR SELECTION ARGS)
• P4 ; SELECTION ARG VALUES FOR ?S OF WHERE CLAUSE
• P5 ; GROUP BY ( NULL FOR NONE) (STRING)
• P6 ; HAVING (NULL UNLESS GROUP BY REQUIRES ONE) (STRING)
• P7 ; ORDER BY (NULL FOR DEFAULT ORDERING)(STRING)

• P8 ; LIMIT (NULL FOR NO LIMIT) (STRING)
SIMPLE QUERIES
• SQL - "SELECT * FROM ABC;"
SQLITE - CURSOR C =
MDB.QUERY(ABC,NULL,NULL,NULL,NULL,NULL,NULL);

• SQL - "SELECT * FROM ABC WHERE C1=5"
SQLITE - CURSOR C = MDB.QUERY(
ABC,NULL,"C1=?" , NEW STRING[ ] {"5"},NULL,NULL,NULL);
• SQL – "SELECT TITLE,ID FROM BOOKS ORDER BY TITLE ASC"
SQLITE – STRING COLSTORETURN [ ] {"TITLE","ID"};
STRING SORTORDER = "TITLE ASC";
CURSOR C = MDB.QUERY("BOOKS",COLSTORETURN,
NULL,NULL,NULL,NULL,SORTORDER);
SENSORS IN ANDROID
• MOST ANDROID-POWERED DEVICES HAVE BUILT-IN
SENSORS THAT MEASURE MOTION, ORIENTATION, AND
VARIOUS ENVIRONMENTAL CONDITIONS.
• THESE SENSORS ARE CAPABLE OF PROVIDING RAW
DATA WITH HIGH PRECISION AND ACCURACY, AND ARE
USEFUL IF YOU WANT TO MONITOR THREEDIMENSIONAL DEVICE MOVEMENT OR POSITIONING, OR
YOU WANT TO MONITOR CHANGES IN THE AMBIENT
ENVIRONMENT NEAR A DEVICE.
• FOR EXAMPLE, A GAME MIGHT TRACK READINGS FROM
A DEVICE'S GRAVITY SENSOR TO INFER COMPLEX USER
GESTURES AND MOTIONS, SUCH AS TILT, SHAKE,
ROTATION, OR SWING. LIKEWISE, A WEATHER
APPLICATION MIGHT USE A DEVICE'S TEMPERATURE
SENSOR AND HUMIDITY SENSOR TO CALCULATE AND
REPORT THE DEWPOINT, OR A TRAVEL APPLICATION
MIGHT USE THE GEOMAGNETIC FIELD SENSOR AND
ACCELEROMETER TO REPORT A COMPASS BEARING.
THE ANDROID PLATFORM SUPPORTS
THREE BROAD CATEGORIES OF SENSORS:
• MOTION SENSORS

THESE SENSORS MEASURE ACCELERATION FORCES AND
ROTATIONAL FORCES ALONG THREE AXES. THIS CATEGORY INCLUDES
ACCELEROMETERS, GRAVITY SENSORS, GYROSCOPES, AND ROTATIONAL
VECTOR SENSORS.

• ENVIRONMENTAL SENSORS
THESE SENSORS MEASURE VARIOUS ENVIRONMENTAL
PARAMETERS, SUCH AS AMBIENT AIR TEMPERATURE AND PRESSURE,
ILLUMINATION, AND HUMIDITY. THIS CATEGORY INCLUDES BAROMETERS,
PHOTOMETERS, AND THERMOMETERS.

• POSITION SENSORS
THESE SENSORS MEASURE THE PHYSICAL POSITION OF A
DDMS
• ANDROID SHIPS WITH A DEBUGGING TOOL CALLED THE
DALVIK DEBUG MONITOR SERVER (DDMS), WHICH
PROVIDES PORT-FORWARDING SERVICES, SCREEN
CAPTURE ON THE DEVICE, THREAD AND HEAP
INFORMATION ON THE DEVICE, LOGCAT, PROCESS, AND
RADIO STATE INFORMATION, INCOMING CALL AND SMS
SPOOFING, LOCATION DATA SPOOFING, AND MORE. THIS
PAGE PROVIDES A MODEST DISCUSSION OF DDMS
FEATURES; IT IS NOT AN EXHAUSTIVE EXPLORATION OF
ALL THE FEATURES AND CAPABILITIES.
• ON ANDROID, EVERY APPLICATION RUNS IN ITS OWN PROCESS, EACH OF
WHICH RUNS IN ITS OWN VIRTUAL MACHINE (VM). EACH VM EXPOSES A
UNIQUE PORT THAT A DEBUGGER CAN ATTACH TO.

• WHEN DDMS STARTS, IT CONNECTS TO ADB. WHEN A DEVICE IS
CONNECTED, A VM MONITORING SERVICE IS CREATED BETWEEN ADB
AND DDMS, WHICH NOTIFIES DDMS WHEN A VM ON THE DEVICE IS
STARTED OR TERMINATED. ONCE A VM IS RUNNING, DDMS RETRIEVES
THE VM'S PROCESS ID (PID), VIA ADB, AND OPENS A CONNECTION TO THE
VM'S DEBUGGER, THROUGH THE ADB DAEMON (ADBD) ON THE DEVICE.
DDMS CAN NOW TALK TO THE VM USING A CUSTOM WIRE PROTOCOL.

• DDMS ASSIGNS A DEBUGGING PORT TO EACH VM ON THE DEVICE.
TYPICALLY, DDMS ASSIGNS PORT 8600 FOR THE FIRST DEBUGGABLE VM,
THE NEXT ON 8601, AND SO ON. WHEN A DEBUGGER CONNECTS TO ONE
OF THESE PORTS, ALL TRAFFIC IS FORWARDED TO THE DEBUGGER
FROM THE ASSOCIATED VM. YOU CAN ONLY ATTACH A SINGLE
DEBUGGER TO A SINGLE PORT, BUT DDMS CAN HANDLE MULTIPLE,
ATTACHED DEBUGGERS.
GOOGLE PLAY MARKET
CHECKLIST

Weitere ähnliche Inhalte

Was ist angesagt?

Introduction to android
Introduction to androidIntroduction to android
Introduction to androidzeelpatel0504
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentationconnectshilpa
 
Android Operating System
Android Operating SystemAndroid Operating System
Android Operating Systemrenoy reji
 
Android - A brief introduction
Android - A brief introductionAndroid - A brief introduction
Android - A brief introductionRoshan Gautam
 
IOS vs Android presentation by Saikrishna
IOS vs Android presentation by SaikrishnaIOS vs Android presentation by Saikrishna
IOS vs Android presentation by SaikrishnaSaikrishna Tanguturu
 
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...ReformedTech
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On AndroidTeachMission
 
Android presentation
Android presentationAndroid presentation
Android presentationDipesh Shome
 
Android app development
Android app developmentAndroid app development
Android app developmentTanmoy Roy
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my collegeSneha Lata
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-pptSrijib Roy
 
Mobile Application Development: Hybrid, Native and Mobile Web Apps
Mobile Application Development: Hybrid, Native and Mobile Web AppsMobile Application Development: Hybrid, Native and Mobile Web Apps
Mobile Application Development: Hybrid, Native and Mobile Web AppsPaul Sons
 
Mobile operating system by Shabeeb
Mobile operating system by ShabeebMobile operating system by Shabeeb
Mobile operating system by ShabeebShabeeb Shabi
 
Android presantation
Android presantationAndroid presantation
Android presantationUdayJethva
 

Was ist angesagt? (20)

Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Android seminar-presentation
Android seminar-presentationAndroid seminar-presentation
Android seminar-presentation
 
Android Operating System
Android Operating SystemAndroid Operating System
Android Operating System
 
PPT on Android
PPT on AndroidPPT on Android
PPT on Android
 
Android - A brief introduction
Android - A brief introductionAndroid - A brief introduction
Android - A brief introduction
 
Android ppt
Android pptAndroid ppt
Android ppt
 
IOS vs Android presentation by Saikrishna
IOS vs Android presentation by SaikrishnaIOS vs Android presentation by Saikrishna
IOS vs Android presentation by Saikrishna
 
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...
Native, Hybrid, or Cross-platform Development? What Type of Mobile App is Bes...
 
Android ppt
Android pptAndroid ppt
Android ppt
 
Android presentation slide
Android presentation slideAndroid presentation slide
Android presentation slide
 
Presentation On Android
Presentation On AndroidPresentation On Android
Presentation On Android
 
Android presentation
Android presentationAndroid presentation
Android presentation
 
Android app development
Android app developmentAndroid app development
Android app development
 
My presentation on Android in my college
My presentation on Android in my collegeMy presentation on Android in my college
My presentation on Android in my college
 
Basic android-ppt
Basic android-pptBasic android-ppt
Basic android-ppt
 
Android
AndroidAndroid
Android
 
Mobile Application Development: Hybrid, Native and Mobile Web Apps
Mobile Application Development: Hybrid, Native and Mobile Web AppsMobile Application Development: Hybrid, Native and Mobile Web Apps
Mobile Application Development: Hybrid, Native and Mobile Web Apps
 
Android ppt
Android ppt Android ppt
Android ppt
 
Mobile operating system by Shabeeb
Mobile operating system by ShabeebMobile operating system by Shabeeb
Mobile operating system by Shabeeb
 
Android presantation
Android presantationAndroid presantation
Android presantation
 

Andere mochten auch

Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating systemSalma Begum
 
What is Android OS in ppt ?
What is Android OS in ppt ? What is Android OS in ppt ?
What is Android OS in ppt ? SoonTips.com
 
Android OS Presentation
Android OS PresentationAndroid OS Presentation
Android OS Presentationhession25819
 
Android PowerPoint Templates and Backgrounds
Android PowerPoint Templates and BackgroundsAndroid PowerPoint Templates and Backgrounds
Android PowerPoint Templates and BackgroundsTemplateforpowerpoint
 
Android resources
Android resourcesAndroid resources
Android resourcesma-polimi
 
android content providers
android content providersandroid content providers
android content providersDeepa Rani
 
Android Screen Containers & Layouts
Android Screen Containers & LayoutsAndroid Screen Containers & Layouts
Android Screen Containers & LayoutsVijay Rastogi
 
Android content providers
Android content providersAndroid content providers
Android content providersKurt Mbanje
 
Location based services
Location based servicesLocation based services
Location based serviceswatsonda
 
Android resource
Android resourceAndroid resource
Android resourceKrazy Koder
 
Android contentprovider
Android contentproviderAndroid contentprovider
Android contentproviderKrazy Koder
 
Content providers in Android
Content providers in AndroidContent providers in Android
Content providers in AndroidAlexey Ustenko
 
Positioning techniques in 3 g networks (1)
Positioning techniques in 3 g networks (1)Positioning techniques in 3 g networks (1)
Positioning techniques in 3 g networks (1)kike2005
 
android layouts
android layoutsandroid layouts
android layoutsDeepa Rani
 
Android share preferences
Android share preferencesAndroid share preferences
Android share preferencesAjay Panchal
 
Day 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIDay 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIAhsanul Karim
 

Andere mochten auch (20)

Android seminar ppt
Android seminar pptAndroid seminar ppt
Android seminar ppt
 
Android ppt
 Android ppt Android ppt
Android ppt
 
Presentation on Android operating system
Presentation on Android operating systemPresentation on Android operating system
Presentation on Android operating system
 
What is Android OS in ppt ?
What is Android OS in ppt ? What is Android OS in ppt ?
What is Android OS in ppt ?
 
Android OS Presentation
Android OS PresentationAndroid OS Presentation
Android OS Presentation
 
Android PowerPoint Templates and Backgrounds
Android PowerPoint Templates and BackgroundsAndroid PowerPoint Templates and Backgrounds
Android PowerPoint Templates and Backgrounds
 
Android resources
Android resourcesAndroid resources
Android resources
 
android content providers
android content providersandroid content providers
android content providers
 
Android Screen Containers & Layouts
Android Screen Containers & LayoutsAndroid Screen Containers & Layouts
Android Screen Containers & Layouts
 
Android Rooting
Android RootingAndroid Rooting
Android Rooting
 
Android content providers
Android content providersAndroid content providers
Android content providers
 
Location based services
Location based servicesLocation based services
Location based services
 
Android resource
Android resourceAndroid resource
Android resource
 
Android contentprovider
Android contentproviderAndroid contentprovider
Android contentprovider
 
Content providers in Android
Content providers in AndroidContent providers in Android
Content providers in Android
 
Positioning techniques in 3 g networks (1)
Positioning techniques in 3 g networks (1)Positioning techniques in 3 g networks (1)
Positioning techniques in 3 g networks (1)
 
Android UI Patterns
Android UI PatternsAndroid UI Patterns
Android UI Patterns
 
android layouts
android layoutsandroid layouts
android layouts
 
Android share preferences
Android share preferencesAndroid share preferences
Android share preferences
 
Day 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts APIDay 15: Content Provider: Using Contacts API
Day 15: Content Provider: Using Contacts API
 

Ähnlich wie Android ppt

Ähnlich wie Android ppt (20)

Android os
Android osAndroid os
Android os
 
Android operating system
Android operating systemAndroid operating system
Android operating system
 
Lec001
Lec001Lec001
Lec001
 
Android
AndroidAndroid
Android
 
Androidppt 120228101141-phpapp02
Androidppt 120228101141-phpapp02Androidppt 120228101141-phpapp02
Androidppt 120228101141-phpapp02
 
Android
AndroidAndroid
Android
 
Anjali
AnjaliAnjali
Anjali
 
Android Os
Android OsAndroid Os
Android Os
 
Android_Seminar
Android_SeminarAndroid_Seminar
Android_Seminar
 
Introduction to Android
Introduction to AndroidIntroduction to Android
Introduction to Android
 
ANDROID.SREE
ANDROID.SREEANDROID.SREE
ANDROID.SREE
 
Aandroid
AandroidAandroid
Aandroid
 
Android
AndroidAndroid
Android
 
Android based os
Android based osAndroid based os
Android based os
 
POWERPOINT2
POWERPOINT2POWERPOINT2
POWERPOINT2
 
Mobile application development4
Mobile application development4Mobile application development4
Mobile application development4
 
Mobile application development
Mobile application developmentMobile application development
Mobile application development
 
Mobile application development2
Mobile application development2Mobile application development2
Mobile application development2
 
Mobile application development2
Mobile application development2Mobile application development2
Mobile application development2
 
Secured Mobile Application Development in Android, Blackberry & iOS
Secured Mobile Application Development in Android, Blackberry & iOSSecured Mobile Application Development in Android, Blackberry & iOS
Secured Mobile Application Development in Android, Blackberry & iOS
 

Mehr von Tarun Bamba

Jdbc odbc 64 bit driver error by tarun bamba
Jdbc odbc 64 bit driver error by tarun bambaJdbc odbc 64 bit driver error by tarun bamba
Jdbc odbc 64 bit driver error by tarun bambaTarun Bamba
 
Secret code android
Secret code androidSecret code android
Secret code androidTarun Bamba
 
Versions of android
Versions of androidVersions of android
Versions of androidTarun Bamba
 

Mehr von Tarun Bamba (6)

Python Open CV
Python Open CVPython Open CV
Python Open CV
 
Power bi
Power biPower bi
Power bi
 
Jdbc odbc 64 bit driver error by tarun bamba
Jdbc odbc 64 bit driver error by tarun bambaJdbc odbc 64 bit driver error by tarun bamba
Jdbc odbc 64 bit driver error by tarun bamba
 
Sensor android
Sensor androidSensor android
Sensor android
 
Secret code android
Secret code androidSecret code android
Secret code android
 
Versions of android
Versions of androidVersions of android
Versions of android
 

Kürzlich hochgeladen

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 

Android ppt

  • 1.
  • 3. A MOBILE OPERATING SYSTEM • A MOBILE OPERATING SYSTEM, ALSO REFERRED TO AS MOBILE OS, IS AN OPERATING SYSTEM THAT OPERATES A SMARTPHONE, TABLET, PDA, OR OTHER MOBILE DEVICE. MODERN MOBILE OPERATING SYSTEMS COMBINE THE FEATURES OF A PERSONAL COMPUTER OPERATING SYSTEM WITH OTHER FEATURES, INCLUDING A TOUCHSCREEN, CELLULAR, BLUETOOTH, WI-FI, GPS MOBILE NAVIGATION, CAMERA, VIDEO CAMERA, SPEECH RECOGNITION, VOICE RECORDER, MUSIC PLAYER, NEAR FIELD COMMUNICATION AND INFRARED BLASTER. • MOBILE DEVICES WITH MOBILE COMMUNICATIONS CAPABILITIES (E.G. SMARTPHONES) CONTAIN TWO MOBILE OPERATING SYSTEMS - THE MAIN USER-FACING SOFTWARE PLATFORM IS SUPPLEMENTED BY A SECOND LOW-LEVEL PROPRIETARY REAL-TIME OPERATING SYSTEM WHICH OPERATES THE RADIO AND OTHER HARDWARE. RESEARCH HAS SHOWN THAT THESE LOW-LEVEL SYSTEMS MAY CONTAIN A RANGE OF SECURITY VULNERABILITIES PERMITTING MALICIOUS BASE STATIONS TO GAIN HIGH LEVELS OF CONTROL OVER THE MOBILE DEVICE.
  • 4. • BLACKBERRY • IT IS CLOSED SOURCE AND PROPRIETARY. BLACKBERRY 10 (PREVIOUSLY BLACKBERRY BBX) WAS THE NEXT GENERATION PLATFORM FOR BLACKBERRY SMARTPHONES AND TABLETS. ONE OS WAS PLANNED FOR BOTH BLACKBERRY SMARTPHONES AND TABLETS GOING FORWARD •IOS • IOS IS FROM APPLE INC. IT IS CLOSED SOURCE AND PROPRIETARY AND BUILT ON OPEN SOURCE DARWIN CORE OS. THE APPLE IPHONE, IPOD TOUCH, IPAD AND SECOND-GENERATION APPLE.
  • 5. • WINDOWS PHONE • WINDOWS PHONE IS FROM MICROSOFT. IT IS CLOSED SOURCE AND PROPRIETARY. ON FEBRUARY 15, 2010, MICROSOFT UNVEILED ITS NEXT-GENERATION MOBILE OS, WINDOWS PHONE. THE NEW MOBILE OS INCLUDES A COMPLETELY NEW OVERHAULED UI INSPIRED BY MICROSOFT'S "METRO DESIGN LANGUAGE". IT INCLUDES FULL INTEGRATION OF MICROSOFT SERVICES SUCH AS MICROSOFT SKYDRIVE AND OFFICE, XBOX MUSIC, XBOX VIDEO, XBOX LIVE GAMES AND BING, BUT ALSO INTEGRATES WITH MANY OTHER NON-MICROSOFT SERVICES SUCH AS FACEBOOK AND GOOGLE ACCOUNTS. WINDOWS PHONE DEVICES ARE MADE PRIMARILY BY NOKIA, ALONG WITH HTC, SAMSUNG, HUAWEI AND OTHER. OEMS. (ORIGINAL EQUIPMENT MANUFACTURER)
  • 7. ANDROID O/S • ANDROID IS AN OPERATING SYSTEM BASED ON THE LINUX KERNEL AND DESIGNED PRIMARILY FOR TOUCHSCREEN MOBILE DEVICES SUCH AS SMARTPHONES AND TABLET COMPUTERS. INITIALLY DEVELOPED BY ANDROID, INC., WHICH GOOGLE BACKED FINANCIALLY AND LATER BOUGHT IN 2005, ANDROID WAS UNVEILED IN 2007 ALONG WITH THE FOUNDING OF THE OPEN HANDSET ALLIANCE: A CONSORTIUM OF HARDWARE, SOFTWARE, AND TELECOMMUNICATION COMPANIES DEVOTED TO ADVANCING OPEN STANDARDS FOR MOBILE DEVICES. THE FIRST PUBLICLY AVAILABLE SMARTPHONE RUNNING ANDROID, THE HTC DREAM, WAS RELEASED ON OCTOBER 22, 2008
  • 8. • ANDROID'S SOURCE CODE IS RELEASED BY GOOGLE UNDER THE APACHE LICENSE; • AS OF JULY 2013, ANDROID HAS THE LARGEST NUMBER OF APPLICATIONS ("APPS"), AVAILABLE FOR DOWNLOAD IN GOOGLE PLAY STORE WHICH HAS HAD OVER 1 MILLION APPS PUBLISHED, AND OVER 50 BILLION DOWNLOADS. • A DEVELOPER SURVEY CONDUCTED IN APRIL–MAY 2013 FOUND THAT ANDROID IS THE MOST USED PLATFORM AMONG DEVELOPERS: IT IS USED BY 71% OF THE MOBILE DEVELOPERS POPULATION
  • 9.
  • 10. OHA • THE OPEN HANDSET ALLIANCE (OHA) IS A CONSORTIUM OF 84 FIRMS TO DEVELOP OPEN STANDARDS FOR MOBILE DEVICES. MEMBER FIRMS INCLUDE GOOGLE, HTC, SONY, DELL, INTEL, MOTOROLA, QUALCOMM, TEXAS INSTRUMENTS, SAMSUNG ELECTRONICS, LG ELECTRONICS, T-MOBILE, SPRINT CORPORATION, NVIDIA, AND WIND RIVER SYSTEMS. • THE OHA WAS ESTABLISHED ON 6 NOVEMBER 2007, LED BY GOOGLE WITH 34 MEMBERS INCLUDING MOBILE HANDSET MAKERS, APPLICATION DEVELOPERS, SOME MOBILE CARRIERS AND CHIP MAKERS. • ANDROID, THE FLAGSHIP SOFTWARE OF THE ALLIANCE, IS BASED ON AN OPEN SOURCE LICENSE AND HAS COMPETED AGAINST MOBILE PLATFORMS FROM APPLE, MICROSOFT, NOKIA (SYMBIAN), HP (FORMERLY PALM), SAMSUNG ELECTRONICS / INTEL (TIZEN, BADA), AND BLACKBERRY. • AS PART OF ITS EFFORTS TO PROMOTE A UNIFIED ANDROID PLATFORM, OHA MEMBERS ARE CONTRACTUALLY FORBIDDEN FROM PRODUCING DEVICES THAT ARE BASED OFF INCOMPATIBLE FORKS OF ANDROID
  • 11.
  • 13. ANDROID-POWERED MICROWAVE By Touch Revolution – at CES 2010 http://www.pocket-lint.com/news/30712/android-powered-microwave-cookinggoogle
  • 21. ANDROID VERSIONS Honeycomb Android 3.0-3.2 Ice cream Sandwich Jelly Bean KitKat Android 4.0+ Android 4.1.1 Android 4.4
  • 23. DISTRIBUTION OF DEVICES DATA COLLECTED DURING A 14-DAY PERIOD ENDING ON JANUARY 3, 2012 HTTP://DEVELOPER.ANDROID.COM/RESOURCES/DASHBOARD/PLATFORM-VERSIONS.HTML
  • 25. WHAT IS GOOGLE ANDROID? • A SOFTWARE STACK FOR MOBILE DEVICES THAT INCLUDES • AN OPERATING SYSTEM • MIDDLEWARE • KEY APPLICATIONS • USES LINUX TO PROVIDE CORE SYSTEM SERVICES • • • • • SECURITY MEMORY MANAGEMENT PROCESS MANAGEMENT POWER MANAGEMENT HARDWARE DRIVERS
  • 27. MOBILE DEVICES: ADVANTAGES • ALWAYS WITH THE USER • TYPICALLY HAVE INTERNET ACCESS • TYPICALLY GPS ENABLED • TYPICALLY HAVE ACCELEROMETER & COMPASS • MOST HAVE CAMERAS & MICROPHONES • MANY APPS ARE FREE OR LOW-COST
  • 28. MOBILE DEVICES: DISADVANTAGES • • • • LIMITED SCREEN SIZE LIMITED BATTERY LIFE LIMITED PROCESSOR SPEED LIMITED AND SOMETIMES SLOW NETWORK ACCESS • LIMITED OR AWKWARD INPUT: SOFT KEYBOARD, PHONE KEYPAD, TOUCH SCREEN, OR STYLUS • LIMITED WEB BROWSER FUNCTIONALITY • RANGE OF PLATFORMS & CONFIGURATIONS ACROSS DEVICES
  • 29. MOBILE APPLICATIONS • WHAT ARE THEY? • ANY APPLICATION THAT RUNS ON A MOBILE DEVICE • TYPES • WEB APPS: RUN IN A WEB BROWSER • HTML, JAVASCRIPT, FLASH, SERVER-SIDE COMPONENTS, ETC. • NATIVE: COMPILED BINARIES FOR THE DEVICE • OFTEN MAKE USE OF WEB SERVICES
  • 30. ANDROID APPS • BUILT USING JAVA AND NEW SDK LIBRARIES • NO SUPPORT FOR SOME JAVA LIBRARIES LIKE SWING & AWT • JAVA CODE COMPILED INTO DALVIK BYTE CODE (.DEX) • OPTIMIZED FOR MOBILE DEVICES (BETTER MEMORY MANAGEMENT, BATTERY UTILIZATION, ETC.) • DALVIK VM RUNS .DEX FILES
  • 31. • DEVELOPMENT PROCESS FOR AN ANDROID APP http://developer.android.com/guide/developing/index.html
  • 32. ANDROID DESIGN PHILOSOPHY • APPLICATIONS SHOULD BE: • FAST • RESOURCE CONSTRAINTS: <200MB RAM, SLOW PROCESSOR • RESPONSIVE • APPS MUST RESPOND TO USER ACTIONS WITHIN 5 SECONDS • SECURE • APPS DECLARE PERMISSIONS IN MANIFEST • SEAMLESS • USABILITY IS KEY, PERSIST DATA, SUSPEND SERVICES • ANDROID KILLS PROCESSES IN BACKGROUND AS NEEDED
  • 33. BUILDING AND RUNNING Compiled resources (xml files) Android Debug Bridge • ADB IS A CLIENT SERVER PROGRAM THAT CONNECTS CLIENTS ON DEVELOPER MACHINE TO DEVICES/EMULATORS TO FACILITATE DEVELOPMENT. • AN IDE LIKE ECLIPSE HANDLES THIS ENTIRE PROCESS FOR YOU. http://developer.android.com/guide/developing/building/index.html#detailed-build
  • 35. APPLICATIONS ARE BOXED • BY DEFAULT, EACH APP IS RUN IN ITS OWN LINUX PROCESS • PROCESS STARTED WHEN APP’S CODE NEEDS TO BE EXECUTED • THREADS CAN BE STARTED TO HANDLE TIMECONSUMING OPERATIONS • EACH PROCESS HAS ITS OWN DALVIK VM • BY DEFAULT, EACH APP IS ASSIGNED UNIQUE LINUX ID • PERMISSIONS ARE SET SO APP’S FILES ARE ONLY VISIBLE TO THAT APP
  • 37. PUBLISHING AND MONETIZING • PAID APPS IN ANDROID MARKET, VARIOUS OTHER MARKETS • FREE, AD-SUPPORTED APPS IN ANDROID MARKET • AD NETWORKS (GOOGLE ADMOB, QUATTRO WIRELESS) • SELL YOUR OWN ADS • SERVICES TO OTHER DEVELOPERS • CONTESTS (ANDROID DEVELOPER CHALLENGE) • SELLING PRODUCTS FROM WITHIN YOUR APP
  • 39. THE ANDROID OS – 2. FILE SYSTEM  SUPPORTED BY YAFFS2 FILE SYSTEM.  YAFFS: YET ANOTHER FLASH FILE SYSTEM  YAFFS1: DESIGNED FOR OLD NAND CHIPS WITH 512 BYTE PAGES PLUS 16 BYTE SPARE AREAS.  YAFFS2: EVOLVED FROM YAFFS1 TO ACCOMMODATE NEWER CHIPS WITH 2048 BYTE PAGES PLUS 64 BYTES SPARE AREAS.
  • 40. YAFFS2 • YAFFS (YET ANOTHER FLASH FILE SYSTEM) IS AN OPENSOURCE FILE SYSTEM SPECIFICALLY DESIGNED TO BE FAST, ROBUST AND SUITABLE FOR EMBEDDED USE WITH NAND AND NOR FLASH. IT IS WIDELY USED WITH LINUX, RTOSS (A REAL-TIME OPERATING SYSTEM) AT ALL, IN CONSUMER DEVICES. IT IS AVAILABLE UNDER GNU PUBLIC LICENSE, GPL, OR ON COMMERCIAL TERMS FROM ALEPH ONE.
  • 41. ANDROID SDK MOBILE DEVICE EMULATOR • THE ANDROID SDK INCLUDES A MOBILE DEVICE EMULATOR — A VIRTUAL MOBILE DEVICE THAT RUNS ON YOUR COMPUTER. THE EMULATOR LETS YOU DEVELOP AND TEST ANDROID APPLICATIONS WITHOUT USING A PHYSICAL DEVICE.
  • 42. 32 bit / 64 bit • The main difference between 32-bit processors and 64-bit processors is the speed they operate. 64-bit processors can come in dual core, quad core, and six core versions for home computing (with eight core versions coming soon). • It is important to note that 64-bit computers can still use 32-bit based software programs, even when the Windows operating system is a 64bit version. • Another big difference between 32-bit processors and 64-bit processors is the maximum amount of memory (RAM) that is supported. 32-bit computers support a maximum of 3-4GB of memory, whereas a 64-bit computer can support memory amounts over 4 GB. • One thing to note is that 3D graphic programs and games do not benefit much, if at all, from switching to a 64-bit computer, unless the program is a 64-bit program. A 32-bit processor is adequate for any program written for a 32-bit processor • In the end, 64-bit processors are becoming more and more commonplace in home computers. Most manufacturers build computers with 64-bit processors due to cheaper prices and because more users are now using 64-bit operating systems and programs.
  • 44. SETTING UP ANDROID DEVELOPMENT ENVIRONMENT / INSTALLING ANDROID • STEP 1 : DOWNLOAD JDK: (JAVA DEVELOPMENT KIT). FOR JAVA DEVELOPERS. INCLUDES A COMPLETE JRE PLUS TOOLS FOR DEVELOPING, DEBUGGING, AND MONITORING JAVA APPLICATIONS. • STEP 2 : • GET THE ANDROID SDK • THE ANDROID SDK PROVIDES YOU THE API LIBRARIES AND DEVELOPER TOOLS NECESSARY TO BUILD, TEST, AND DEBUG APPS FOR ANDROID. • WITH A SINGLE DOWNLOAD, THE ADT BUNDLE INCLUDES EVERYTHING YOU NEED TO BEGIN DEVELOPING APPS: • ECLIPSE + ADT PLUGIN • ANDROID SDK TOOLS • ANDROID PLATFORM-TOOLS • THE LATEST ANDROID PLATFORM • THE LATEST ANDROID SYSTEM IMAGE FOR THE EMULATOR • STEP 3 AFTER INSTALL THE APPLICATION YOU NEED TO SPECIFY THE PACKAGES, THAT WHICH API VERSION YOU NEED.
  • 45. ANDROID SDK • ONCE INSTALLED OPEN THE SDK MANAGER • INSTALL THE DESIRED PACKAGES • CREATE AN ANDROID VIRTUAL DEVICE (AVD)
  • 47. AVD
  • 48. ADT PLUGIN (1) • IN ECLIPSE, GO TO HELP -> INSTALL NEW SOFTWARE • CLICK ‗ADD‘ IN TOP RIGHT • ENTER: • NAME: ADT PLUGIN • LOCATION: HTTPS://DL-SSL.GOOGLE.COM/ANDROID/ECLIPSE/ • CLICK OK, THEN SELECT ‗DEVELOPER TOOLS‘, CLICK NEXT • CLICK NEXT AND THEN FINISH • AFTERWARDS, RESTART ECLIPSE • SPECIFY SDK LOCATION (NEXT 3 SLIDES) • MUST DO THIS EVERY TIME START A NEW PROJECT IN A NEW LOCATION (AT LEAST IN WINDOWS)
  • 54. PROJECT COMPONENTS • SRC – YOUR SOURCE CODE • GEN – AUTO-GENERATED CODE (USUALLY JUST R.JAVA) • INCLUDED LIBRARIES • RESOURCES • DRAWABLES (LIKE .PNG IMAGES) • LAYOUTS • VALUES (LIKE STRINGS) • MANIFEST FILE
  • 55. XML • USED TO DEFINE SOME OF THE RESOURCES • LAYOUTS (UI) • STRINGS • MANIFEST FILE • SHOULDN‘T USUALLY HAVE TO EDIT IT DIRECTLY, ECLIPSE CAN DO THAT FOR YOU • PREFERRED WAY OF CREATING UIS • SEPARATES THE DESCRIPTION OF THE LAYOUT FROM ANY ACTUAL CODE THAT CONTROLS IT • CAN EASILY TAKE A UI FROM ONE PLATFORM TO ANOTHER
  • 56. R CLASS • AUTO-GENERATED: YOU SHOULDN‘T EDIT IT • CONTAINS IDS OF THE PROJECT RESOURCES • ENFORCES GOOD SOFTWARE ENGINEERING • USE FINDVIEWBYID AND RESOURCES OBJECT TO GET ACCESS TO THE RESOURCES • EX. BUTTON B = (BUTTON)FINDVIEWBYID(R.ID.BUTTON1) • EX. GETRESOURCES().GETSTRING(R.STRING.HELLO));
  • 57. LAYOUTS (1) • ECLIPSE HAS A GREAT UI CREATOR • GENERATES THE XML FOR YOU • COMPOSED OF VIEW OBJECTS • CAN BE SPECIFIED FOR PORTRAIT AND LANDSCAPE MODE • USE SAME FILE NAME, SO CAN MAKE COMPLETELY DIFFERENT UIS FOR THE ORIENTATIONS WITHOUT MODIFYING ANY CODE
  • 59. LAYOUTS (3) • CLICK ‗CREATE‘ TO MAKE LAYOUT MODIFICATIONS • WHEN IN PORTRAIT MODE CAN SELECT ‗PORTRAIT‘ TO MAKE A RES SUB FOLDER FOR PORTRAIT LAYOUTS • LIKEWISE FOR LANDSCAPE LAYOUTS WHILE IN LANDSCAPE MODE • WILL CREATE FOLDERS TITLED ‗LAYOUT-PORT‘ AND ‗LAYOUT-LAND‘ • NOTE: THESE ‗PORT‘ AND ‗LAND‘ FOLDERS ARE EXAMPLES OF ‗ALTERNATE LAYOUTS‘, SEE HERE FOR MORE INFO • HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/RESOURCES/PROVIDINGRESOURCES.HTML • AVOID ERRORS BY MAKING SURE COMPONENTS
  • 61. STRINGS • IN RES/VALUES • STRINGS.XML • APPLICATION WIDE AVAILABLE STRINGS • PROMOTES GOOD SOFTWARE ENGINEERING • UI COMPONENTS MADE IN THE UI EDITOR SHOULD HAVE TEXT DEFINED IN STRINGS.XML • STRINGS ARE JUST ONE KIND OF ‗VALUE‘ THERE ARE MANY OTHERS
  • 62. MANIFEST FILE (1) • CONTAINS CHARACTERISTICS ABOUT YOUR APPLICATION • WHEN HAVE MORE THAN ONE ACTIVITY IN APP, NEED TO SPECIFY IT IN MANIFEST FILE • GO TO GRAPHICAL VIEW OF THE MANIFEST FILE • ADD AN ACTIVITY IN THE BOTTOM RIGHT • BROWSE FOR THE NAME OF THE ACTIVITY • NEED TO SPECIFY SERVICES AND OTHER COMPONENTS TOO • ALSO IMPORTANT TO DEFINE PERMISSIONS AND EXTERNAL LIBRARIES, LIKE GOOGLE MAPS API
  • 63. MANIFEST FILE (2) – ADDING AN ACTIVITY
  • 64. ANDROID PROGRAMMING COMPONENTS • ACTIVITY • HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTALS/ACTIV ITIES.HTML • SERVICE • HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTALS/SERVI CES.HTML • CONTENT PROVIDERS • BROADCAST RECEIVERS • ANDROID IN A NUTSHELL: • HTTP://DEVELOPER.ANDROID.COM/GUIDE/TOPICS/FUNDAMENTA LS.HTML
  • 65. ACTIVITIES (1) • THE BASIS OF ANDROID APPLICATIONS • A SINGLE ACTIVITY DEFINES A SINGLE VIEWABLE SCREEN • THE ACTIONS, NOT THE LAYOUT • CAN HAVE MULTIPLE PER APPLICATION • EACH IS A SEPARATE ENTITY • THEY HAVE A STRUCTURED LIFE CYCLE • DIFFERENT EVENTS IN THEIR LIFE HAPPEN EITHER VIA THE USER TOUCHING BUTTONS OR PROGRAMMATICALLY
  • 67. SERVICES (1) • RUN IN THE BACKGROUND • CAN CONTINUE EVEN IF ACTIVITY THAT STARTED IT DIES • SHOULD BE USED IF SOMETHING NEEDS TO BE DONE WHILE THE USER IS NOT INTERACTING WITH APPLICATION • OTHERWISE, A THREAD IS PROBABLY MORE APPLICABLE • SHOULD CREATE A NEW THREAD IN THE SERVICE TO DO WORK IN, SINCE THE SERVICE RUNS IN THE MAIN THREAD • CAN BE BOUND TO AN APPLICATION • IN WHICH CASE WILL TERMINATE WHEN ALL APPLICATIONS BOUND TO IT UNBIND • ALLOWS MULTIPLE APPLICATIONS TO COMMUNICATE WITH IT VIA A COMMON INTERFACE • NEEDS TO BE DECLARED IN MANIFEST FILE • LIKE ACTIVITIES, HAS A STRUCTURED LIFE CYCLE
  • 69. RUNNING IN ECLIPSE (1) • SIMILAR TO LAUNCHING A REGULAR JAVA APP, USE THE LAUNCH CONFIGURATIONS • SPECIFY AN ANDROID APPLICATION AND CREATE A NEW ONE • SPECIFY ACTIVITY TO BE RUN • CAN SELECT A MANUAL OPTION, SO EACH TIME PROGRAM IS RUN, YOU ARE ASKED WHETHER YOU WANT TO USE THE ACTUAL PHONE OR THE EMULATOR • OTHERWISE, IT SHOULD BE SMART AND USE WHICHEVER ONE IS AVAILABLE
  • 73. USB DEBUGGING • SHOULD BE ENABLED ON PHONE TO USE DEVELOPER FEATURES • IN THE MAIN APPS SCREEN SELECT SETTINGS -> APPLICATIONS -> DEVELOPMENT -> USB DEBUGGING (IT NEEDS TO BE CHECKED)
  • 74. ANDROID DEBUG BRIDGE • USED FOR A WIDE VARIETY OF DEVELOPER TASKS • READ FROM THE LOG FILE • SHOW WHAT ANDROID DEVICES ARE AVAILABLE • INSTALL ANDROID APPLICATIONS (.APK FILES) • IN THE ‗PLATFORM-TOOLS‘ DIRECTORY OF THE MAIN ANDROID SDK DIRECTORY • RECOMMEND PUTTING THIS DIRECTORY AND THE ‗TOOLS‘ DIRECTORY ON THE SYSTEM PATH • ADB.EXE
  • 75. DEBUGGING • INSTEAD OF USING TRADITIONAL SYSTEM.OUT.PRINTLN, USE THE LOG CLASS • IMPORTED WITH ANDROID.UTIL.LOG • MULTIPLE TYPES OF OUTPUT (DEBUG, WARNING, ERROR, …) • LOG.D(<TAG>,<STRING>) • CAN BE READ USING LOGCAT. • PRINT OUT THE WHOLE LOG, WHICH AUTO-UPDATES • ADB LOGCAT • ERASE LOG • ADB LOGCAT –C • FILTER OUTPUT VIA TAGS • ADB LOGCAT <TAG>:<MSG TYPE> *:S • CAN HAVE MULTIPLE <TAG>:<MSG TYPE> FILTERS • <MSG TYPE> CORRESPONDS TO DEBUG, WARNING, ERROR, ETC. • IF USE LOG.D(), THEN <MSG TYPE> = D • REFERENCE • HTTP://DEVELOPER.ANDROID.COM/GUIDE/DEVELOPING/DEBUGGING/DEB UGGING-LOG.HTML
  • 76. ANDROID – INTERFACE AND LAYOUT L. GREWE
  • 77. INTERFACES: TWO ALTERNATIVES CODE OR XML • YOU HAVE TWO WAYS YOU CAN CREATE THE INTERFACE(S) OF YOUR APPLICATION. 1. CODE = WRITE CODE USING SDK WITH CLASSES LIKE LINEARLAYOUT, TEXTVIEW, …… 2. XML = CREATE XML FILES IN RES/LAYOUT (I.E. MAIN.XML) THAT CONTAIN ANDROID XML VIEW TAGS LIKE <LINEARLAYOUT> <TEXTVIEW>, ETC.
  • 78. OPTION: XML INTERFACE LETS LOOK AT THIS OPTION FIRST
  • 79. XML INTERFACE CREATION • GENERALLY, I WOULD SAY IF IT IS POSSIBLE, DOING XML WOULD BE BETTER AS IT MEANS A DECOUPLING OF DESIGN FROM JAVA CODE. • YOU CAN HAVE BOTH IN YOUR SYSTEM…. • LETS DISCUSS THIS FIRST.
  • 80. THE LAYOUT --- THE INTERFACE • LAYOUTS DEFINED WITH XML LOCATED IN RES/LAYOUT
  • 81. THE LAYOUT-THE INTERFACE • RES/LAYOUT/MAIN.XML = CONTAINS LAYOUT FOR INTERFACE <?XML VERSION="1.0" ENCODING="UTF-8"?> <LINEARLAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID" ANDROID:ORIENTATION="VERTICAL" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="FILL_PARENT" > <TEXTVIEW ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT" ANDROID:TEXT="@STRING/HELLO" /> </LINEARLAYOUT> THE ABOVE WILL CREATE AN INTERFACE IN VERTICAL (VERSUS PORTRAIT) MODE THAT FILLS THE PARENT BOTH IN WIDTH AND WRITE AND WRAPS AND CONTENT AS NECESSARY.
  • 82. XML INTERFACE • IT'S A TREE OF XML ELEMENTS, • INSPIRED BY WEB AUTHORING • BUILD UP UI QUICKLY • EACH NODE IS THE NAME OF A VIEW CLASS (EXAMPLE IS JUST ONE VIEW ELEMENT). • CREATE YOUR OWN VIEW ---EXTENDS • EACH NODE CAN HAVE MULTIPLE ATTRIBUTES • LOOK TO API FOR DETAILS
  • 83. XML INTERFACE • <TEXTVIEW XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="FILL_PARENT" ANDROID:TEXT="@STRING/HELLO"/> • XMLNS:ANDROID XML NAMESPACE DECLARATION THAT TELLS THE ANDROID TOOLS THAT YOU ARE GOING TO REFER TO COMMON ATTRIBUTES DEFINED IN THE ANDROID NAMESPACE. THE OUTERMOST TAG IN EVERY ANDROID LAYOUT FILE MUST HAVE THIS ATTRIBUTE. • ANDROID:LAYOUT_WIDTH THIS ATTRIBUTE DEFINES HOW MUCH OF THE AVAILABLE WIDTH ON THE SCREEN THIS VIEW SHOULD CONSUME. AS IT'S THE ONLY VIEW SO YOU WANT IT TO TAKE UP THE ENTIRE SCREEN, WHICH IS WHAT A VALUE OF "FILL_PARENT" MEANS. ANDROID:LAYOUT_HEIGHT THIS IS JUST LIKE ANDROID:LAYOUT_WIDTH, EXCEPT THAT IT REFERS TO AVAILABLE SCREEN HEIGHT. • ANDROID:TEXT THIS SETS THE TEXT THAT THE TEXTVIEW SHOULD DISPLAY. IN THIS EXAMPLE, YOU USE A STRING RESOURCE INSTEAD OF A HARD-CODED STRING VALUE. THE HELLO STRING IS DEFINED IN THE RES/VALUES/STRINGS.XML FILE.
  • 84. USING ECLIPSE IDE TO VISUALLY CREATE XML FILE • VISUAL CREATION OF XML FILE • CREATE NEW->OTHER->ANDROID->XML FILE• SELECT FOR LAYOUT TYPE • PLAY WITH IT…. DRAG AND DROP
  • 85. USING ECLIPSE IDE TO VISUALLY CREATE XML FILE • VISUAL CREATION OF XML FILE • CREATE NEW->OTHER->ANDROID->XML FILE• SELECT FOR LAYOUT TYPE • PLAY WITH IT…. DRAG AND DROP
  • 86. VISUALLY CREATING XML INTERFACE • I DRAGGED AND DROPPED AN EDITTEXT VIEW AND A BUTTON. BELOW I SHOW YOU THE CORRESPONDING CODE. RES/LAYOUT/MAIN2.XML <?XML VERSION="1.0" ENCODING="UTF-8"?> <ABSOLUTELAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID" ANDROID:ORIENTATION="VERTICAL" ANDROID:LAYOUT_WIDTH="MATCH_PARENT" ANDROID:LAYOUT_HEIGHT="MATCH_PARENT"> <EDITTEXT ANDROID:TEXT="@STRING/HELLO" ANDROID:ID="@+ID/EDITTEXT1" ANDROID:INPUTTYPE="TEXTMULTILINE" ANDROID:LAYOUT_WIDTH="169DP" ANDROID:LAYOUT_HEIGHT="115DP" ANDROID:LAYOUT_X="11DP" ANDROID:LAYOUT_Y="20DP"></EDITTEXT> <BUTTON ANDROID:ID="@+ID/BUTTON1" ANDROID:LAYOUT_WIDTH="WRAP_CONTENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT" ANDROID:TEXT="BUTTON" ANDROID:LAYOUT_X="27DP" ANDROID:LAYOUT_Y="146DP"></BUTTON> </ABSOLUTELAYOUT>
  • 87. BESIDES DRAG AND DROP YOU CAN EDIT THE XML FILE DIRECTLY. LETS DISCUSS SOME OF THE ANDROID XML INTERFACE RELATED TAGS XML INTERFACE TAGS
  • 89. LAYOUT TAGS • DETERMINES HOW THE LAYOUT IS STRUCTURED. • SOME TAGS • LINEARLAYOUT • A LAYOUT THAT ARRANGES ITS CHILDREN IN A SINGLE COLUMN OR A SINGLE ROW. THE DIRECTION OF THE ROW CAN BE SET BY CALLING SETORIENTATION(). YOU CAN ALSO SPECIFY GRAVITY, WHICH SPECIFIES THE ALIGNMENT OF ALL THE CHILD ELEMENTS BY CALLING SETGRAVITY() OR SPECIFY THAT SPECIFIC CHILDREN GROW TO FILL UP ANY REMAINING SPACE IN THE LAYOUT BY SETTING THE WEIGHT MEMBER OF LINEARLAYOUT.LAYOUTPARAMS. THE DEFAULT ORIENTATION IS HORIZONTAL. • ABSOLUTELAYOUT • A LAYOUT THAT LETS YOU SPECIFY EXACT LOCATIONS (X/Y COORDINATES) OF ITS CHILDREN. ABSOLUTE LAYOUTS ARE LESS FLEXIBLE AND HARDER TO MAINTAIN THAN OTHER TYPES OF LAYOUTS WITHOUT ABSOLUTE POSITIONING. • RELATIVELAYOUT • FRAMELAYOUT • TABLELAYOUT
  • 90. LINEARLAYOUT XML TAG • VISUAL CREATION OF XML FILE • XML ATTRIBUTES ATTRIBUTE NAME RELATED METHOD DESCRIPTION ANDROID:BASELINEALIGNED SETBASELINEALIGNED(BOOLEAN) WHEN SET TO FALSE, PREVENTS THE LAYOUT FROM ALIGNING ITS CHILDREN'S BASELINES. ANDROID:BASELINEALIGNEDCHILDINDEX SETBASELINEALIGNEDCHILDINDEX(INT) WHEN A LINEAR LAYOUT IS PART OF ANOTHER LAYOUT THAT IS BASELINE ALIGNED, IT CAN SPECIFY WHICH OF ITS CHILDREN TO BASELINE ALIGN TO (THAT IS, WHICH CHILD TEXTVIEW). ANDROID:GRAVITY SETGRAVITY(INT) SPECIFIES HOW TO PLACE THE CONTENT OF AN OBJECT, BOTH ON THE X- AND Y-AXIS, WITHIN THE OBJECT ITSELF. ANDROID:MEASUREWITHLARGESTCHILD WHEN SET TO TRUE, ALL CHILDREN WITH A WEIGHT WILL BE CONSIDERED HAVING THE MINIMUM SIZE OF THE LARGEST CHILD. ANDROID:ORIENTATION SETORIENTATION(INT) SHOULD THE LAYOUT BE A COLUMN OR A ROW? USE "HORIZONTAL" FOR A ROW, "VERTICAL" FOR A COLUMN. ANDROID:WEIGHTSUM DEFINES THE MAXIMUM WEIGHT SUM.
  • 91. RELATED LAYOUT TAGS CONTROL STRUCTURE OF INTERFACE, BUT COMMONLY A SUB-AREA
  • 92. LISTVIEW <LISTVIEW …..> • A VIEW THAT SHOWS ITEMS IN A VERTICALLY SCROLLING LIST. ATTRIBUTES • ANDROID:DIVIDER DRAWABLE OR COLOR TO DRAW BETWEEN LIST ITEMS. • ANDROID:DIVIDERHEIGHT HEIGHT OF THE DIVIDER. • ANDROID:ENTRIES REFERENCE TO AN ARRAY RESOURCE THAT WILL POPULATE THE LISTVIEW. • ANDROID:FOOTERDIVIDERSENABLED WHEN SET TO FALSE, THE LISTVIEW WILL NOT DRAW THE DIVIDER BEFORE EACH FOOTER VIEW. • ANDROID:HEADERDIVIDERSENABLED WHEN SET TO FALSE, THE LISTVIEW WILL NOT DRAW THE DIVIDER AFTER EACH HEADER VIEW.
  • 93. GALLERY <GALLERY ….> • A VIEW THAT SHOWS ITEMS IN A CENTER-LOCKED, HORIZONTALLY SCROLLING LIST. • THE DEFAULT VALUES FOR THE GALLERY ASSUME YOU WILL BE USING THEME_GALLERYITEMBACKGROUND AS THE BACKGROUND FOR EACH VIEW GIVEN TO THE GALLERY FROM THE ADAPTER. IF YOU ARE NOT DOING THIS, YOU MAY NEED TO ADJUST SOME GALLERY PROPERTIES, SUCH AS THE SPACING. ATTRIBUTES • ANDROID:ANIMATIONDURATION SETANIMATIONDURATION(INT) SETS HOW LONG A TRANSITION ANIMATION SHOULD RUN (IN MILLISECONDS) WHEN LAYOUT HAS CHANGED. • ANDROID:GRAVITY SETGRAVITY(INT) SPECIFIES HOW TO PLACE THE CONTENT OF AN OBJECT, BOTH ON THE X- AND Y-AXIS, WITHIN THE OBJECT ITSELF. • ANDROID:SPACING SETSPACING(INT) • ANDROID:UNSELECTEDALPHA SETUNSELECTEDALPHA(FLOAT) SETS THE ALPHA ON THE ITEMS THAT ARE NOT SELECTED.
  • 94. CODE—SETTING UP GALLERY @OVERRIDE PUBLIC VOID ONCREATE(BUNDLE SAVEDINSTANCESTATE) { SUPER.ONCREATE(SAVEDINSTANCESTATE); SETCONTENTVIEW(R.LAYOUT.MAIN); GALLERY GALLERY = (GALLERY) FINDVIEWBYID(R.ID.GALLERY); GALLERY.SETADAPTER(NEW IMAGEADAPTER(THIS)); GALLERY.SETONITEMCLICKLISTENER(NEW ONITEMCLICKLISTENER() { PUBLIC VOID ONITEMCLICK(ADAPTERVIEW PARENT, VIEW V, INT POSITION, LONG ID) { TOAST.MAKETEXT(HELLOGALLERY.THIS, "" + POSITION, TOAST.LENGTH_SHORT).SHOW(); } }); }
  • 95. VIEWS AND VIEWGROUPS MAKING THE ELEMENTS OF YOUR GUI
  • 96. VIEWS AND VIEWGROUPS • AN ACTIVITY CAN CONTAIN VIEWS AND VIEWGROUPS. • ANDROID.VIEW.VIEW.* = BASE CLASS FOR ALL VIEWS. • EXAMPLE SUB-CLASSES INCLUDE: TEXTVIEW, IMAGEVIEW, ETC. • ANDROID.VIEW.VIEWGROUP = LAYOUT FOR VIEWS IT CONTAINS, SUBCLASSES INCLUDE • ANDROID.WIDGET.LINEARLAYOUT • ANDROID.WIDGET.ABSOLUTELAYOUT • ANDROID.WIDGET.TABLELAYOUT • ANDROID.WIDGET.RELATIVELAYOUT • ANDROID.WIDGET.FRAMELAYOUT • ANDROID.WIDGET.SCROLLLAYOUT
  • 97. LINEARLAYOUT (<LINEARLAYOUT> OR ANDROID.WIDGET.LINEARLAYOUT) • ARRANGES BY SINGLE COLUMN OR ROW. • CHILD VIEWS CAN BE ARRANGED VERTICALLY OR HORIZONTALLY. <?XML VERSION="1.0" ENCODING="UTF-8"?> <LINEARLAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="FILL_PARENT" ANDROID:ORIENTATION="VERTICAL" > <TEXT VIEW ANDROID:LAYOUT_WIDTH=―FILL_PARENT‖ ANDROID:LAYOUT_HEIGHT=―WRAP_CONTENT‖ ANDROID:TEXT=―@STRING/HELLO‖/> </LINEARLAYOUT>
  • 98. LINEAR LAYOUT EXAMPLE <?XML VERSION="1.0" ENCODING="UTF-8"?> <LINEARLAYOUT XMLNS:ANDROID="HTTP://SCHEMAS.ANDROID.COM/APK/RES/ANDROID" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="FILL_PARENT― ANDROID:ORIENTATION="VERTICAL" > <BUTTON ANDROID:ID="@+ID/BTN_WEBBROWSER" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT" ANDROID:TEXT="WEB BROWSER― ANDROID:ONCLICK="ONCLICKWEBBROWSER" /> <BUTTON ANDROID:ID="@+ID/BTN_MAKECALLS" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT― ANDROID:TEXT="MAKE CALLS" ANDROID:ONCLICK="ONCLICKMAKECALLS" /> <BUTTON ANDROID:ID="@+ID/BTN_SHOWMAP" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT― ANDROID:TEXT="SHOW MAP" ANDROID:ONCLICK="ONCLICKSHOWMAP" /> <BUTTON ANDROID:ID="@+ID/BTN_LAUNCHMYBROWSER" ANDROID:LAYOUT_WIDTH="FILL_PARENT" ANDROID:LAYOUT_HEIGHT="WRAP_CONTENT" ANDROID:TEXT="LAUNCH MY BROWSER" ANDROID:ONCLICK="ONCLICKLAUNCHMYBROWSER" /> </LINEARLAYOUT>
  • 99. LINEARLAYOUT ATTRIBUTES • YOU CAN SET EITHER IN XML OR WITH SET*() METHODS. • I.E. XML ANDROID:ORIENTATION=―VERTICAL‖ CODE (LL IS LINEARLAYOUT INSTANCE) LL.SETORIENTATION(VERTICAL);
  • 100. EACH VIEW OR VIEWGROUP CAN HAVE ITS OWN SET OF ATTRIBUTES…BUT, SOME ARE VERY COMMON Attribute Description layout_width specifies width of View or ViewGroup layout_height specifies height layout_marginTop extra space on top layout_marginBottom extra space on bottom side layout_marginLeft extra space on left side layout_marginRight extra space on right side layout_gravity how child views are positioned layout_weight how much extra space in layout should be allocated to View (only when in LinearLayout or TableView) layout_x x-coordinate layout_y y-coordinate
  • 101. GOAL • UNDERSTAND APPLICATIONS AND THEIR COMPONENTS • CONCEPTS: • ACTIVITY, • SERVICE, • BROADCAST RECEIVER, • CONTENT PROVIDER, • INTENT, • ANDROIDMANIFEST
  • 102. APPLICATIONS • WRITTEN IN JAVA (IT‘S POSSIBLE TO WRITE NATIVE CODE – WILL NOT COVER THAT HERE) • GOOD SEPARATION (AND CORRESPONDING SECURITY) FROM OTHER APPLICATIONS: • EACH APPLICATION RUNS IN ITS OWN PROCESS • EACH PROCESS HAS ITS OWN SEPARATE VM • EACH APPLICATION IS ASSIGNED A UNIQUE LINUX USER ID – BY DEFAULT FILES OF THAT APPLICATION ARE ONLY VISIBLE TO THAT APPLICATION (CAN BE EXPLICITLY EXPORTED)
  • 103. APPLICATION COMPONENTS • ACTIVITIES – VISUAL USER INTERFACE FOCUSED ON A SINGLE THING A USER CAN DO • SERVICES – NO VISUAL INTERFACE – THEY RUN IN THE BACKGROUND • BROADCAST RECEIVERS – RECEIVE AND REACT TO BROADCAST ANNOUNCEMENTS • CONTENT PROVIDERS – ALLOW DATA EXCHANGE BETWEEN APPLICATIONS
  • 104. ACTIVITIES • BASIC COMPONENT OF MOST APPLICATIONS • MOST APPLICATIONS HAVE SEVERAL ACTIVITIES THAT START EACH OTHER AS NEEDED • EACH IS IMPLEMENTED AS A SUBCLASS OF THE BASE ACTIVITY CLASS
  • 105. ACTIVITIES – THE VIEW • EACH ACTIVITY HAS A DEFAULT WINDOW TO DRAW IN (ALTHOUGH IT MAY PROMPT FOR DIALOGS OR NOTIFICATIONS) • THE CONTENT OF THE WINDOW IS A VIEW OR A GROUP OF VIEWS (DERIVED FROM VIEW OR VIEWGROUP) • EXAMPLE OF VIEWS: BUTTONS, TEXT FIELDS, SCROLL BARS, MENU ITEMS, CHECK BOXES, ETC. • VIEW(GROUP) MADE VISIBLE VIA ACTIVITY.SETCONTENTVIEW() METHOD.
  • 106. SERVICES • DOES NOT HAVE A VISUAL INTERFACE • RUNS IN THE BACKGROUND INDEFINITELY • EXAMPLES • NETWORK DOWNLOADS • PLAYING MUSIC • TCP/UDP SERVER • YOU CAN BIND TO A AN EXISTING SERVICE AND CONTROL ITS OPERATION
  • 107. BROADCAST RECEIVERS • RECEIVE AND REACT TO BROADCAST ANNOUNCEMENTS • EXTEND THE CLASS BROADCASTRECEIVER • EXAMPLES OF BROADCASTS: • LOW BATTERY, POWER CONNECTED, SHUTDOWN, TIMEZONE CHANGED, ETC. • OTHER APPLICATIONS CAN INITIATE BROADCASTS
  • 108. CONTENT PROVIDERS • MAKES SOME OF THE APPLICATION DATA AVAILABLE TO OTHER APPLICATIONS • IT‘S THE ONLY WAY TO TRANSFER DATA BETWEEN APPLICATIONS IN ANDROID (NO SHARED FILES, SHARED MEMORY, PIPES, ETC.) • EXTENDS THE CLASS CONTENTPROVIDER; • OTHER APPLICATIONS USE A CONTENTRESOLVER OBJECT TO ACCESS THE DATA PROVIDED VIA A CONTENTPROVIDER
  • 109. INTENTS • AN INTENT IS AN INTENT OBJECT WITH A MESSAGE CONTENT. • ACTIVITIES, SERVICES AND BROADCAST RECEIVERS ARE STARTED BY INTENTS. CONTENTPROVIDERS ARE STARTED BY CONTENTRESOLVERS: • AN ACTIVITY IS STARTED BY CONTEXT.STARTACTIVITY(INTENT INTENT) OR ACTIVITY.STARTACTIVITYFORRESULT(INTENT INTENT, INT REQUESTCODE) • A SERVICE IS STARTED BY CONTEXT.STARTSERVICE(INTENT SERVICE) • AN APPLICATION CAN INITIATE A BROADCAST BY USING AN INTENT IN ANY OF CONTEXT.SENDBROADCAST(INTENT INTENT), CONTEXT.SENDORDEREDBROADCAST(), AND CONTEXT.SENDSTICKYBROADCAST()
  • 110. SHUTTING DOWN COMPONENTS • ACTIVITIES • CAN TERMINATE ITSELF VIA FINISH(); • CAN TERMINATE OTHER ACTIVITIES IT STARTED VIA FINISHACTIVITY(); • SERVICES • CAN TERMINATE VIA STOPSELF(); OR CONTEXT.STOPSERVICE(); • CONTENT PROVIDERS • ARE ONLY ACTIVE WHEN RESPONDING TO CONTENTRESOLVERS • BROADCAST RECEIVERS • ARE ONLY ACTIVE WHEN RESPONDING TO BROADCASTS
  • 111. ANDROID MANIFEST • ITS MAIN PURPOSE IN LIFE IS TO DECLARE THE COMPONENTS TO THE SYSTEM: <?XML VERSION="1.0" ENCODING="UTF-8"?> <MANIFEST . . . > <APPLICATION . . . > <ACTIVITY ANDROID:NAME="COM.EXAMPLE.PROJECT.FRENETICACTIVIT Y" ANDROID:ICON="@DRAWABLE/SMALL_PIC.PNG" ANDROID:LABEL="@STRING/FRENETICLABEL" ... > </ACTIVITY> ... </APPLICATION> </MANIFEST>
  • 112. INTENT FILTERS • DECLARE INTENTS HANDLED BY THE CURRENT APPLICATION Shows in the (IN THE ANDROIDMANIFEST): Launcher and is the main activity to start <?XML VERSION="1.0" ENCODING="UTF-8"?> <MANIFEST . . . > <APPLICATION . . . > <ACTIVITY ANDROID:NAME="COM.EXAMPLE.PROJECT.FRENETICACTIVITY" ANDROID:ICON="@DRAWABLE/SMALL_PIC.PNG" ANDROID:LABEL="@STRING/FRENETICLABEL" ... > <INTENT-FILTER . . . > <ACTION ANDROID:NAME="ANDROID.INTENT.ACTION.MAIN" /> <CATEGORY ANDROID:NAME="ANDROID.INTENT.CATEGORY.LAUNCHER" /> </INTENT-FILTER> <INTENT-FILTER . . . > <ACTION ANDROID:NAME="COM.EXAMPLE.PROJECT.BOUNCE" /> <DATA ANDROID:MIMETYPE="IMAGE/JPEG" /> <CATEGORY ANDROID:NAME="ANDROID.INTENT.CATEGORY.DEFAULT" /> </INTENT-FILTER> </ACTIVITY> ... </APPLICATION> </MANIFEST> Handles JPEG images in some way
  • 113. DATE STORAGE IN ANDROID
  • 114. • ANDROID PROVIDES SEVERAL OPTIONS FOR YOU TO SAVE PERSISTENT APPLICATION DATA. THE SOLUTION YOU CHOOSE DEPENDS ON YOUR SPECIFIC NEEDS, SUCH AS WHETHER THE DATA SHOULD BE PRIVATE TO YOUR APPLICATION OR ACCESSIBLE TO OTHER APPLICATIONS (AND THE USER) AND HOW MUCH SPACE YOUR DATA REQUIRES.
  • 115. YOUR DATA STORAGE OPTIONS ARE THE FOLLOWING: • SHARED PREFERENCES STORE PRIVATE PRIMITIVE DATA IN KEY-VALUE PAIRS. • INTERNAL STORAGE STORE PRIVATE DATA ON THE DEVICE MEMORY. • EXTERNAL STORAGE STORE PUBLIC DATA ON THE SHARED EXTERNAL STORAGE. • SQLITE DATABASES STORE STRUCTURED DATA IN A PRIVATE DATABASE. • NETWORK CONNECTION STORE DATA ON THE WEB WITH YOUR OWN NETWORK SERVER.
  • 116. SHARED PREFERENCES • THE SHAREDPREFERENCES CLASS PROVIDES A GENERAL FRAMEWORK THAT ALLOWS YOU TO SAVE AND RETRIEVE PERSISTENT KEY-VALUE PAIRS OF PRIMITIVE DATA TYPES. YOU CAN USE SHAREDPREFERENCES TO SAVE ANY PRIMITIVE DATA: BOOLEANS, FLOATS, INTS, LONGS, AND STRINGS. THIS DATA WILL PERSIST ACROSS USER SESSIONS (EVEN IF YOUR APPLICATION IS KILLED).
  • 117. INTERNAL STORAGE • YOU CAN SAVE FILES DIRECTLY ON THE DEVICE'S INTERNAL STORAGE. BY DEFAULT, FILES SAVED TO THE INTERNAL STORAGE ARE PRIVATE TO YOUR APPLICATION AND OTHER APPLICATIONS CANNOT ACCESS THEM (NOR CAN THE USER). WHEN THE USER UNINSTALLS YOUR APPLICATION, THESE FILES ARE REMOVED.
  • 118. EXTERNAL STORAGE • EVERY ANDROID-COMPATIBLE DEVICE SUPPORTS A SHARED "EXTERNAL STORAGE" THAT YOU CAN USE TO SAVE FILES. THIS CAN BE A REMOVABLE STORAGE MEDIA (SUCH AS AN SD CARD) OR AN INTERNAL (NON-REMOVABLE) STORAGE. FILES SAVED TO THE EXTERNAL STORAGE ARE WORLD-READABLE AND CAN BE MODIFIED BY THE USER WHEN THEY ENABLE USB MASS STORAGE TO TRANSFER FILES ON A COMPUTER. • CAUTION: EXTERNAL STORAGE CAN BECOME UNAVAILABLE IF THE USER MOUNTS THE EXTERNAL STORAGE ON A COMPUTER OR REMOVES THE MEDIA, AND THERE'S NO SECURITY ENFORCED UPON FILES YOU SAVE TO THE EXTERNAL STORAGE. ALL APPLICATIONS CAN READ AND WRITE FILES PLACED ON THE EXTERNAL STORAGE AND THE USER CAN REMOVE THEM.
  • 119. SQLITE DATABASES • ANDROID PROVIDES FULL SUPPORT FOR SQLITE DATABASES. ANY DATABASES YOU CREATE WILL BE ACCESSIBLE BY NAME TO ANY CLASS IN THE APPLICATION, BUT NOT OUTSIDE THE APPLICATION. • THE RECOMMENDED METHOD TO CREATE A NEW SQLITE DATABASE IS TO CREATE A SUBCLASS OF SQLITEOPENHELPER AND OVERRIDE THE ONCREATE() METHOD, IN WHICH YOU CAN EXECUTE A SQLITE COMMAND TO CREATE TABLES IN THE DATABASE. FOR EXAMPLE:
  • 120. NETWORK CONNECTION • YOU CAN USE THE NETWORK (WHEN IT'S AVAILABLE) TO STORE AND RETRIEVE DATA ON YOUR OWN WEB-BASED SERVICES. TO DO NETWORK OPERATIONS, USE CLASSES IN THE FOLLOWING PACKAGES: • JAVA.NET.* • ANDROID.NET.*
  • 122. SQLLITE • EMBEDDED RDBMS • ACID COMPLIANT ( IN COMPUTER SCIENCE, ACID (ATOMICITY, CONSISTENCY, ISOLATION, DURABILITY) IS A SET OF PROPERTIES THAT GUARANTEE THAT DATABASE TRANSACTIONS ARE PROCESSED RELIABLY. IN THE CONTEXT OF DATABASES, A SINGLE LOGICAL OPERATION ON THE DATA IS CALLED A TRANSACTION. FOR EXAMPLE, A TRANSFER OF FUNDS FROM ONE BANK ACCOUNT TO ANOTHER, EVEN INVOLVING MULTIPLE CHANGES SUCH AS DEBITING ONE ACCOUNT AND CREDITING ANOTHER, IS A SINGLE TRANSACTION.) • SIZE – ABOUT 257 KBYTES • NOT A CLIENT/SERVER ARCHITECTURE • ACCESSED VIA FUNCTION CALLS FROM THE APPLICATION • WRITING (INSERT, UPDATE, DELETE) LOCKS THE DATABASE, QUERIES CAN BE DONE IN PARALLEL
  • 123. SQLLITE • DATASTORE – SINGLE, CROSS PLATFORM FILE (KINDA LIKE AN MS ACCESS DB) • DEFINITIONS • TABLES • INDICIES • DATA
  • 124. SQLITE DATA TYPES • THIS IS QUITE DIFFERENT THAN THE NORMAL SQL DATA TYPES SO PLEASE READ: HTTP://WWW.SQLITE.ORG/DATATYPE3.HTML
  • 125. STORAGE CLASSES • NULL – NULL VALUE • INTEGER - SIGNED INTEGER, STORED IN 1, 2, 3, 4, 6, OR 8 BYTES DEPENDING ON THE MAGNITUDE OF THE VALUE • REAL - A FLOATING POINT VALUE, 8-BYTE IEEE FLOATING POINT NUMBER. • TEXT - TEXT STRING, STORED USING THE DATABASE ENCODING (UTF-8, UTF-16BE OR UTF-16LE). • BLOB. THE VALUE IS A BLOB OF DATA, STORED EXACTLY AS IT WAS INPUT.
  • 126. ANDROID.DATABASE.SQLITE • CONTAINS THE SQLITE DATABASE MANAGEMENT CLASSES THAT AN APPLICATION WOULD USE TO MANAGE ITS OWN PRIVATE DATABASE.
  • 127. ANDROID.DATABASE.SQLITE CLASSES • SQLITECLOSEABLE - AN OBJECT CREATED FROM A SQLITEDATABASE THAT CAN BE CLOSED. • SQLITECURSOR - A CURSOR IMPLEMENTATION THAT EXPOSES RESULTS FROM A QUERY ON A SQLITEDATABASE. • SQLITEDATABASE - EXPOSES METHODS TO MANAGE A SQLITE DATABASE. • SQLITEOPENHELPER - A HELPER CLASS TO MANAGE DATABASE CREATION AND VERSION MANAGEMENT. • SQLITEPROGRAM - A BASE CLASS FOR COMPILED SQLITE PROGRAMS. • SQLITEQUERY - A SQLITE PROGRAM THAT REPRESENTS A QUERY THAT READS THE RESULTING ROWS INTO A CURSORWINDOW. • SQLITEQUERYBUILDER - A CONVENIENCE CLASS THAT HELPS BUILD SQL QUERIES TO BE SENT TO SQLITEDATABASE OBJECTS. • SQLITESTATEMENT - A PRE-COMPILED STATEMENT AGAINST A SQLITEDATABASE THAT CAN BE REUSED.
  • 128. ANDROID.DATABASE.SQLITE.SQLITED ATABASE • CONTAINS THE METHODS FOR: CREATING, OPENING, CLOSING, INSERTING, UPDATING, DELETING AND QUERING AN SQLITE DATABASE • THESE METHODS ARE SIMILAR TO JDBC BUT MORE METHOD ORIENTED THAN WHAT WE SEE WITH JDBC (REMEMBER THERE IS NOT A RDBMS SERVER RUNNING)
  • 129. OPENORCREATEDATABASE( ) • THIS METHOD WILL OPEN AN EXISTING DATABASE OR CREATE ONE IN THE APPLICATION DATA AREA import android.database.sqlite.SQLiteDatabase; SQLiteDatabase myDatabase; myDatabase = openOrCreateDatabase ("my_sqlite_database.db" , SQLiteDatabase.CREATE_IF_NECESSARY , null);
  • 130. SQLITE DATABASE PROPERTIES • IMPORTANT DATABASE CONFIGURATION OPTIONS INCLUDE: VERSION, LOCALE, AND THREAD-SAFE LOCKING. import java.util.Locale; myDatabase.setVersion(1); myDatabase.setLockingEnabled(true); myDatabase.SetLocale(Locale.getDefault());
  • 131. CREATING TABLES • CREATE A STATIC STRING CONTAINING THE SQLITE CREATE STATEMENT, USE THE EXECSQL( ) METHOD TO EXECUTE IT. String createAuthor = "CREAT TABLE authors ( id INTEGER PRIMARY KEY AUTOINCREMENT, fname TEXT, lname TEXT); myDatabase.execSQL(createAuthor);
  • 132. INSERT( ) • LONG INSERT(STRING TABLE, STRING NULLCOLUMNHACK, CONTENTVALUES VALUES) import android.content.ContentValues; ContentValues values = new ContentValues( ); values.put("firstname" , "J.K."); values.put("lastname" , "Rowling"); long newAuthorID = myDatabase.insert("tbl_authors" , "" , values);
  • 133. UPDATE( ) • INT UPDATE(STRING TABLE, CONTENTVALUES VALUES, STRING WHERECLAUSE, STRING[ ] WHEREARGS) public void updateBookTitle(Integer bookId, String newTitle) { ContentValues values = new ContentValues(); values.put("title" , newTitle); myDatabase.update("tbl_books" , values , "id=?" , new String[ ] {bookId.toString() } ); }
  • 134. DELETE( ) • INT DELETE(STRING TABLE, STRING WHERECLAUSE, STRING[] WHEREARGS) public void deleteBook(Integer bookId) { myDatabase.delete("tbl_books" , "id=?" , new String[ ] { bookId.toString( ) } ) ; }
  • 135. ANDROID.DATABASE • HTTP://DEVELOPER.ANDROID.COM/REFERENCE/ANDROID/ DATABASE/PACKAGE-SUMMARY.HTML • CONTAINS CLASSES AND INTERFACES TO EXPLORE DATA RETURNED THROUGH A CONTENT PROVIDER. • THE MAIN THING YOU ARE GOING TO USE HERE IS THE CURSOR INTERFACE TO GET THE DATA FROM THE RESULTSET THAT IS RETURNED BY A QUERY HTTP://DEVELOPER.ANDROID.COM/REFERENCE/ANDROID/DATABASE /CURSOR.HTML
  • 136. QUERIES • METHOD OF SQLITEDATABASE CLASS AND PERFORMS QUERIES ON THE DB AND RETURNS THE RESULTS IN A CURSOR OBJECT • CURSOR C = MDB.QUERY(P1,P2,P3,P4,P5,P6,P7) • P1 ; TABLE NAME (STRING) • P2 ; COLUMNS TO RETURN (STRING ARRAY) • P3 ; WHERE CLAUSE (USE NULL FOR ALL, ?S FOR SELECTION ARGS) • P4 ; SELECTION ARG VALUES FOR ?S OF WHERE CLAUSE • P5 ; GROUP BY ( NULL FOR NONE) (STRING) • P6 ; HAVING (NULL UNLESS GROUP BY REQUIRES ONE) (STRING) • P7 ; ORDER BY (NULL FOR DEFAULT ORDERING)(STRING) • P8 ; LIMIT (NULL FOR NO LIMIT) (STRING)
  • 137. SIMPLE QUERIES • SQL - "SELECT * FROM ABC;" SQLITE - CURSOR C = MDB.QUERY(ABC,NULL,NULL,NULL,NULL,NULL,NULL); • SQL - "SELECT * FROM ABC WHERE C1=5" SQLITE - CURSOR C = MDB.QUERY( ABC,NULL,"C1=?" , NEW STRING[ ] {"5"},NULL,NULL,NULL); • SQL – "SELECT TITLE,ID FROM BOOKS ORDER BY TITLE ASC" SQLITE – STRING COLSTORETURN [ ] {"TITLE","ID"}; STRING SORTORDER = "TITLE ASC"; CURSOR C = MDB.QUERY("BOOKS",COLSTORETURN, NULL,NULL,NULL,NULL,SORTORDER);
  • 139. • MOST ANDROID-POWERED DEVICES HAVE BUILT-IN SENSORS THAT MEASURE MOTION, ORIENTATION, AND VARIOUS ENVIRONMENTAL CONDITIONS. • THESE SENSORS ARE CAPABLE OF PROVIDING RAW DATA WITH HIGH PRECISION AND ACCURACY, AND ARE USEFUL IF YOU WANT TO MONITOR THREEDIMENSIONAL DEVICE MOVEMENT OR POSITIONING, OR YOU WANT TO MONITOR CHANGES IN THE AMBIENT ENVIRONMENT NEAR A DEVICE. • FOR EXAMPLE, A GAME MIGHT TRACK READINGS FROM A DEVICE'S GRAVITY SENSOR TO INFER COMPLEX USER GESTURES AND MOTIONS, SUCH AS TILT, SHAKE, ROTATION, OR SWING. LIKEWISE, A WEATHER APPLICATION MIGHT USE A DEVICE'S TEMPERATURE SENSOR AND HUMIDITY SENSOR TO CALCULATE AND REPORT THE DEWPOINT, OR A TRAVEL APPLICATION MIGHT USE THE GEOMAGNETIC FIELD SENSOR AND ACCELEROMETER TO REPORT A COMPASS BEARING.
  • 140. THE ANDROID PLATFORM SUPPORTS THREE BROAD CATEGORIES OF SENSORS: • MOTION SENSORS THESE SENSORS MEASURE ACCELERATION FORCES AND ROTATIONAL FORCES ALONG THREE AXES. THIS CATEGORY INCLUDES ACCELEROMETERS, GRAVITY SENSORS, GYROSCOPES, AND ROTATIONAL VECTOR SENSORS. • ENVIRONMENTAL SENSORS THESE SENSORS MEASURE VARIOUS ENVIRONMENTAL PARAMETERS, SUCH AS AMBIENT AIR TEMPERATURE AND PRESSURE, ILLUMINATION, AND HUMIDITY. THIS CATEGORY INCLUDES BAROMETERS, PHOTOMETERS, AND THERMOMETERS. • POSITION SENSORS THESE SENSORS MEASURE THE PHYSICAL POSITION OF A
  • 141. DDMS • ANDROID SHIPS WITH A DEBUGGING TOOL CALLED THE DALVIK DEBUG MONITOR SERVER (DDMS), WHICH PROVIDES PORT-FORWARDING SERVICES, SCREEN CAPTURE ON THE DEVICE, THREAD AND HEAP INFORMATION ON THE DEVICE, LOGCAT, PROCESS, AND RADIO STATE INFORMATION, INCOMING CALL AND SMS SPOOFING, LOCATION DATA SPOOFING, AND MORE. THIS PAGE PROVIDES A MODEST DISCUSSION OF DDMS FEATURES; IT IS NOT AN EXHAUSTIVE EXPLORATION OF ALL THE FEATURES AND CAPABILITIES.
  • 142. • ON ANDROID, EVERY APPLICATION RUNS IN ITS OWN PROCESS, EACH OF WHICH RUNS IN ITS OWN VIRTUAL MACHINE (VM). EACH VM EXPOSES A UNIQUE PORT THAT A DEBUGGER CAN ATTACH TO. • WHEN DDMS STARTS, IT CONNECTS TO ADB. WHEN A DEVICE IS CONNECTED, A VM MONITORING SERVICE IS CREATED BETWEEN ADB AND DDMS, WHICH NOTIFIES DDMS WHEN A VM ON THE DEVICE IS STARTED OR TERMINATED. ONCE A VM IS RUNNING, DDMS RETRIEVES THE VM'S PROCESS ID (PID), VIA ADB, AND OPENS A CONNECTION TO THE VM'S DEBUGGER, THROUGH THE ADB DAEMON (ADBD) ON THE DEVICE. DDMS CAN NOW TALK TO THE VM USING A CUSTOM WIRE PROTOCOL. • DDMS ASSIGNS A DEBUGGING PORT TO EACH VM ON THE DEVICE. TYPICALLY, DDMS ASSIGNS PORT 8600 FOR THE FIRST DEBUGGABLE VM, THE NEXT ON 8601, AND SO ON. WHEN A DEBUGGER CONNECTS TO ONE OF THESE PORTS, ALL TRAFFIC IS FORWARDED TO THE DEBUGGER FROM THE ASSOCIATED VM. YOU CAN ONLY ATTACH A SINGLE DEBUGGER TO A SINGLE PORT, BUT DDMS CAN HANDLE MULTIPLE, ATTACHED DEBUGGERS.

Hinweis der Redaktion

  1. named after a robot in Bladerunner
  2. The linux kernel 2.6 is the hardware abstraction layer (HAL) between the hardware and the android software stack.
  3. Maybe more profitable with ads than actually selling the app