You are on page 1of 60

ANDROID DEVELOPER

FUNDAMENTALS
PRACTICAL MANUAL
SYCS SEM IV
K.M.AGRAWAL COLLEGE

2021-2022
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 1
Aim: Create a Android App to Run Hello World Program.

Design:

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"

www.profajaypashankar.com Page 2 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</RelativeLayout>

MainActivity.java
package com.example.helloworld;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

www.profajaypashankar.com Page 3 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output :

www.profajaypashankar.com Page 4 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 2
Aim: Create an android app that demonstrates working with
TextView Elements .

Design:

-------------------------------------------------------------------------------
Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"

www.profajaypashankar.com Page 5 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:paddingStart="40dp"
android:orientation="vertical" android:id="@+id/linearlayout"
tools:ignore="RtlSymmetry">
<EditText
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:ems="10"
android:hint="@string/name"
android:inputType="text"
android:selectAllOnFocus="true" />
<EditText
android:id="@+id/txtPwd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/password_0_to_9"
android:inputType="numberPassword" />
<EditText
android:id="@+id/txtEmai"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/email"
android:inputType="textEmailAddress" />

www.profajaypashankar.com Page 6 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

<EditText
android:id="@+id/txtDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText3"
android:ems="10"
android:hint="@string/date"
android:inputType="date"
tools:ignore="ObsoleteLayoutParam" />
<EditText
android:id="@+id/txtPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/phone_number"
android:inputType="phone"
android:textColorHint="#FE8DAB"/>
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/submit"
android:textSize="16sp"
android:textStyle="normal|bold" />
<TextView
android:layout_width="wrap_content"

www.profajaypashankar.com Page 7 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:layout_height="wrap_content"
android:id="@+id/resultView"
android:layout_marginTop="25dp"
android:textSize="15sp"/>
</LinearLayout>
-------------------------------------------------------------------------------
MainActivity.java
package com.example.edittextprogram;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
Button btnSubmit;
EditText name, password, email, dob, phoneno;
TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name=(EditText)findViewById(R.id.txtName);
password = (EditText)findViewById(R.id.txtPwd);

www.profajaypashankar.com Page 8 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

email = (EditText)findViewById(R.id.txtEmai);
dob = (EditText)findViewById(R.id.txtDate);
phoneno= (EditText)findViewById(R.id.txtPhone);
btnSubmit = (Button)findViewById(R.id.btnSend);
result = (TextView)findViewById(R.id.resultView);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@SuppressLint("SetTextI18n")
@Override
public void onClick(View v) {
if (name.getText().toString().isEmpty() ||
password.getText().toString().isEmpty() ||
email.getText().toString().isEmpty() ||
dob.getText().toString().isEmpty()
|| phoneno.getText().toString().isEmpty()) {
result.setText("Please Fill All the Details");
} else {
result.setText("Name - " + name.getText().toString() +
" \n" + "Password - " + password.getText().toString()
+ " \n" + "E-Mail - " + email.getText().toString()
+ " \n" + "DOB - " + dob.getText().toString()
+ " \n" + "Contact - " +
phoneno.getText().toString());
}
}
});
}
}

www.profajaypashankar.com Page 9 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 10 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical - 3
Aim: Create an android app that demonstrates Activity
Lifecycle.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.constraint.ConstraintLayout xmlns:android="http://s
chemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.activitylifecycle.MainActivity
">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
-------------------------------------------------------------------------------
MainActivity.java

package example.javatpoint.com.activitylifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity {

www.profajaypashankar.com Page 11 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("lifecycle","onCreate invoked");
}
@Override
protected void onStart() {
super.onStart();
Log.d("lifecycle","onStart invoked");
}
@Override
protected void onResume() {
super.onResume();
Log.d("lifecycle","onResume invoked");
}
@Override
protected void onPause() {
super.onPause();
Log.d("lifecycle","onPause invoked");
}
@Override
protected void onStop() {
super.onStop();
Log.d("lifecycle","onStop invoked");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("lifecycle","onRestart invoked");
}
@Override
protected void onDestroy() {
super.onDestroy();

www.profajaypashankar.com Page 12 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Log.d("lifecycle","onDestroy invoked");
}
}

