1 / 67

Android Application Development Tutorial

Android Application Development Tutorial. Accessing Sensors and the Network Acknowledgement: Deepa Shinde and Cindy Atherton. Topics. Background Introduction to Android Overview of Sensors Programming Tutorial 1: Tracking location with GPS and Google Maps Overview of Networking

phutchinson
Download Presentation

Android Application Development Tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android Application Development Tutorial Accessing Sensors and the Network Acknowledgement: Deepa Shinde and Cindy Atherton

  2. Topics • Background • Introduction to Android • Overview of Sensors • Programming Tutorial 1: Tracking location with GPS and Google Maps • Overview of Networking • Programming Tutorial 2: Downloading from the Internet • Programming Tutorial 3: Sending/Receiving SMS Messages • Questions/Comments • Resources

  3. A brief guide to the Android Application Development Environment Introduction to Android

  4. Background • Software platform from Google and the Open Handset Alliance • July 2005, Google acquired Android, Inc. • November 2007, Open Handset Alliance formed to develop open standards for mobile devices • October 2008, Android available as open source • December 2008, 14 new members joined Android project

  5. Update History • April 30, 2009: Official 1.5 Cupcake release • September 15, 2009: 1.6 SDK Donut release • October 26, 2009: 2.0 SDK Éclair release • Updates to the Éclair release: • 2.0.1 on December 3, 2009 • 2.1 on January 12, 2010

  6. Platform Versions

  7. Android and the Hardware • Built-in Apps ≡ Apps created in SDK • Leverage Linux kernel to interface with hardware • Open source platform promotes development from global community

  8. Android Features • Reuse and replacement of components • Dalvik virtual machine • Integrated browser • Optimized graphics • SQLite • Media support • GSM Telephony • Bluetooth, EDGE, 3G, and WiFi • Camera, GPS, compass, and accelerometer • Rich development environment

  9. Android Architecture

  10. Application Fundamentals • Apps are written in Java • Bundled by Android Asset Packaging Tool • Every App runs its own Linux process • Each process has it’s own Java Virtual Machine • Each App is assigned a unique Linux user ID • Apps can share the same user ID to see each other’s files

  11. Application Components • Activity • Present a visual user interface for one focused endeavor the user can undertake • Example: a list of menu items users can choose from • Services • Run in the background for an indefinite period of time • Example: calculate and provide the result to activities that need it • Broadcast Receivers • Receive and react to broadcast announcements • Example: announcements that the time zone has changed • Content Providers • Store and retrieve data and make it accessible to all applications • Example: Android ships with a number of content providers for common data types (e.g., audio, video, images, personal contact information, etc.) • Intents • Hold the content of a message • Example: convey a request for an activity to present an image to the user or let the user edit some text

  12. Installation • http://developer.android.com/sdk/installing.html • Preparing your system and system requirements • Downloading and Installing the SDK • Installing ADT plug-in for Eclipse • Adding Platforms and Components • Exploring the SDK • Completing tutorials • Troubleshooting

  13. The Android Sensor Platform and how to use it Overview of Sensors

  14. Open Source Platform • Developer’s are able to access “goodies” • Hardware capabilities made available

  15. Hardware-oriented Features

  16. Sensor and SensorManager • Sensor type (Sensor class) • Orientation, accelerometer, light, magnetic field, proximity, temperature, etc. • Sampling rate • Fastest, game, normal, user interface. • When an application requests a specific sampling rate, it is really only a hint, or suggestion, to the sensor subsystem. There is no guarantee of a particular rate being available. • Accuracy • High, low, medium, unreliable.

  17. Simulating an Android application that accesses positioning sensors -- Programming Tutorial

  18. Preparing for the Tutorial • Must have Eclipse IDE installed • Must have Android SDK installed • Must have knowledge of Java • Must have the external Google Maps library installed in your SDK environment. The Maps library is included with the Google APIs add-on, which you can install using the Android SDK and AVD Manager.

  19. Get a Google Maps API Key • A Google Maps API key is required to integrate Google Maps into your Android application. • To apply for a key: • Locate the SDK debug certificate in the default folder of "C:\Documents and Settings\<username>\Local Settings\Application Data\Android". The filename of the debug keystore is debug.keystore. • Copy the debug.keystore file to a folder named C:\Android\. • Open the command window and navigate to C:\Program Files\Java\<JDK_version_number>\bin to locate the Keytool.exe. • Execute the following to extract the MD5 fingerprint: keytool.exe -list -alias androiddebugkey -keystore "C:\Android\debug.keystore" -storepass android -keypass android • Copy the MD5 certificate fingerprint and navigate your web browser to: http://code.google.com/android/maps-api-signup.html. • Follow the instructions on the page to complete the application and obtain the Google Maps key. For more information on using Google Maps in Android application development: http://mobiforge.com/developing/story/using-google-maps-android

  20. Create an Android Virtual Device (AVD) • Defines the system image and device settings used by the Emulator • To create an AVD in Eclipse: • Select Window > Android SDK and AVD Manager. The Android SDK and AVD Manager displays. • Make sure the entry for Virtual Devices is selected and click New. The Create new AVD window displays. • Enter a Name for the AVD. • Select Google APIs (API level 3) as the Target. • Click Create AVD. • Close the Android SDK and AVD Manager.

  21. Create the Android Project • To create the project in Eclipse: • Select File > New > Project. • Select Android Project in the Android folder and click Next. • Enter GPSSimulator as the Project Name. • Select Google APIs (Platform 1.5) as the Build Target. • Enter GPSSimulator as the Application name. • Enter com.android.gpssimulator as the Package name. • Enter GPSSimulator as the Activity name. • Click Finish.

  22. The New Android Project

  23. Modify the AndroidManifest.xml File • Add permissions for GPS • To modify the AndroidManifest.xml file: • Click on the res folder in the GPSSimulator project. • Double-click AndroidManifest.xml to display the GPSSimulator Manifest. • Enter the following lines before the application tag. <uses-permission android:name=“android.permission.ACCESS_FINE_LOCATION” /> • Save the changes to the file.

  24. Add LocationManager to get Updates public class GPSSimulator extends Activity { private LocationManager lm; private LocationListener locationListener; // Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // use the LocationManager class to obtain GPS locations lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener); } }

  25. Add MyLocationListener private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { if (loc != null) { Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show(); } } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }

  26. Test the GPSSimulator • To test in Eclipse: • Switch to DDMS view. • Find the Location Controls in the Emulator Control tab. • Click the GPX tab and click Load GPX. • Locate and select the GPX file. • Click Play to begin sending coordinates to the Emulator.

  27. Add ability to use Google Maps • Update the Manifest with two lines. <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.GPSSimulator"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <uses-library android:name="com.google.android.maps" /> <activity android:name=".GPS" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

  28. Add MapView to main.xml <?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" > <com.google.android.maps.MapView android:id="@+id/mapview1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:enabled="true" android:clickable="true" android:apiKey=“Your API Key Here" /> </LinearLayout>

  29. Modify GPSSimulator to use Google Maps public class GPSSimulator extends MapActivity { private LocationManager lm; private LocationListenerlocationListener; private MapViewmapView; private MapController mc; // Called when the activity is first created. @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // use the LocationManager class to obtain GPS locations lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationListener = new MyLocationListener(); lm.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, locationListener); mapView = (MapView) findViewById(R.id.mapview1); mc = mapView.getController(); } @Override protected booleanisRouteDisplayed() { return false; } private class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { if (loc != null) { Toast.makeText(getBaseContext(), "Location changed : Lat: " + loc.getLatitude() + " Lng: " + loc.getLongitude(), Toast.LENGTH_SHORT).show(); GeoPoint p = new GeoPoint( (int) (loc.getLatitude() * 1E6), (int) (loc.getLongitude() * 1E6)); mc.animateTo(p); mc.setZoom(16); mapView.invalidate(); } } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } }

  30. View the Location on the Map

  31. Internet Layers • The Internet, is based on a layered architecture called the TCP/IP stack. • Link Layer • Protocols: ARP and RARP • Internet Layer • Protocols: IP, ping, etc. • Transport • Protocols: TCP and UDP • Application Layer • Protocols: HTTP, FTP, DNS, etc.

  32. Client-Server Communication • A server machine is identified on the Internet by some IP address • Daemons are the processes running in the background which are listening all the time for connection requests from clients on a particular port number. • Once a connection request comes into the server on a given port, the corresponding daemon can choose to accept it, and if so, a connection is established. • Then the application layer protocol is typically used for the client to get or send data to the server.

  33. Accessing a website from the Android Emulator --Programming Tutorial 2

  34. Required Packages

  35. Layout

  36. Link Activity and View • View object may have an integer ID associated with it android:id="@+id/my_button“ • To get the reference of the view object in activity Button myButton = (Button)findViewById(R.id.my_button);

  37. Adding Event to View Object • View.OnClickListener() • Interface definition for a callback to be invoked when a view is clicked.  • onClick(View v) • Called when a view has been clicked. Inside this function you can specify what actions to perform on a click.

  38. Strings.xml

  39. AndroidManifest.xml

  40. Network Settings • If you are using the emulator then there are limitations. Each instance of the emulator runs behind a virtual router/firewall service that isolates it from your development machine's network interfaces and settings and from the internet. • Communication with the emulated device may be blocked by a firewall program running on your machine. • Reference

  41. Behind Proxy Server

  42. Behind Proxy Server

  43. Behind Proxy Server

  44. Behind Proxy Server

  45. Behind Proxy Server

  46. Behind Proxy Server

  47. App to Download jpg file • Step1 Add permissions to AndroidManifest.xml <uses-permission android:name="android.permission.INTERNET" /> • Step 2 Import files import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast;

  48. App to Download jpg file • Step 3 Writing OpenHttpConnection() • To open a connection to a HTTP server using OpenHttpConnection() • We first create an instance of the URL class and initialize it with the URL of the server • When the connection is established, you pass this connection to an URLConnection object. To check if the connection established is using a HTTP protocol. • The URLConnection object is then cast into an HttpURLConnection object and you set the various properties of the HTTP connection. • Next, you connect to the HTTP server and get a response from the server. If the response code is HTTP_OK, you then get the InputStream object from the connection so that you can begin to read incoming data from the server • The function then returns the InputStream object obtained.

  49. App to Download jpg file public class HttpDownload extends Activity { /** Called when the activity is first created.*/ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } private InputStream OpenHttpConnection(String urlString) throws IOException { InputStream in = null; int response = -1; URL url = new URL(urlString); URLConnection conn = url.openConnection(); if (!(conn instanceof HttpURLConnection)) throw new IOException("Not an HTTP connection"); try{ HttpURLConnectionhttpConn = (HttpURLConnection) conn; httpConn.setAllowUserInteraction(false); httpConn.setInstanceFollowRedirects(true); httpConn.setRequestMethod("GET"); httpConn.connect(); response = httpConn.getResponseCode(); if (response == HttpURLConnection.HTTP_OK) { in = httpConn.getInputStream(); } } catch (Exception ex) { throw new IOException("Error connecting"); } return in; } }

  50. App to Download jpg file • Step 4 Modify the Main.xml code <?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> <TextView android:id="@+id/text" android:textStyle="bold" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>

More Related