Android App Development
Android App Development
1. Basics of Android OS
2. Develop Basic and advance Android Apps
3. Publishing and Monetizing the app
Course Outcomes
CO1 Understand about Android OS and its Development Environment
CO2 Concept of concepts of android application development, user interface design,
shared preferences.
CO3 DevelopBasic and advance android app development for android devices.
CO4 Publish the app
CO5 Monetize from app development.
CO6 Understanding the latest advances and its applications
OBJECTIVES:
The student should be made to:
Know the components and structure of mobile application development frameworks for
Android and windows OS-based mobiles.
Understand how to work with various mobile application development frameworks. Learn
the basic and important design concepts and issues of development of mobile applications.
Understand the capabilities and limitations of m
2
SIGNATURE
S.NO DATE EXPERIMENTS OF THE REMARKS
STAFF
Develop an application that uses GUI components,
1
Font and Colors
3
4
Ex.No: 1 Develop an application that uses GUI components, Font and
Colours
Simple application to change font size and color of text view
5
8) Click the main.xml file and type the code below
Code:
6
android:gravity="center"
android:text="Change font size"
android:textSize="20sp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Change color"
android:textSize="20sp" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Change font"
android:textSize="20sp" />
</LinearLayout>
9) Again click the graphics layout tab and screen layout is look like below
10) Go to project explorer and select src folder.Now select mainactivity.java file and type the
following code.
7
PROGRAM
8
public void onClick(View view) {
switch(i)
{ case 1:
t1.setTextColor(Color.parseColor("#0000FF
")); break; case 2:
t1.setTextColor(Color.parseColor("#00FF00
")); break; case 3:
t1.setTextColor(Color.parseColor("#FF0000"));
break; case 4:
t1.setTextColor(Color.parseColor("#800000"));
break;
} i++;
if(i==5)
i=1;
}
});
}}
11) Now go to main.xml and right click .select run as option and select run configuration
9
12) Android output is present in the android emulator as shown in below.
OR
▪ Open Android Stdio and then click on File -> New -> New project.
10
▪ Then select the Minimum SDK as shown below and click Next.
11
▪ Finally click Finish.
12
Designing layout for the Android Application:
▪ Then delete the code which is there and type the code as given below.
13
Code for Activity_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="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:gravity="center"
android:text="Hello World!"
android:textSize="25sp"
android:textStyle="bold" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:gravity="center"
android:text="Change font size"
android:textSize="25sp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:gravity="center"
android:text="Change color"
android:textSize="25sp" />
</LinearLayout>
▪ Now click on Design and your application will look as given below.
14
Java Coding for the Android Application:
▪ Click on app -> java -> com.example.exno1 -> MainActivity.
▪ Then delete the code which is there and type the code as given below.
package com.example.exno1;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
15
case 1:
t.setTextColor(Color.RED);
break;
case 2:
t.setTextColor(Color.GREEN);
break;
case 3:
t.setTextColor(Color.BLUE);
break;
case 4:
t.setTextColor(Color.CYAN);
break;
case 5:
t.setTextColor(Color.YELLOW);
break;
case 6:
t.setTextColor(Color.MAGENTA);
break;
}
ch++;
if (ch == 7)
ch = 1;
}
});
}
}
16
Result:
Thus a Simple Android Application that uses GUI components, Font and Colors is developed and
executed successfully.
17
Ex.No : 2 -DEVELOP AN APPLICATION THAT USES LAYOUT
MANAGERS AND EVENT LISTENERS
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativeLayout1" android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="ADDITION"
android:textSize="20dp" >
18
</TextView>
</LinearLayout><LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout1" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ENTER NO 1" >
</TextView><EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.20"
android:id="@+id/edittext1"
android:inputType="number">
</EditText>
</LinearLayout><LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout2" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ENTER NO 2" >
</TextView><EditText
android:layout_width="wrap_content"
19
android:layout_height="wrap_content"
android:layout_weight="0.20"
android:id="@+id/edittext2"
android:inputType="number">
</EditText>
</LinearLayout><LinearLayout
android:id="@+id/linearLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/linearLayout3" >
<Button
android:layout_width="wrap_content"
android:id="@+id/button1"
android:layout_height="wrap_content"
android:text="Addition"
android:layout_weight="0.50" />
<Button
android:layout_width="wrap_content"
android:id="@+id/button3"
android:layout_height="wrap_content"
android:text="subtraction"
android:layout_weight="0.50" />
<Button
android:layout_width="wrap_content"
android:id="@+id/button2"
android:layout_height="wrap_content"
android:text="CLEAR"
android:layout_weight="0.50" />
</LinearLayout>
20
<View
android:layout_height="2px"
android:layout_width="fill_parent"
android:layout_below="@+id/linearLayout4"
android:background="#DDFFDD"/>
</RelativeLayout>
setContentView(R.layout.main);
21
OnClickListener() { public
void onClick(View v) {
try
{
txtData1 = (EditText)
findViewById(R.id.edittext1);
txtData2 = (EditText)
findViewById(R.id.edittext2);
num1 =
Float.parseFloat(txtData1.getTe
xt().toString()); num2
=
Float.parseFloat(txtData2.getTe
xt().toString());
result1=num1+num2;
Toast.makeText(getBaseContext(),"ANSWER:"+result1,Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
});
Button sub = (Button) findViewById(R.id.button3);
sub.setOnClickListener(new OnClickListener() {
22
txtData1 = (EditText) findViewById(R.id.edittext1);
txtData2 = (EditText) findViewById(R.id.edittext2); num1 =
Float.parseFloat(txtData1.getText().toString()); num2 =
Float.parseFloat(txtData2.getText().toString());
result2=num1-num2;
Toast.makeText(getBaseContext(),"ANSWER:"+result2,Toast.LENGTH_SHORT).show();
}
catch(Exception e)
{
Toast.makeText(getBaseContext(), e.getMessage(),
Toast.LENGTH_SHORT).show();
}
}
});
Button clear = (Button) findViewById(R.id.button2);
clear.setOnClickListener(new OnClickListener() {
23
8) Now go to main.xml and right click .select run as option and select run configuration
9) Android output is present in the android emulator as shown in below.
24
Ex.No : 3- DEVELOP A NATIVE CALCULATOR APPLICATION
Main.xml coding
<?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">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
android:layout_marginLeft="10pt"
android:layout_marginRight="10pt"
android:layout_marginTop="3pt">
<EditText android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginRight="5pt"
android:id="@+id/etNum1"
android:layout_width="match_parent"
android:inputType="numberDecimal">
25
</EditText><EditText
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5pt"
android:id="@+id/etNum2"
android:layout_width="match_parent"
android:inputType="numberDecimal">
</EditText>
</LinearLayout><LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout2"
android:layout_marginTop="3pt"
android:layout_marginLeft="5pt"
android:layout_marginRight="5pt">
<Button android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_weight="1" android:text="+"
android:textSize="15pt"
android:id="@+id/btnAdd">
</Button><Button
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1" android:text="-"
android:textSize="15pt" android:id="@+id/btnSub">
</Button><Button
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_weight="1" android:text="*"
android:textSize="15pt" android:id="@+id/btnMult">
</Button><Button
android:layout_height="wrap_content"
android:layout_width="match_parent"
26
android:layout_weight="1" android:text="/"
android:textSize="15pt"
android:id="@+id/btnDiv"></Button>
</LinearLayout><TextView
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_marginLeft="5pt"
android:layout_marginRight="5pt"
android:textSize="12pt"
android:layout_marginTop="3pt"
android:id="@+id/tvResult"
android:gravity="center_horizontal">
</TextView>
</LinearLayout>
7) Now select mainactivity.java file and type the following code. package
Button addition;
Button subtraction;
27
Button multiplication;
Button division;
TextView tvResult;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); input1 =
(EditText) findViewById(R.id.etNum1); input2
= (EditText) findViewById(R.id.etNum2);
// set a listener
addition.setOnClickListener(this);
subtraction.setOnClickListener(this);
multiplication.setOnClickListener(this);
division.setOnClickListener(this);
@Override
public void onClick(View v) { // TODO Auto-generated method stub
28
// check if the fields are empty if
(TextUtils.isEmpty(input1.getText().toString())
|| TextUtils.isEmpty(input2.getText().toString())) {
return; }
// defines the button that has been clicked and performs the corresponding operation
// write operation into oper, we will use it later for
output switch (v.getId()) { case R.id.btnAdd:
oper = "+";result
= num1 + num2;
break; case
R.id.btnSub:
oper = "-"; result
= num1 - num2;
break; case
R.id.btnMult:
oper = "*"; result
= num1 * num2;
break; case
R.id.btnDiv:
oper = "/"; result
= num1 / num2;
break;
default:
break;
}
29
// form the output line
tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result);
}
}
8) Android output is present in the android emulator as Shown in below
30
Ex. No : 4- WRITE AN APPLICATION THAT DRAWS BASIC
GRAPHICALPRIMITIVES ON THE SCREEN IN ANDROID
package Basic.primitive;
import
android.app.Activity;
import
android.content.Context;
import
android.graphics.Canvas
; import
android.graphics.Color;
import
android.graphics.Paint;
import
android.os.Bundle;
import
android.view.View;
31
public class BasicprimitiveActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new myview(this));
}
private class myview extends View
{
public myview(Context context)
{
super(context);
}
@Override
32
canvas.drawText("LINE", 255, 430, paint);
paint.setColor(Color.CYAN);
canvas.drawLine(250, 500, 350, 500, paint);
}
}
}
8) Now go to main.xml and right click .select run as option and select run configuration
9) Android output is present in the android emulator as shown in below.
33
Ex.No : 5- DEVELOP AN APPLICATION THAT MAKES USE OF
DATABASE
34
android:layout_width="150dp"
android:layout_height="40dp"/><TextView
android:text="@string/name"
android:layout_x="30dp"
android:layout_y="100dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/><EditTe
xt android:id="@+id/editName"
android:inputType="text"
android:layout_x="150dp"
android:layout_y="100dp"
android:layout_width="150dp"
android:layout_height="40dp"/><TextView
android:text="@string/salary"
android:layout_x="30dp"
android:layout_y="150dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/><EditText
android:id="@+id/editsalary"
android:inputType="number"
android:layout_x="150dp"
android:layout_y="150dp"
android:layout_width="150dp"
android:layout_height="40dp"/><Button
android:id="@+id/btnAdd"
android:text="@string/add"
android:layout_x="30dp"
android:layout_y="200dp"
android:layout_width="130dp"
android:layout_height="40dp"/><Button
android:id="@+id/btnDelete"
android:text="@string/delete"
35
android:layout_x="160dp"
android:layout_y="200dp"
android:layout_width="130dp"
android:layout_height="40dp"/>n <Button
android:id="@+id/btnModify"
android:text="@string/modify"
android:layout_x="30dp"
android:layout_y="250dp"
android:layout_width="130dp"
android:layout_height="40dp"/><Button
android:id="@+id/btnView"
android:text="@string/view"
android:layout_x="160dp"
android:layout_y="250dp"
android:layout_width="130dp"
android:layout_height="40dp"/><Button
android:id="@+id/btnViewAll"
android:text="@string/view_all"
android:layout_x="85dp"
android:layout_y="300dp"
android:layout_width="150dp"
android:layout_height="40dp"/>
</AbsoluteLayout>
7) Go to values folder and select string.xml file. Replace the code below
36
<string name="name">Enter Name: </string>
<string name="salary">Enter salary: </string>
<string name="add">Add Employee</string>
<string name="delete">Delete Employee</string>
<string name="modify">Modify Employee</string>
<string name="view">View Employee</string>
<string name="view_all">View All Employee</string>
</resources>
8) Now select mainactivity.java file and type the following code.In my coding maniactivity
name is EmployeedetailActivity.
package employee.detail;
//import android.R; import android.app.Activity; import android.app.AlertDialog.Builder;
import android.content.Context; import android.database.Cursor;
import
android.database.sqlite.SQLiteDatabase;
import android.os.Bundle; import
android.view.View;
import
android.view.View.OnClickListener;
import android.widget.Button; import
android.widget.EditText;
37
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
editEmpid=(EditText)findViewById(R.id.editEmpid);
editName=(EditText)findViewById(R.id.editName);
editsalary=(EditText)findViewById(R.id.editsalary);
btnAdd=(Button)findViewById(R.id.btnAdd);
btnDelete=(Button)findViewById(R.id.btnDelete);
btnModify=(Button)findViewById(R.id.btnModify);
btnView=(Button)findViewById(R.id.btnView);
btnViewAll=(Button)findViewById(R.id.btnViewAll);
btnAdd.setOnClickListener(this);
btnDelete.setOnClickListener(this);
btnModify.setOnClickListener(this);
btnView.setOnClickListener(this);
btnViewAll.setOnClickListener(this);
db=openOrCreateDatabase("EmployeeDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS employee(empid VARCHAR,name
VARCHAR,salary VARCHAR);");
}
public void onClick(View view)
{
if(view==btnAdd)
{
if(editEmpid.getText().toString().trim().length()==0||
editName.getText().toString().trim().length()==0||
editsalary.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter all values");
return;
}
db.execSQL("INSERT INTO employee
VALUES('"+editEmpid.getText()+"','"+editName.getText()+
38
"','"+editsalary.getText()+"');");
showMessage("Success", "Record added");
clearText();
}
if(view==btnDelete)
{
if(editEmpid.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter Employee id");
return; }
Cursor c=db.rawQuery("SELECT * FROM employee WHERE
empid='"+editEmpid.getText()+"'", null);
if(c.moveToFirst())
{
db.execSQL("DELETE FROM employee WHERE
empid='"+editEmpid.getText()+"'");
showMessage("Success", "Record Deleted");
} else
{
showMessage("Error", "Invalid Employee id");
}
clearText();
}
if(view==btnModify)
{
if(editEmpid.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter Employee id");
return;
}
Cursor c=db.rawQuery("SELECT * FROM employee WHERE
39
empid='"+editEmpid.getText()+"'", null);
if(c.moveToFirst())
{
db.execSQL("UPDATE employee SET
name='"+editName.getText()+"',salary='"+editsalary.getTe
xt()+ "' WHERE
empid='"+editEmpid.getText()+"'");
showMessage("Success", "Record Modified");
}
else
{
showMessage("Error", "Invalid Rollno");
}
clearText();
}
if(view==btnView)
{
if(editEmpid.getText().toString().trim().length()==0)
{
showMessage("Error", "Please enter Employee id");
return;
}
Cursor c=db.rawQuery("SELECT * FROM employee WHERE
empid='"+editEmpid.getText()+"'", null);
if(c.moveToFirst())
{
editName.setText(c.getString(1));
editsalary.setText(c.getString(2));
}
else
{
40
showMessage("Error", "Invalid Employee id");
clearText();
}
}
if(view==btnViewAll)
{
Cursor c=db.rawQuery("SELECT * FROM employee", null);
if(c.getCount()==0)
{
showMessage("Error", "No records found"); return;
}
StringBuffer buffer=new StringBuffer(); while(c.moveToNext())
{
buffer.append("Employee id: "+c.getString(0)+"\n");
buffer.append("Name: "+c.getString(1)+"\n");
buffer.append("salary: "+c.getString(2)+"\n\n");
}
showMessage("Employee details Details", buffer.toString());
}
}
public void showMessage(String title,String message)
{
Builder builder=new Builder(this);
builder.setCancelable(true); builder.setTitle(title);
builder.setMessage(message);
builder.show();
}
public void clearText()
{
editEmpid.setText(""); editName.setText("");
editsalary.setText("");
editEmpid.requestFocus();
41
}
}
7) Now go to main.xml and right click .select run as option and select run configuration
8) Android output is present in the android emulator as shown in below.
42
Ex. No : 6- DEVELOP AN APPLICATION THAT MAKES USE OF RSS
FEED
Code:
43
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20sp"
android:gravity="center"
android:text="HELLO WORLD"
android:textSize="20sp"
android:textStyle="bold" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Change font size"
android:textSize="20sp" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Change color"
android:textSize="20sp" />
<Button
android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Change font"
android:textSize="20sp" />
44
</LinearLayout>
9) Again click the graphics layout tab and screen layout is look like below
10) Go to project explorer and select src folder.Now select mainactivity.java file and type the
following code.
PROGRAM
import android.R; import
android.app.Activity; import
android.graphics.Color; import
android.graphics.Typeface; import
android.os.Bundle; import
android.view.View; import
android.widget.Button; import
android.widget.TextView;
public class AndroidActivity extends Activity { float
font =24; int i=1;
45
final TextView t1=(TextView) findViewById(R.id.textView1); Button b1
= (Button) findViewById(R.id.button1);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
t1.setTextSize(font);
font=font+4; if(font==40)
font=20;
}
});
Button b2 = (Button) findViewById(R.id.button2);
b2.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
switch(i)
{ case 1:
t1.setTextColor(Color.parseColor("#0000FF"));
break; case 2:
t1.setTextColor(Color.parseColor("#00FF00"));
break; case 3:
t1.setTextColor(Color.parseColor("#FF0000"));
break; case 4:
t1.setTextColor(Color.parseColor("#800000"));
break;
} i++;
if(i==5)
i=1;
}
});
}}
46
8) Now go to main.xml and right click .select run as option and select run configuration
47
Ex. No: 7
- IMPLEMENT AN APPLICATION THAT IMPLEMENTS
MULTI THREADING
48
7) Now select mainactivity.java file and type the following code.
package multi.threading;
//import your.first.R; import
android.app.Activity; import
android.os.Bundle; import
android.os.Handler; import
android.view.View; import
android.widget.TextView;
}
public void fetchData(View v) {
tvOutput.setText("Main thread");
thread1.start();
thread2.start();
thread3.start();
}
49
Thread.sleep(1000); } catch
(InterruptedException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(t1);
}
}
});
Thread thread2 = new Thread(new Runnable() {
}
});
Thread thread3 = new Thread(new Runnable() {
50
}
}
});
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if(msg.what == t1) {
tvOutput.append("\nIn thread 1");
}
if(msg.what == t2) {
tvOutput.append("\nIn thread 2");
}
if(msg.what == t3) {
tvOutput.append("\nIn thread 3");
}
}
};
8) Now go to main.xml and right click .select run as option and select run configuration
9) Android output is present in the android emulator as shown in below.
51
Ex.No : 8
DEVELOP A NATIVE APPLICATION THAT USES GPS
LOCATION INFORMATION
52
android:layout_centerHorizontal="true"
/>
</RelativeLayout>
7) Now select mainactivity.java file and type the following code. In my coding man activity
name is GPSlocation Activity. Package gps.location;
//import android.R;
import
android.app.Activity;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Butto
n; import
android.widget.Toast
;
53
// TODO Auto-generated method stub
gps=new GPStrace(GPSlocationActivity.this);
if(gps.canGetLocation()){
double latitude=gps.getLatitude();
double longitude=gps.getLongtiude();
Toast.makeText(getApplicationContext(),"Your Location is
\nLat:"+latitude+"\nLong:"+longitude, Toast.LENGTH_LONG).show();
}
else
{
gps.showSettingAlert();
}
}
});
}
}
8) Go to src folder and Right Click on your package folder and choose new class and give the
class names as GPS trace
54
9) Select the GPStrace.java file and paste the following code.
Package gps.location;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import
android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import
android.location.LocationListener
; import
android.location.LocationManage
r; import android.os.Bundle;
import android.os.IBinder; import
android.provider.Settings;
55
}
public Location getLocation()
{
try{
locationManager=(LocationManager) context.getSystemService(LOCATION_SERVICE);
isGPSEnabled=locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
;
isNetworkEnabled=locationManager.isProviderEnabled(LocationManager.NETWORK_PR
OVI DER);
if(!isGPSEnabled && !isNetworkEnabled){
}else{
this.canGetLocation=true;
if(isNetworkEnabled){
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES,this);
}
if(locationManager!=null){
location=locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVI
DER)
;
if(location !=null){
latitude=location.getLatitude();
longtitude=location.getLongitude();
}
}
56
}
if(isGPSEnabled){
if(location==null){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIM
E_B
W_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
if(locationManager!=null){
location=locationManager.getLastKnownLocation(LocationManager.GPS_PROV
IDER); if(location!=null){
latitude=location.getLatitude();
longtitude=location.getLongitude();
}
}
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
return location;
}
public void stopUsingGPS(){
if(locationManager!=null){
locationManager.removeUpdates(GPStrace.this);
} } public double
getLatitude(){
if(location!=null){
latitude=location.getLatitude();
57
}
return latitude;
}
public double getLongtiude(){
if(location!=null){
longtitude=location.getLatitude();
}
return longtitude;
}
public boolean canGetLocation(){
return this.canGetLocation;
}
public void showSettingAlert(){
AlertDialog.Builder alertDialog=new AlertDialog.Builder(context);
alertDialog.setTitle("GPS is settings"); alertDialog.setMessage("GPS is not
enabled.Do you want to go to setting menu?");
alertDialog.setPositiveButton("settings", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,int which){
Intent intent=new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
context.startActivity(intent);
}
});
alertDialog.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
58
alertDialog.show();
}
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
}
@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
}
@Override
public IBinder onBind(Intent
intent) { // TODO Auto-generated
method stub return null;
}
}
10) Go to manifest.xml file and add the code below
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"/>
59
<uses-permission
android:name="android.permission.INTERNET"/>
11) Now go to main.xml and right click .select run as option and select run
configuration
60
Ex.No : 9
IMPLEMENT AN APPLICATION THAT WRITES DATA TO THE
SD CARD
61
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SHOW DATA" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
7) Now select mainactivity.java file and type the following code.
package save.sd;
import java.io.File; import
java.io.FileInputStream; import
java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import
java.io.InputStreamReader; import
java.io.OutputStreamWriter; import
android.app.Activity; import
android.os.Bundle; import
android.os.Environment; import
android.view.View; import
android.widget.Button; import
android.widget.EditText; import
android.widget.TextView; import
android.widget.Toast;
public class SavedatasdcardActivity extends Activity {
/** Called when the activity is first created. */
Button save,load;
EditText message;
TextView t1;
62
String Message1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); save=(Button)
findViewById(R.id.button1); load=(Button)
findViewById(R.id.button2); message=(EditText)
findViewById(R.id.editText1); t1=(TextView)
findViewById(R.id.textView1);
save.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
//Get message from user store in message1 variable
Message1 =message.getText().toString(); try{
//Create a new folder called MyDirectory in SDCard
File sdcard=Environment.getExternalStorageDirectory();
File directory=new File(sdcard.getAbsolutePath()+"/MyDirectory");
directory.mkdirs();
//Create a new file name textfile.txt inside MyDirectory
File file=new File(directory,"textfile.txt");
//Create File Outputstream to read the file
FileOutputStream fou=new FileOutputStream(file);
OutputStreamWriter osw=new OutputStreamWriter(fou);
try{
//write a user data to file
osw.append(Message1);
osw.flush();
osw.close();
Toast.makeText(getBaseContext(),"Data
Saved",Toast.LENGTH_LONG).show();
}catch(IOException e){
e.printStackTrace();
63
}
}catch (FileNotFoundException e){
e.printStackTrace();
}
}
});
load.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
try{
File sdcard=Environment.getExternalStorageDirectory();
File directory=new File(sdcard.getAbsolutePath()+"/MyDirectory");
File file=new File(directory,"textfile.txt");
FileInputStream fis=new FileInputStream(file);
InputStreamReader isr=new InputStreamReader(fis);
char[] data=new char[100];
String final_data="";
int size;
try{
while((size=isr.read(data))>0)
{
//read a data from file
String read_data=String.copyValueOf(data,0,size);
final_data+=read_data;
data=new char[100];
}
//display the data in output
Toast.makeText(getBaseContext(),"Message:"+final_data,Toast.LENGTH_LONG).show()
;
}catch(IOException e){
e.printStackTrace();
}
64
}catch (FileNotFoundException e){
e.printStackTrace();
}
}
});
}
}
8) Next step is to set permission to write data in sd card. So go to AndroidManifest.xml file.
Copy and paste the following coding. The code should come before <application> tab.
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
9) Now go to main.xml and right click .select run as option and select run configuration
65
Ex.No: 10
IMPLEMENT AN APPLICATION THAT CREATES AN ALERT
UPON RECEIVING A MESSAGE IN ANDROID
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical" >
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*"
android:stretchColumns="*"
android:background="#000000">
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
android:id="@+id/Title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
66
android:layout_margin="5px"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center_vertical|center_hori
zontal" android:text="QUIZ"
android:textSize="25sp"
android:textStyle="bold" />
<View
android:layout_height="2px"
android:layout_marginTop="5dip"
android:layout_marginBottom="5dip"
android:background="#DDFFDD"/>
</TableRow>
<TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:text="1.CAPTIAL OF INDIA"
android:layout_span="4"
android:padding="18dip"
android:textColor="#ffffff"/>
</TableRow><TableRow
android:id="@+id/tableRow1"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<RadioGroup
android:id="@+id/answer1"
android:layout_width="match_parent"
67
android:layout_height="wrap_content"
android:layout_weight="0.4" >
<RadioButton
android:id="@+id/answer1A"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="CHENNAI" />
<RadioButton
android:id="@+id/answer1B"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="NEW DELHI" />
<RadioButton
android:id="@+id/answer1C"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="MUMBAI" />
<RadioButton
android:id="@+id/answer1D"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="HYDERBAD" />
</RadioGroup>
</TableRow><TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<TextView
68
android:layout_width="match_parent" android:layout_height="wrap_content"
android:textSize="18sp" android:text="2. CAPTIAL OF
RUSSIA?" android:layout_span="4"
android:padding="18dip" android:textColor="#ffffff"/>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_height="wrap_content"
android:layout_width="match_parent">
<RadioGroup
android:id="@+id/answer2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.4" >
<RadioButton
android:id="@+id/answer2A"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="WARSAW " />
<RadioButton
android:id="@+id/answer2B"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="BERLIN" />
<RadioButton
android:id="@+id/answer2C"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="MASCOW " />
69
<RadioButton
android:id="@+id/answer2D"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#ffffff"
android:text="CANEBRA " />
</RadioGroup>
</TableRow><TableRow
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:gravity="center_horizontal">
<Button
android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Submit" />
</TableRow>
</TableLayout></ScrollView>
7) Now select mainactivity.java file and type the following code. In my coding man activity name is
Alert1Activity.
8) Now go to main.xml and right click .select run as option and select run configuration
9) Android output is present in the android emulator as shown in below.
70
71
Ex.No : 11
Date :
1. Android Manifest
AndroidManifest.xml
We need to give uses-permission for WAKE_LOCK, other than that the AndroidManifest.xml is
pretty standard one. Just need to include the service and receiver.
72
2. Android Activity
activity_my.xml
The Android Activity is designed to be simple. We have a Time Picker component followed by a
Toggle Button. That’s it. Choose the time to set the alarm and toggle the switch to on. The alarm
will work.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MyActivity">
<TimePicker
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/alarmTimePicker" android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Alarm
On/Off" android:id="@+id/alarmToggle"
android:layout_centerHorizontal="true"
android:layout_below="@+id/alarmTimePicker"
android:onClick="onToggleClicked" />
<TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="" android:id="@+id/alarmText"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_below="@+id/alarmToggle" />
</RelativeLayout>
73
AlarmActivity.java
Alarm Activity uses the Alarm Manager to set the alarm and send notification on alarm trigger.
package com.javapapers.androidalarmclock;
import android.app.Activity; import
android.app.AlarmManager; import
android.app.PendingIntent; import
android.content.Intent; import
android.os.Bundle; import
android.util.Log; import
android.view.View; import
android.widget.TextView; import
android.widget.TimePicker; import
android.widget.ToggleButton;
import java.util.Calendar; public
class AlarmActivity extends Activity
{
AlarmManager alarmManager; private
PendingIntent pendingIntent; private
TimePicker alarmTimePicker; private
static AlarmActivity inst; private TextView
alarmTextView;
public static AlarmActivity instance() {
return inst; }
@Override
public void onStart() {
super.onStart(); inst =
this; }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_my);
74
alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker); alarmTextView
= (TextView) findViewById(R.id.alarmText);
ToggleButton alarmToggle = (ToggleButton) findViewById(R.id.alarmToggle);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
}
public void onToggleClicked(View view) { if
(((ToggleButton) view).isChecked()) {
Log.d("MyActivity", "Alarm On");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY,
alarmTimePicker.getCurrentHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, 0, myIntent, 0);
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntent);
} else {
alarmManager.cancel(pendingIntent); setAlarmText("");
Log.d("MyActivity", "Alarm Off");
} }
public void setAlarmText(String alarmText) { alarmTextView.setText(alarmText);
}
}
3. Alarm Receiver
AlarmReceiver.java
this is the one that receives the alarm trigger on set time. From here we initiate different actions
to notify the user as per our choice. I have given three type of notifications, first show a message
to user in the activity UI, second play the alarm ringtone and third send an Android notification
message. So this is the place to add enhancement for different types of user notifications.
package com.javapapers.androidalarmclock;
75
import android.app.Activity; import
android.content.ComponentName; import
android.content.Context; import
android.content.Intent; import
android.media.Ringtone; import
android.media.RingtoneManager; import
android.net.Uri;
import android.support.v4.content.WakefulBroadcastReceiver; public class
AlarmReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
//this will update the UI with message AlarmActivity inst =
AlarmActivity.instance(); inst.setAlarmText("Alarm! Wake up!
Wake up!");
76
4. Alarm Notification Message
AlarmService.java
The receiver will start the following Intent Service to send a standard notification to the user.
package com.javapapers.androidalarmclock;
import android.app.IntentService; import
android.app.NotificationManager; import
android.app.PendingIntent; import
android.content.Context; import
android.content.Intent;
import android.support.v4.app.NotificationCompat; import
android.util.Log;
public AlarmService() {
super("AlarmService"); }
@Override
public void onHandleIntent(Intent intent) { sendNotification("Wake Up! Wake
Up!");
}
77
this).setContentTitle("Alarm").setSmallIcon(R.drawable.ic_launcher)
.setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
.setContentText(msg);
alamNotificationBuilder.setContentIntent(contentIntent);
alarmNotificationManager.notify(1, alamNotificationBuilder.build());
Log.d("AlarmService", "Notification sent."); }
}
78