Output:

www.profajaypashankar.com Page 13 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 4
Aim: Create an android app that demonstrates the use of Alert.

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="MainActivity">

<TextView
android:id="@+id/top_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tap_test" />

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/top_message"
android:layout_marginTop="10dp"
android:text="@string/alert_button"
android:onClick="onClickShowAlert"
tools:ignore="OnClick" />

</RelativeLayout>
-------------------------------------------------------------------------------
MainActivity.java
package com.example.helloworld;

import android.app.AlertDialog;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;

www.profajaypashankar.com Page 14 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void onClickShowAlert(View view) {


AlertDialog.Builder myAlertBuilder = new
AlertDialog.Builder(MainActivity.this);
// Set the dialog title.
myAlertBuilder.setTitle(R.string.alert_title);
// Set the dialog message.
myAlertBuilder.setMessage(R.string.alert_message);
// Add the buttons.
myAlertBuilder.setPositiveButton(R.string.ok, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// User clicked OK button.
Toast.makeText(getApplicationContext(),
R.string.pressed_ok,
Toast.LENGTH_SHORT).show();
}
});
myAlertBuilder.setNegativeButton(R.string.cancel, new
DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// User cancelled the dialog.
Toast.makeText(getApplicationContext(),
R.string.pressed_cancel,
Toast.LENGTH_SHORT).show();
}
});

www.profajaypashankar.com Page 15 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

// Create and show the AlertDialog.


myAlertBuilder.show();
}
}

Output :

www.profajaypashankar.com Page 16 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 5

Aim: Create an android app that demonstrates the use of an


Options Menu.

Design:

Example_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_bookmark"
android:title="@string/bookmark"
/>

<item android:id="@+id/menu_save"

www.profajaypashankar.com Page 17 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:title="@string/save"
/>

<item android:id="@+id/menu_search"
android:title="@string/search"
/>

<item android:id="@+id/menu_share"
android:title="@string/share"
/>

<item android:id="@+id/menu_delete"
android:title="@string/delete"
/>

<item android:id="@+id/menu_preferences"
android:title="@string/preferences"
/>
</menu>
-------------------------------------------------------------------------------
MainActivity.java
package com.example.optionsmenu;

import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.view.Menu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

www.profajaypashankar.com Page 18 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

/* Initiating Menu XML file (menu.xml) */


public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.example_menu, menu);
return true;
}

