Download presentation
Presentation is loading. Please wait.
Published byIris Erby Modified over 9 years ago
1
Android Terminology Component: Activities, content providers, broadcast receivers, and services that together make up an application Activity: A single user-based task, usually, but not always, containing views Content Provider: A component that serves data to other applications Broadcast receiver: Component receiving notifications from other activities Service: Background process responding local or remote application requests View: Base class for most layout components UI Control : textView, EditText, CheckBox, RadioButton, Spinner, etc. Layout: Visual arrangement of containers and views Context: Object containing the global state of an application environment Intent: Asynchronous launching (or communication) message Intent Filter: Criteria an Android device uses to find matching activities
2
Android Terminology (cont.) Preference: A key/value pair, which defines a user option Context Menu: A menu executing after a long click Long Click: Analogous to right clicks; Hold click for approximately two seconds Modal: Dialog requiring a response before continuing an activity Localize: Separate data from an application, so changes don't require changing source. Refer to the data by an identifier name. Faded Edge: An edge of a scrollable area that is faded to indicate that more information exists Fragment: An independent module tightly bound to an application Bundle: A set of key/value data pairs for persisting an application state
3
Android Terminology (cont.) Gravity: Determine alignment of text within a view of different size. Values can include: top, bottom, left, center, fill Content Provider: Wrapper for data, exposing data (SQL for example) to multiple applications, using a standard API. Cursor: An object containing rows extracted from an SQL table Projection: The columns of an SQL table of interest Live Folder: Deprecated mechanism to display data on home page – Developers now use Widgets – Live: updates display automatically Widgets: Miniature icon-based application view (clock, battery charge percent) embedded on the home screen or application Live Wallpaper: Dynamic interactive home screen backgrounds
4
Creating an Android Application Perform the following steps 1.Create a new Android project in Eclipse with the wizard icon 2.Register activities, specify Content Providers, Services, and security specifications in AndroidManifest.xml 3.Create localized literals in the res/values directory 4.Create other resources in various res directories 5.Create UI layouts in the res/layouts directory 6.Code the activity java class in the package folder
5
Step 1: Eclipse Android Project Wizard First Screen – Name the project – Use workspace or browse to a new location Second Screen: Pick an Android version – The oldest version has the most compatibility – Newer versions obviously have more features – Some newer features are backwards compatible Third Screen: Pick a package name – Example: com.acorns.lesson or com.cs415.name Click finish to complete the process
6
Android Application Project Structure
7
Automatically Generated Files package com.paad.helloworld; public final class BuildConfig { public final static boolean DEBUG = true; } package com.paad.helloworld;public final class R { public static final class attr { } public static final class drawable { public static final int ic_launcher=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; }
8
Step 2: Create the Manifest The new project wizard – Automatically Creates a default AndroidManifest.xml file – Creates a default activity in the project directory Alter the manifest – Register activities with intents, permissions, content providers, services, etc. – There are two possibilities Edit the manifest directly Use the Manifest Editor that displays when clicking the AndroidManifest.xml file
9
HelloWorld Manifest <uses-sdk android:minSdkVersion="1" // User cannot install if less (1=default) android:targetSdkVersion="15" /> // Verify features between min & target <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".MyActivity" >
10
Step 2: Register Activities How? Alter the manifest! – Create additional activities – Create and/or fragments with intents, permissions, content providers, services, etc. – There are two possibilities Edit the manifest directly Use the GUI that displays when clicking the AndroidManifest.xml file (Double click AndroidManifest.xml, click on application, scroll down and click on add, Choose activity from the dropdown, give it a name, and click finish to start coding) Definition: A focused single task
11
Intent Android Intent Resolver – Applications sends intents to the Android system – The Android intent resolver searches all application intent filters to find the most suitable matching activity – Intents can target a single application or multiple applications broadcast for sequential handling Intent Filters – Intent fields contain criteria fields defining whether an activity is appropriate – Criteria fields include actions, a category, path to data, MIME type, a handling class, and security restrictions Definition: Messages that asynchronously launch or communicate with other applications/activities More Details later
12
Manifest Intent Filter Example Note: An intent launches an activity The Main Entry when a user launches the application Launched by other applications for list access Launched by other applications for single item access
13
Providing Access to NotePad Data Declares legal activity operations on a note directory. URI, vnd.android.cursor.dir/vnd.google.note, retrieves a cursor of zero or more items (vnd.android.cursor.dir) with note pad data (vnd.google.note). Legal actions: view or edit the directory of data (VIEW and EDIT ), or pick and return a particular note (PICK). Activities launched without a explicit package name require the DEFAULT category, or they will not be resolved
14
Another Android Manifest <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bikerolas" android:versionCode="30" android:versionName="1.2"> <application android:icon="@drawable/flingicn1" android:label="@string/app_name" android:debuggable="false"> Note: ACCESS_LOCATION and ACCESS_GPS were used by earlier Android versions and are now deprecated
15
Localize Strings Example (Strings.xml) Hello World, MyActivity! PA4AD_Ch02_Hello_World Build: Android creates gen/ /R.java automatically from the information in res/Strings.xml Java Access: setTitle(getText(R.string.hello)); Manifest XML Access: android:label="@string/app_name" How? Create XML files in the res/values directory Why? Promotes Internationalize and easier maintenance
16
Layout Example (main.xml) Notes fill_parent (or match_parent Android 2.0 and later) fill the entire space of the parent layout Wrap_content uses as little space as needed LinearLayout is a vertical or horizontal list of items (like BoxLayout in Swing) How? Store xml text files in the res/layouts directory
17
The Java Code package com.paad.helloworld; import android.app.Activity; import android.os.Bundle; public class MyActivity extends Activity { /** Called when the Activity is created or restarted. **/ @Override public void onCreate(Bundle savedState) { super.onCreate(savedState); setContentView(R.layout.main); } A Bundle is a bunch of key/value pairs for Applications to restore their state after an Android termination
18
Android Emulator Start the Emulator from Eclipse – Right click on the application – Select run as and then Android application – To debug: Select debug as and then Android Application – After the first time, just click the run icon at the top of the Eclipse window Important notes – The emulator takes quite a bit of time to launch; be patient – Don’t shut down the emulator between application runs. Closing leads to long start up times, and sometimes confuses Eclipse – Every Eclipse run reinstalls and re-launches the application
19
Debugging Applications Set debuggable="true" in the tag – This is automatic when debugging in the emulator – Manually explicitly set preference to debug on a real device Eclipse views – DDMS: Dalvik Debug Monitor Server Simulate Event: Global Positioning Service (GPS), phone calls, Short Message System (SMS), etc. – Debug: Start with "Debug as" – Execute emulator to get a terminal window and execute Linux commands to connect to SQL, execute queries, etc. – ADB (Android Debug Bridge): Debug on actual devices (if debugging enabled) using Eclipse; Note: ADB is part of the SDK platform tools Techniques: Logcat displays console output, Trace, Breakpoints, Strict mode
20
Enable Device Debugging Eclipse: window>open perspective->other>DDMS Enable debugging on device – Older devices: settings>applications>development – Newer devices: settings>about phone> tap build # seven times> back
21
Debugging Techniques Tracing the execution – Start: android.os.Debug.startmethodTracing("foo"); – Stop: android.os.Debug.stopMethodTracing(); – Writes output to: foo.trace on the emulator or device Log class: – Analogous to Java: System.out.println or Javascript: Console.log – Example: Log.v("category string", "message"); Asynchronous Alert Dialogs AlertDialog.Builder build = new AlertDialog(context); build.setTitle("Some Message"); AlertDialog ad = builder.create(); ad.show(); Breakpoints: Set Eclipse breakpoint and use "Debug as" option
22
Strict Mode (Android 2.3 and newer) Report violations and IO Operations: Disk reads, disk writes, etc. Common options when detection occurs: Write a Log message, display a dialog message, or crash the application Example StrictMode.setVMPolicy(new StrictMode.VMPolicy.builder().detectDiskWrites().detectLeakedSqlLiteObjects().penaltyLog().penaltyDeath().build()); Note: The build retuns a ThreadPolicy object to the VM Policy builder Detect if in debug mode ApplicationInfo info = getContext().getApplicationInfo(); if (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { /* code here */}
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.