@SuppressLint("NonConstantResourceId")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_bookmark:
Toast.makeText(this, "Bookmark is Selected",
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_save:
Toast.makeText(this, "Save is Selected",
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_search:
Toast.makeText(this, "Search is Selected",
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_share:
Toast.makeText(this, "Share is Selected",
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_delete:
Toast.makeText(this, "Delete is Selected",
Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_preferences:
Toast.makeText(this, "Preferences is Selected",
Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item); }}}

www.profajaypashankar.com Page 19 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 20 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 6
Aim : Create an android app that demonstrate Screen
Navigation.

activity_main.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--the root view must be the DrawerLayout-->
<androidx.drawerlayout.widget.DrawerLayout
tools:ignore="HardcodedText" tools:context=".MainActivity"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/my_drawer_layout"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"><Line
arLayout android:layout_height="match_parent"
android:layout_width="match_parent"><TextView
android:layout_height="wrap_content"
android:layout_width="match_parent" android:textSize="18sp"
android:text="Screen Navigation" android:gravity="center"
android:layout_marginTop="128dp"/></LinearLayout>

<!--this the navigation view which draws and shows the navigation
drawer-->
<!--include the menu created in the menu folder-->

<com.google.android.material.navigation.NavigationView
android:layout_height="match_parent"
android:layout_width="wrap_content"
app:menu="@menu/navigation_menu"
android:layout_gravity="start"/></androidx.drawerlayout.widget.Dra
werLayout>

Navigation_menu.xml

<?xml version="1.0" encoding="UTF-8"?>

www.profajaypashankar.com Page 21 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

-<menu tools:ignore="HardcodedText"
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">

<item android:title="My Account"

android:id="@+id/nav_account" />

<item android:title="Settings"

android:id="@+id/nav_settings"/>

<item android:title="Logout"

android:id="@+id/nav_logout"/>

</menu>

-------------------------------------------------------------------------------
main_activity.java
package com.example.screennavigation;

import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import android.os.Bundle;
import android.view.MenuItem;
import java.util.Objects;

public class MainActivity extends AppCompatActivity {


public DrawerLayout drawerLayout;
public ActionBarDrawerToggle actionBarDrawerToggle;
@Override

www.profajaypashankar.com Page 22 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// drawer layout instance to toggle the menu icon to open


// drawer and back button to close drawer
drawerLayout = findViewById(R.id.my_drawer_layout);
actionBarDrawerToggle = new ActionBarDrawerToggle(this,
drawerLayout, R.string.nav_open, R.string.nav_close);

// pass the Open and Close toggle for the drawer layout listener
// to toggle the button
drawerLayout.addDrawerListener(actionBarDrawerToggle);
actionBarDrawerToggle.syncState();

// to make the Navigation drawer icon always appear on the


action bar

Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpE
nabled(true);
}
// override the onOptionsItemSelected()
// function to implement
// the item click listener callback
// to open and close the navigation
// drawer when the icon is clicked
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {

www.profajaypashankar.com Page 23 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

if (actionBarDrawerToggle.onOptionsItemSelected(item)) {
return true; }
return super.onOptionsItemSelected(item);
}}

Output :

www.profajaypashankar.com Page 24 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 7
Aim: Create an android app to show Notifications.

activity_main.xml

<?xml version="1.0" encoding="utf-


8"?> <android.support.constraint.ConstraintLayout xmlns:android="h
ttp://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.androidnotification.MainActivit
y">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ANDROID NOTIFICATION"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.091"
android:textAppearance="@style/Base.TextAppearance.AppCompat.M
edium"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button"
android:layout_marginBottom="112dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:text="Notify"

www.profajaypashankar.com Page 25 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />

</android.support.constraint.ConstraintLayout>
-------------------------------------------------------------------------------

activity_notification_view.xml

<?xml version="1.0" encoding="utf-8"?>


<android.support.constraint.ConstraintLayout xmlns:android="http://s
chemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.javatpoint.com.androidnotification.Notificati
onView">

<TextView
android:id="@+id/textView2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="your detail of notification..."
android:textAppearance="@style/Base.TextAppearance.AppCom
pat.Medium" />

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"

www.profajaypashankar.com Page 26 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.096"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
app:layout_constraintVertical_bias="0.206"
android:textAppearance="@style/Base.TextAppearance.AppCom
pat.Medium"/>

</android.support.constraint.ConstraintLayout>

-------------------------------------------------------------------------------

www.profajaypashankar.com Page 27 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

MainActivity.java

package example.javatpoint.com.androidnotification;

import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.NotificationCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {


Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addNotification();
}
});
}

private void addNotification() {


NotificationCompat.Builder builder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.messageicon) //set icon for
notification

www.profajaypashankar.com Page 28 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

.setContentTitle("Notifications Example") //set title of


notification
.setContentText("This is a notification message")//this
is notification message
.setAutoCancel(true) // makes auto cancel of notificati
on
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
//set priority of notification

Intent notificationIntent = new Intent(this, NotificationView.class


);
notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

//notification message will get at NotificationView


notificationIntent.putExtra("message", "This is a notification mes
sage");

PendingIntent pendingIntent = PendingIntent.getActivity(this, 0,


notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
builder.setContentIntent(pendingIntent);

// Add as notification
NotificationManager manager = (NotificationManager) getSystem
Service(Context.NOTIFICATION_SERVICE);
manager.notify(0, builder.build());
}
}
-------------------------------------------------------------------------------

NotificationView.java

package example.javatpoint.com.androidnotification;

import android.support.v7.app.AppCompatActivity;

www.profajaypashankar.com Page 29 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;

public class NotificationView extends AppCompatActivity {


TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification_view);
textView = findViewById(R.id.textView);
//getting the notification message
String message=getIntent().getStringExtra("message");
textView.setText(message);
}
}

www.profajaypashankar.com Page 30 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 31 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 8
Aim: Create an android app to save user data in a database.

Design:

Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"

www.profajaypashankar.com Page 32 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

tools:context=".MainActivity">

<!--Edit text to enter course name-->


<EditText
android:id="@+id/idEdtCourseName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter course Name" />

<!--edit text to enter course duration-->


<EditText
android:id="@+id/idEdtCourseDuration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter Course Duration" />

<!--edit text to display course tracks-->


<EditText
android:id="@+id/idEdtCourseTracks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter Course Tracks" />

www.profajaypashankar.com Page 33 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

<!--edit text for course description-->


<EditText
android:id="@+id/idEdtCourseDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:hint="Enter Course Description" />

<!--button for adding new course-->


<Button
android:id="@+id/idBtnAddCourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="Add Course"
android:textAllCaps="false" />

</LinearLayout>
-------------------------------------------------------------------------------
DBHandler.java
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHandler extends SQLiteOpenHelper {

www.profajaypashankar.com Page 34 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

// creating a constant variables for our database.


// below variable is for our database name.
private static final String DB_NAME = "coursedb";

// below int is our database version


private static final int DB_VERSION = 1;

// below variable is for our table name.


private static final String TABLE_NAME = "mycourses";

// below variable is for our id column.


private static final String ID_COL = "id";

// below variable is for our course name column


private static final String NAME_COL = "name";

// below variable id for our course duration column.


private static final String DURATION_COL = "duration";

// below variable for our course description column.


private static final String DESCRIPTION_COL = "description";

// below variable is for our course tracks column.


private static final String TRACKS_COL = "tracks";

www.profajaypashankar.com Page 35 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

// creating a constructor for our database handler.


public DBHandler(Context context) {
super(context, DB_NAME, null, DB_VERSION);
}

// below method is for creating a database by running a sqlite


query
@Override
public void onCreate(SQLiteDatabase db) {
// on below line we are creating
// an sqlite query and we are
// setting our column names
// along with their data types.
String query = "CREATE TABLE " + TABLE_NAME + " ("
+ ID_COL + " INTEGER PRIMARY KEY
AUTOINCREMENT, "
+ NAME_COL + " TEXT,"
+ DURATION_COL + " TEXT,"
+ DESCRIPTION_COL + " TEXT,"
+ TRACKS_COL + " TEXT)";

// at last we are calling a exec sql


// method to execute above sql query
db.execSQL(query);
}

// this method is use to add new course to our sqlite database.

www.profajaypashankar.com Page 36 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

public void addNewCourse(String courseName, String


courseDuration, String courseDescription, String courseTracks) {

// on below line we are creating a variable for


// our sqlite database and calling writable method
// as we are writing data in our database.
SQLiteDatabase db = this.getWritableDatabase();

// on below line we are creating a


// variable for content values.
ContentValues values = new ContentValues();

// on below line we are passing all values


// along with its key and value pair.
values.put(NAME_COL, courseName);
values.put(DURATION_COL, courseDuration);
values.put(DESCRIPTION_COL, courseDescription);
values.put(TRACKS_COL, courseTracks);

// after adding all values we are passing


// content values to our table.
db.insert(TABLE_NAME, null, values);

// at last we are closing our


// database after adding database.
db.close();
}

www.profajaypashankar.com Page 37 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
// this method is called to check if the table exists already.
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
}
-------------------------------------------------------------------------------
MainActivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

// creating variables for our edittext, button and dbhandler


private EditText courseNameEdt, courseTracksEdt,
courseDurationEdt, courseDescriptionEdt;
private Button addCourseBtn;
private DBHandler dbHandler;

@Override

www.profajaypashankar.com Page 38 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// initializing all our variables.


courseNameEdt = findViewById(R.id.idEdtCourseName);
courseTracksEdt = findViewById(R.id.idEdtCourseTracks);
courseDurationEdt =
findViewById(R.id.idEdtCourseDuration);
courseDescriptionEdt =
findViewById(R.id.idEdtCourseDescription);
addCourseBtn = findViewById(R.id.idBtnAddCourse);

// creating a new dbhandler class


// and passing our context to it.
dbHandler = new DBHandler(MainActivity.this);

// below line is to add on click listener for our add course


button.
addCourseBtn.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {

// below line is to get data from all edit text


fields.
String courseName =
courseNameEdt.getText().toString();

www.profajaypashankar.com Page 39 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

String courseTracks =
courseTracksEdt.getText().toString();
String courseDuration =
courseDurationEdt.getText().toString();
String courseDescription =
courseDescriptionEdt.getText().toString();

// validating if the text fields are empty or not.


if (courseName.isEmpty() &&
courseTracks.isEmpty() && courseDuration.isEmpty() &&
courseDescription.isEmpty()) {
Toast.makeText(MainActivity.this, "Please
enter all the data..", Toast.LENGTH_SHORT).show();
return;
}

// on below line we are calling a method to add


new
// course to sqlite data and pass all our values to
it.
dbHandler.addNewCourse(courseName,
courseDuration, courseDescription, courseTracks);

// after adding the data we are displaying a toast


message.
Toast.makeText(MainActivity.this, "Course has
been added.", Toast.LENGTH_SHORT).show();
courseNameEdt.setText("");
courseDurationEdt.setText("");
courseTracksEdt.setText("");

www.profajaypashankar.com Page 40 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

courseDescriptionEdt.setText("");
}
});
}
}

www.profajaypashankar.com Page 41 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 42 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 9:
Aim: Simple Calculator app

Activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#8BC34A"
android:backgroundTint="@android:color/darker_gray"
tools:context=".MainActivity">

<!-- Text View to display our basic heading of "calculator"-->


<TextView
android:layout_width="194dp"
android:layout_height="43dp"
android:layout_marginStart="114dp"
android:layout_marginLeft="114dp"
android:layout_marginTop="58dp"
android:layout_marginEnd="103dp"
android:layout_marginRight="103dp"
android:layout_marginBottom="502dp"
android:scrollbarSize="30dp"
android:text=" Calculator"

www.profajaypashankar.com Page 43 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:textAppearance="@style/TextAppearance.AppCompat.Bo
dy1"
android:textSize="30dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- Edit Text View to input the values -->


<EditText
android:id="@+id/num1"
android:layout_width="364dp"
android:layout_height="28dp"
android:layout_marginStart="72dp"
android:layout_marginTop="70dp"
android:layout_marginEnd="71dp"
android:layout_marginBottom="416dp"
android:background="@android:color/white"
android:ems="10"
android:hint="Number1(0)"
android:inputType="number"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- Edit Text View to input 2nd value-->

www.profajaypashankar.com Page 44 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

<EditText
android:id="@+id/num2"
android:layout_width="363dp"
android:layout_height="30dp"
android:layout_marginStart="72dp"
android:layout_marginTop="112dp"
android:layout_marginEnd="71dp"
android:layout_marginBottom="374dp"
android:background="@android:color/white"
android:ems="10"
android:hint="number2(0)"
android:inputType="number"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- Text View to display result -->


<TextView
android:id="@+id/result"
android:layout_width="356dp"
android:layout_height="71dp"
android:layout_marginStart="41dp"
android:layout_marginTop="151dp"
android:layout_marginEnd="48dp"
android:layout_marginBottom="287dp"
android:background="@android:color/white"
android:text="result"

www.profajaypashankar.com Page 45 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:textColorLink="#673AB7"
android:textSize="25sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform 'sum' operation -->


<Button
android:id="@+id/sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="292dp"
android:layout_marginEnd="307dp"
android:layout_marginBottom="263dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doSum"
android:text="+"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform subtraction operation. -->


<Button
android:id="@+id/sub"
android:layout_width="wrap_content"

www.profajaypashankar.com Page 46 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:layout_height="wrap_content"
android:layout_marginStart="210dp"
android:layout_marginTop="292dp"
android:layout_marginEnd="113dp"
android:layout_marginBottom="263dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doSub"
android:text="-"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform division. -->


<Button
android:id="@+id/div"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="307dp"
android:layout_marginTop="292dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="263dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doDiv"
android:text="/"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"

www.profajaypashankar.com Page 47 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform multiplication. -->


<Button
android:id="@+id/mul"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="356dp"
android:layout_marginEnd="307dp"
android:layout_marginBottom="199dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doMul"
android:text="x"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform a modulus function. -->


<Button
android:id="@+id/button"
android:layout_width="92dp"
android:layout_height="48dp"
android:layout_marginStart="113dp"
android:layout_marginTop="356dp"
android:layout_marginEnd="206dp"

www.profajaypashankar.com Page 48 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:layout_marginBottom="199dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doMod"
android:text="%(mod)"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<!-- A button to perform a power function. -->


<Button
android:id="@+id/pow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="113dp"
android:layout_marginTop="292dp"
android:layout_marginEnd="210dp"
android:layout_marginBottom="263dp"
android:backgroundTint="@android:color/holo_red_light"
android:onClick="doPow"
android:text="n1^n2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

www.profajaypashankar.com Page 49 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

MainActivity.java
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

EditText e1, e2;


TextView t1;
int num1, num2;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

// a public method to get the input numbers


public boolean getNumbers() {

// defining the edit text 1 to e1


e1 = (EditText) findViewById(R.id.num1);

www.profajaypashankar.com Page 50 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

// defining the edit text 2 to e2


e2 = (EditText) findViewById(R.id.num2);

// defining the text view to t1


t1 = (TextView) findViewById(R.id.result);

// taking input from text box 1


String s1 = e1.getText().toString();

// taking input from text box 2


String s2 = e2.getText().toString();

// condition to check if box is not empty


if ((s1.equals(null) && s2.equals(null))
|| (s1.equals("") && s2.equals(""))) {

String result = "Please enter a value";


t1.setText(result);

return false;
} else {
// converting string to int.
num1 = Integer.parseInt(s1);

// converting string to int.


num2 = Integer.parseInt(s2);

www.profajaypashankar.com Page 51 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

return true;
}

// a public method to perform addition


public void doSum(View v) {

// get the input numbers


if (getNumbers()) {
int sum = num1 + num2;
t1.setText(Integer.toString(sum));
}
}

// a public method to perform power function


public void doPow(View v) {

// get the input numbers


if (getNumbers()) {
double sum = Math.pow(num1, num2);
t1.setText(Double.toString(sum));
}
}

// a public method to perform subtraction

www.profajaypashankar.com Page 52 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

public void doSub(View v) {

// get the input numbers


if (getNumbers()) {
int sum = num1 - num2;
t1.setText(Integer.toString(sum));
}
}

// a public method to perform multiplication


public void doMul(View v) {

// get the input numbers


if (getNumbers()) {
int sum = num1 * num2;
t1.setText(Integer.toString(sum));
}
}

// a public method to perform Division


public void doDiv(View v) {

// get the input numbers


if (getNumbers()) {

// displaying the text in text view assigned as t1

www.profajaypashankar.com Page 53 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

double sum = num1 / (num2 * 1.0);


t1.setText(Double.toString(sum));
}
}

// a public method to perform modulus function


public void doMod(View v) {

// get the input numbers


if (getNumbers()) {
double sum = num1 % num2;
t1.setText(Double.toString(sum));
}
}
}

www.profajaypashankar.com Page 54 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 55 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Practical – 10
Aim: Create an android app to connect to the internet and use
BroadcastReceiver.

customDialog.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:background="#024BFF"
android:gravity="center"
android:layout_height="match_parent">
<ImageView
android:layout_width="120dp"
android:layout_height="120dp"
android:src="@drawable/no_internet"
android:layout_gravity="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ooops!"
android:gravity="center"
android:textColor="#FFF"
android:textSize="40sp"/>
<TextView
android:id="@+id/nettext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="No Internet Connection found"
android:textColor="#FFF"
android:textSize="15sp"
android:layout_marginBottom="10dp"
android:gravity="center"/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ON YOUR DATA AND HIT RESTART"
android:textColor="#FFF"
android:textSize="15sp"

www.profajaypashankar.com Page 56 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

android:layout_marginBottom="10dp"
android:gravity="center"/>
<Button
android:id="@+id/restartapp"
android:layout_width="300dp"
android:layout_height="50dp"
android:text="Restart"
android:textSize="20sp"
android:background="@android:color/holo_green_light"/>
</LinearLayout>
-------------------------------------------------------------------------------

NetworkUtil.java

package com.example.app2;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
class NetworkUtil {

public static String getConnectivityStatusString(Context context) {


String status = null;
ConnectivityManager cm = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null) {
if (activeNetwork.getType() ==
ConnectivityManager.TYPE_WIFI) {
status = "Wifi enabled";
return status;
} else if (activeNetwork.getType() ==
ConnectivityManager.TYPE_MOBILE) {
status = "Mobile data enabled";
return status;
}
} else {
status = "No internet is available";
return status;
}
return status;

www.profajaypashankar.com Page 57 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

}
}
-------------------------------------------------------------------------------
MyReceiver.java

import android.app.Activity;
import android.app.Dialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MyReceiver extends BroadcastReceiver {
Dialog dialog;
TextView nettext;

@Override
public void onReceive(final Context context, final Intent intent) {
String status =
NetworkUtil.getConnectivityStatusString(context);
dialog = new
Dialog(context,android.R.style.Theme_NoTitleBar_Fullscreen);
dialog.setContentView(R.layout.customdialog);
Button restartapp =
(Button)dialog.findViewById(R.id.restartapp);
nettext =(TextView)dialog.findViewById(R.id.nettext);

restartapp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((Activity) context).finish();
Log.d("clickedbutton","yes");
Intent i = new Intent(context, MainActivity.class);
context.startActivity(i);
}
});
Log.d("network",status);
if(status.isEmpty()||status.equals("No internet is

www.profajaypashankar.com Page 58 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

available")||status.equals("No Internet Connection")) {


status="No Internet Connection";
dialog.show();
}
Toast.makeText(context, status, Toast.LENGTH_LONG).show();
}
}
-------------------------------------------------------------------------------
MainActivity.java

import android.content.BroadcastReceiver;
import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity{
private BroadcastReceiver MyReceiver = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyReceiver = new MyReceiver();
broadcastIntent();
}
public void broadcastIntent() {
registerReceiver(MyReceiver, new
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(MyReceiver);
}
}

www.profajaypashankar.com Page 59 of 60
SYCS ANDROID DEVELOPER FUNDAMENTALS PRACTICAL MANUAL

Output:

www.profajaypashankar.com Page 60 of 60

You might also like