MAD Model Merged
MAD Model Merged
Scheme – I
Programme Name: Computer/Information Technology Engineering
Programme code:CO/IF
Semester: VI Sem
22617
Course Title: Mobile Application Development
Marks : 70 Time: 3 Hrs.
Instructions:
(1) All questions are compulsory.
(2) Illustrate your answers with neat sketches wherever necessary.
(3) Figures to the right indicate full marks.
(4) Assume suitable data if necessary.
(5) Preferably, write the answers in sequential order.
1
Q.4) Attempt any THREE of the following. (12 Marks)
a) Observe the following GUI and write an XML file using relative layout to create the
same.
2
Q.6) Attempt any TWO of the following. (12 Marks)
a) Develop an application to store student details like roll no, name, branch,
marks,percentage and retrieve student information using roll no. in SQLite databases.
b) Write a program to locate user’s current location. (Write ONLY .java and manifest
file)
c) Develop a simple calculator using table layout.
3
Sample Test Paper I
4
Sample Test Paper II
MSBTE Outcome based Curriculum
Scheme – I
5
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
SUMMER – 2022 EXAMINATION
Subject Name: Mobile Application Development Model Answer Subject Code: 22617
Important Instructions to examiners: XXXXX
1) The answers should be examined by key words and not as word-to-word as given in the model answer scheme.
2) The model answer and the answer written by candidate may vary but the examiner may try to assess the
understanding level of the candidate.
3) The language errors such as grammatical, spelling errors should not be given more Importance (Not applicable for
subject English and Communication Skills.
4) While assessing figures, examiner may give credit for principal components indicated in the figure. The figures
drawn by candidate and model answer may vary. The examiner may give credit for any equivalent figure drawn.
5) Credits may be given step wise for numerical problems. In some cases, the assumed constant values may vary and
there may be some difference in the candidate’s answers and model answer.
6) In case of some questions credit may be given by judgement on part of examiner of relevant answer based on
candidate’s understanding.
7) For programming language papers, credit may be given to any other program based on equivalent concept.
8) As per the policy decision of Maharashtra State Government, teaching in English/Marathi and Bilingual (English +
Marathi) medium is introduced at first year of AICTE diploma Programme from academic year 2021-2022. Hence if
the students in first year (first and second semesters) write answers in Marathi or bilingual language (English
+Marathi), the Examiner shall consider the same and assess the answer based on matching of concepts with
model answer.
Page No: 1 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Ans Dalvik Virtual Machine is a register-based machine that compiles byte code to get dex (Correct
code and that ensures that a device can run multiple instances efficiently. definition
2 M)
c) List any four folders from directory structure of Android project and 2M
elaborate in one line.
Ans Folders from directory structure: (List of
1)app: The App folder contains three subfolders (manifests, java and res) that make up names of any
our application. four folders :
They are divided so that it should be fairly easy to determine which resources go in which 1 M and
folder. elaboration
2)Manifest: This is where we would put our manifest files. Most Android apps have in one line
single manifest file. But an app may have several manifest files due to application
:1 M)
versioning, or for supporting specific hardware.
3)Java: This is the folder in our project where we will be storing all of the source code
files written in Java programming language.
4)res: It contains folders that help us to separate and sort the resources of our application.
Resources
basically mean all the needed files except the source code.
5)drawable: The drawable folder contains graphics that can be drawn to the screen.
6)layout: The layout folder contains XML files used for your layouts. These file are used
to set up the layout for your Activity and is used for basic alignment of your layouts,
components, widgets, and similar
resources that are used for the UI of your application.
7)mipmap : The mipmap folder contains the launcher icon files for the app. A launcher
icon is a graphic that
represents your app to users.
8)values: The values folder contains XML files that contain simple values, such as
strings, integers, and colors.
The values folder is used to keep track of the values we will be using in our application.
Page No: 2 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Ans (2 M for
correct
diagram)
Ans a) Built in Zoom control in Google map can be displayed with : Correct
Syntax : 2
UiSettings.setZoomControlsEnabled(true); M)
OR
b) In case, while display Google map by intent, default zoom level can be given in
the form of data as
geo:latitude,longitude?z=zoom
where lat and lag are for location and zoom level is to set initial zoom level which
Page No: 3 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
ranges from 0 to 21.
OR
3) AudioManager
Page No: 4 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Ans Diagram: 2M
Explanation:
2M
1. Applications:
• The top layer of android architecture is Applications. The native and third party
applications like Contacts, Email, Music, Gallery, Clock, Games, etc. whatever we will
build those will be installed on this layer only.
• The application layer runs within the Android run time using the classes and services
made available from the application framework.
2. Application Framework:
• The Application Framework provides the classes used to create an Android application.
It also provides a generic abstraction for hardware access and manages the user interface
Page No: 5 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
and application resources.
• It basically provides the services through which we can create the particular class and
make that class helpful for the Applications creation.
• The application framework includes services like telephony service, location services,
notification. manager, NFC service, view system, etc. which we can use for application
development as per our requirements.
3. Android Runtime:
• The Android run time is the engine that powers our applications along with the libraries
and it forms the basis for the application framework.
(i) Dalvik Virtual Machine (DVM) is a register-based virtual machine like Java Virtual
Machine (JVM).
It is specially designed and optimized for android to ensure that a device can run multiple
instances efficiently. It relies on the Linux kernel for threading and low-level memory
management.
(ii) The core libraries in android runtime will enable us to implement an android
applications using standard JAVA programming language.
4. Platform Libraries:
• The Platform Libraries includes various C/C++ core libraries and Java based libraries
such as SSL, libc, Graphics, SQLite, Webkit, Media, Surface Manger, OpenGL etc. to
provide a support for android development.
• Following are the summary details of some core android libraries available for android
development.
• Media library for playing and recording an audio and video formats
(iii) SQLite is for database support and FreeType for font support
(iv) Web-Kit for web browser support and SSL for Internet security.
5. Linux Kernel:
Page No: 6 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• Linux Kernel is a bottom layer and heart of the android architecture. It is heart of
Android
architecture that exists at the root of android architecture and contains all the low-level
device
Bluetooth drivers, audio drivers, memory drivers, etc. which are mainly required for the
android device during the runtime.
• The Linux Kernel will provides an abstraction layer between the device hardware and
the remainder of the stack. It is responsible for memory management, power
management, device management, resource access, etc.
Ans Steps to deploy and Android Application on Google Play Store: (List 1 M
and
Step 1: Make a Developer Account Elaboration 3
Step 2: Plan to Sell? Link Your Merchant Account M)
Step 3: Create an App
Step 4: Prepare Store Listing
Page No: 7 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Step 5: Upload APK to an App Release
Step 6: Provide an Appropriate Content Rating
Step 7: Set Up Pricing & Distribution
Step 8: Rollout Release to Publish Your App
MainActivity.java
package in.edu.vpt.insertusingasync;
import android.app.ProgressDialog;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createData = (Button)findViewById(R.id.button);
createData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sqLiteDatabaseObj = openOrCreateDatabase("AndroidJSonDataBase",
Context.MODE_PRIVATE, null);
} });
}
b) State syntax to create Text View and Image button with any two attributes of each. 4M
ImageButton:
Syntax :
<ImageButton
android:id="@+id/imageButton"
android:layout_width="<width value>"
android:layout_height="<height value>"
app:srcCompat="<image source from drawable folder "/>
Attributes/Properties of ImageButton:
Ans ● A service is an application component which runs without direst interaction with (Explanation
the user in the background. 2 M,
● Services are used for repetitive and potentially long running operations, i.e., Diagram
Internet downloads, checking for new data, data processing, updating content 2M)
providers and the like.
● Service can either be started or bound we just need to call either startService() or
bindService() from any of our android components. Based on how our service
was started it will either be “started” or “bound”
Page No: 12 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Service Lifecycle
1. Started
a. A service is started when an application component, such as an activity,
starts it by calling startService().
b. Now the service can run in the background indefinitely, even if the
component that started it is destroyed.
2. Bound
a. A service is bound when an application component binds to it by calling
bindService().
b. A bound service offers a client-server interface that allows components to
interact with the service, send requests, get results, and even do so across
processes with InterProcess Communication (IPC).
c. Like any other components service also has callback methods. These will
be invoked while the service is running to inform the application of its
state. Implementing these in our custom service would help you in
performing the right operation in the right state. •
d. There is always only a single instance of service running in the app. If you
are calling startService() for a single service multiple times in our
Page No: 13 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
application it just invokes the onStartCommand() on that service. Neither
is the service restarted multiple times nor are its multiple instances created
1. onCreate():
This is the first callback which will be invoked when any component starts the
service. If the same service is called again while it is still running this method
wont be invoked. Ideally one time setup and intializing should be done in this
callback.
2. onStartCommand() /startSetvice()
This callback is invoked when service is started by any component by calling
startService(). It basically indicates that the service has started and can now run
indefinetly.
3. onBind()
To provide binding for a service, you must implement the onBind() callback
method. This method returns an IBinder object that defines the programming
interface that clients can use to interact with the service.
4. onUnbind()
This is invoked when all the clients are disconnected from the service.
5. onRebind()
This is invoked when new clients are connected to the service. It is called after
onRebind
6. onDestroy()
This is a final clean up call from the system. This is invoked just before the
service is being destroyed.
d) State and elaborate the syntax of required class and methods for 4M
Geocoding.
Ans Geocoder: (2 M for
explanation
A class for handling geocoding and reverse geocoding.
and syntax of
Geocoding is the process of transforming a street address or other description of a class, 2 M
location into a (latitude, longitude) coordinate. for
explanation
Reverse geocoding is the process of transforming a (latitude, longitude) coordinate into a and syntax of
(partial) address. The amount of detail in a reverse geocoded location description may any two
vary, for example one might contain the full street address of the closest building, while methods)
another might contain only a city name and postal code.
The Geocoder class requires a backend service that is not included in the core android
framework.
The Geocoder query methods will return an empty list if there no backend service in the
platform. Use the isPresent() method to determine whether a Geocoder implementation
exists.
Page No: 14 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Syntax
Geocoder (Context context)
Syntax
This method returns an array of Addresses that attempt to describe the area immediately
surrounding the given latitude and longitude. The returned addresses should be localized
for the locale provided to this class's constructor.
b. getFromLocationName
Syntax :
Returns an array of Addresses that attempt to describe the named location, which may be
a place name such as "Dalvik, Iceland", an address such as "1600 Amphitheatre Parkway,
Mountain View, CA", an airport code such as "SFO", and so forth. The returned
addresses should be localized for the locale provided to this class's constructor.
c. isPresent
Syntax
Page No: 15 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Returns true if there is a geocoder implementation present that may return results. If true,
there is still no guarantee that any individual geocoding attempt will succeed.
a) Explain with example, code to create GUI using absolute layout (Assume 4M
suitable data).
Ans ● AbsoluteLayout is based on the simple idea of placing each control at an absolute (Explanation
position. We specify the exact x and y coordinates on the screen for each control. 2 M,
This is not recommended for most UI development (in fact AbsoluteLayout is Example 2
currently deprecated) since absolutely positioning every element on the screen makes M)
an inflexible UI that is much more difficult to maintain.
Absolute Layout
● An Absolute Layout lets you specify exact locations (x/y coordinates) of its children.
Absolute layouts are less flexible and harder to maintain than other types of layouts
without absolute positioning. AbsoluteLayout is based on the simple idea of placing
each control at an absolute position.
● We specify for the exact x and y corodinates on the screen for every control. So this
recommended for most UI development (in fact Absolute Layout is currentaly
deprecated)since absolute positioning of every element on the screen makes an
inflexible UI that is much more difficult to maintain.
● Consider what happens if a control needs to be added to the user interface UI, we
would have to change the position of every single element that is shifted by the new
control. This allows child views to be positioned at specified X and Y coordinates
within the containing layout view.
Example
(Note :Any other relevant example using absoluteLayout can be considered, No java
code is expected)
Page No: 16 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
activity_main.xml
<AbsoluteLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_x="110px"
android:layout_y="110px"
android:text="User Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:layout_x="250px"
android:layout_y="80px"
android:width="100px"
android:layout_width="200dp"
android:layout_height="wrap_content" />
<TextView
android:layout_x="110px"
android:layout_y="200px"
android:text="Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:layout_x="250px"
android:layout_y="150px"
android:width="100px"
android:layout_width="200dp"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Log In"
android:layout_x="300px"
android:layout_y="300px"/>
</AbsoluteLayout>
<Button
android:id="@+id/btnDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="96dp"
android:layout_marginBottom="312dp"
android:text="Set Date"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="DuplicateClickableBoundsCheck" />
<DatePicker
android:id="@+id/dtpcker"
android:layout_width="314dp"
android:layout_height="293dp"
android:layout_marginBottom="368dp"
android:datePickerMode="spinner"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.36"
app:layout_constraintStart_toStartOf="parent" />
<TimePicker
android:id="@+id/timepcker"
android:layout_width="184dp"
android:layout_height="195dp"
android:layout_marginEnd="132dp"
android:layout_marginBottom="108dp"
android:timePickerMode="spinner"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/tvTime"
android:layout_width="130dp"
Page No: 18 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="56dp"
android:layout_marginEnd="232dp"
android:layout_marginBottom="40dp"
android:textSize="20dp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/btnTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="104dp"
android:layout_marginBottom="48dp"
android:text="Set Time"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.datepickereg;
import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;
tvTime.setText(timepcker.getCurrentHour()+":"+timepcker.getCurrentMinute());
}
});
}
}
c) Describe multimedia framework of Android with diagram. 4M
Ans ● The android multimedia system includes multimedia applications, multimedia (Explanation
frameworks, OpenCore engine and hardware abstract for audio/video input/output 2M,
devices. And the goal of the android multimedia framework is to provide a
reliable interface for java services. The multimedia framework consists of several Diagram 2
core dynamic libraries such as libmediajni, libmedia, libmediaplayservice and so M)
on.
● Java classes call the Native C library Libmedia through Java JNI(Java Native
Interface). Libmedia library communications with Media Server guard process
through Android’s Binder IPc (inter process communication) mechanism.
● Media Server process creates the corresponding multimedia service according to
the Java multimedia applications.
● The whole communication between Libmedia and Media Server forms a
Client/Server model
Page No: 20 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
● Typical video/audio data stream works in Android as follows. Particularly, Java
applications first set the URI of the media (from file or network) to PVPlayer
through Java framework, JNI and Native C. In this process, there are no data
stream flows.
● Then PVPlayer processes the media data stream with the steps: demux the media
data to separate video/audio data stream, decode video/audio data, sync
video.audio time, send the decoded data out.
● The below is the description of media codec/format, container and network
protocol supported by the Android platform.
1. Container: The audio file format is a file for storing digital audio data on
a system. This data can be manipulated to reduce the size or change the
quality of the audio. It is a kind of container to store audio information.
2. Audio Format: Any format or codec can be used including the ones
provided by Android or those which are specific devices. However it is
recommended to use the specified file formats as per devices.
3. Network Protocol: Protocols such as RTSP, HTTP,HTTPS are supported
in audio and video playback.
Ans ● Google Play Developer Console is the platform that Google provides for Google (Any 4
Play and Android developers to publish their apps. relevant
● The Google Play Developer console allows app developers and marketers to features 1M
better understand how their apps are performing in terms of growth, technical each )
performance such as crashes or display issues, and financials.
● The console offers acquisition reports and detailed analysis which can help app
devs find out how well an app is really performing.
● The platform is important as it provides developers with access to first party data
(trustworthy information collected about an app’s audience that comes straight
from Google Play) that highlights the real performance of an app.
● It shows the number of impressions an app listing receives and the number of
Installs an app receives from different sources over time.
Page No: 21 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<uses-permission android:name="android.permission.SEND_SMS"/>
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"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="81dp"
android:layout_height="41dp"
android:layout_marginEnd="268dp"
android:layout_marginBottom="576dp"
android:text="To :"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:id="@+id/textView2"
android:layout_width="70dp"
android:layout_height="43dp"
android:layout_marginEnd="276dp"
android:layout_marginBottom="512dp"
android:text="Sms Text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/etPhno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp"
android:layout_marginBottom="572dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/etmsg"
android:layout_width="193dp"
android:layout_height="51dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="504dp"
Page No: 22 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btnSms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="156dp"
android:layout_marginBottom="400dp"
android:text="SEND SMS"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.testreceivesms;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
a) Write a program to convert temperature from celcius to farenhite and vice versa 6M
using Toggle button. (Design UI as per your choice. Write XML and java file)
(Note: Consider the appropriate XML file. All attributes are not required.
In java file all imports are not expected. Different relevant logic/code can be
considered.)
Ans activity_main.xml XML file:
<?xml version="1.0" encoding="utf-8"?> 2M
<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"
Java Code:
android:layout_width="match_parent"
4M
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edittext"
android:hint="Enter the temp"/>
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/edittext"
android:layout_marginTop="35dp"
android:textOff="F to C"
android:textOn="C to F" />
Page No: 24 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/togglebutton"
android:layout_marginTop="56dp" />
</RelativeLayout>
MainActivity.java
package com.example.p1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.widget.ToggleButton;
Toast.makeText(MainActivity.this,r+"°C",Toast.LENGTH_SHORT).show();
}
Page No: 25 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
});
}
}
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CAMERA"
android:id="@+id/text"
android:textSize="20dp"
android:gravity="center"/>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:layout_marginTop="81dp"
android:src="@drawable/rose"/>
<Button
android:id="@+id/photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/image"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:text="TAKE PHOTO" />
</RelativeLayout>
Page No: 26 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
MainActivity.java
package com.example.ifcdiv;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
b1=findViewById(R.id.photo);
imageView=findViewById(R.id.image);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent
data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==CAMERA_REQUEST)
{
Bitmap image= (Bitmap) data.getExtras().get("data");
imageView.setImageBitmap(image);
}
}
}
Page No: 27 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
c) Develop and application to send and receive SMS (Design minimal UI as per 6M
your choice. Write XML, java and manifest file)
(Note: Consider appropriate XML file. All attributes are not required. In java
file all imports are not expected. Different relevant login/code can be considered.
Statements showing permissions can be written under AndroidManifest.xml)
Ans Permissions and <receiver> tag required in AndroidManifest.xml XML file:
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 1M
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/> Manifest
<uses-permission android:name="android.permission.WRITE_SMS"/> File:1M
Java Code:
<receiver
4M
android:name=".SmsReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
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"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="81dp"
android:layout_height="41dp"
android:layout_marginEnd="268dp"
android:layout_marginBottom="576dp"
android:text="To :"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:id="@+id/textView2"
android:layout_width="70dp"
android:layout_height="43dp"
android:layout_marginEnd="276dp"
android:layout_marginBottom="512dp"
android:text="Sms Text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
Page No: 28 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<EditText
android:id="@+id/etPhno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp"
android:layout_marginBottom="572dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/etmsg"
android:layout_width="193dp"
android:layout_height="51dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="504dp"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="SpeakableTextPresentCheck" />
<Button
android:id="@+id/btnSms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="156dp"
android:layout_marginBottom="400dp"
android:text="SEND SMS"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.testreceivesms;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
Page No: 29 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
public class MainActivity extends AppCompatActivity {
SmsReceiver sms= new SmsReceiver();
EditText et1,et2;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=findViewById(R.id.etPhno);
et2=findViewById(R.id.etmsg);
b1=findViewById(R.id.btnSms);
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEN
D_SMS)!=
PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity.this,new
String[]{Manifest.permission.SEND_SMS},100);
}
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String phno= et1.getText().toString();
String msg=et2.getText().toString();
SmsManager smsManager= SmsManager.getDefault();
smsManager.sendTextMessage(phno,null,msg,null,null);
Toast.makeText(MainActivity.this,"Sms sent successfully",
Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
Toast.makeText(MainActivity.this,"Sms failed to send... try again",
Toast.LENGTH_LONG).show();
}
}
});
}
@Override
protected void onStart() {
super.onStart();
IntentFilter filter=new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(sms,filter);
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(sms);
Page No: 30 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
}
SmsReceiver.java
package com.example.testreceivesms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
if (bundle != null) {
// Retrieve the SMS Messages received
Object[] sms = (Object[]) bundle.get("pdus");
a) Write a program to implement Android Activity Life Cycle. Use toast messages 6M
to display message through life cycle.
(Note: No XML code is required. In java file all imports are not expected.)
Ans package com.example.p1; Use of any 6
import androidx.appcompat.app.AppCompatActivity; methods of
import android.os.Bundle; Activity life
import android.widget.Toast; cycle : 1 M
public class MainActivity extends AppCompatActivity { each
@Override
Page No: 31 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(getApplicationContext(),"Activity
created",Toast.LENGTH_LONG).show();
}
@Override
protected void onStart() {
super.onStart();
Toast.makeText(getApplicationContext(),"Activity
Started",Toast.LENGTH_LONG).show();
}
@Override
protected void onStop() {
super.onStop();
Toast.makeText(getApplicationContext(),"Activity
Stop",Toast.LENGTH_LONG).show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(getApplicationContext(),"Activity
Destroy",Toast.LENGTH_LONG).show();
}
@Override
protected void onPause() {
super.onPause();
Toast.makeText(getApplicationContext(),"Activity
Pause",Toast.LENGTH_LONG).show();
}
@Override
protected void onRestart() {
super.onResume();
Toast.makeText(getApplicationContext(),"Activity
Restart",Toast.LENGTH_LONG).show();
@Override
protected void onResume() {
super.onResume();
Toast.makeText(getApplicationContext(),"Activity
Resume",Toast.LENGTH_LONG).show();
}
}
b) Develop an application to display Google map with user's current location. 6M
(Note : Consider the appropriate XML file. All attributes are not required.
Page No: 32 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
In java file all imports are not expected. Different relevant logic/code can be
considered.)
Ans act ivity_main.xml XML file:
<?xml version="1.0" encoding="utf-8"?> 1M
<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" Java Code:
android:layout_width="match_parent" 5M
android:layout_height="match_parent"
tools:context=".MainActivity">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/google_map"
android:name="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>
MainActivity.Java
package com.example.location;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.FragmentActivity;
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(this);
fetchLastLocation();
}
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new
String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
return;
}
Task<Location> task = fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location!=null)
{
currentlocation=location;
Toast.makeText(getApplicationContext(),currentlocation.getLatitude()+""+current
location.getLongitude(), Toast.LENGTH_SHORT).show();
SupportMapFragment supportMapFragment =
(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.go
ogle_map);
supportMapFragment.getMapAsync(MainActivity.this);
}
}
});
}
Page No: 34 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
LatLng latLng=new
LatLng(currentlocation.getLatitude(),currentlocation.getLongitude());
MarkerOptions markerOptions=new MarkerOptions().position(latLng)
.title("I am Here");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,5));
googleMap.addMarker(markerOptions);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[]
permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
fetchLastLocation();
}
break;
}
}
}
c) Design UI using table layout to display buttons with 0 9 numbers on it. Even display 6M
submit and clear button. When user clicks on particular buttons and later when
clicks on submit button, it should display the numbers clicked.
(Note: Consider the appropriate XML file. All attributes are not required.
In java file all imports are not expected. Different relevant logic/code can be
considered.)
Ans activity_main.xml XML file:
<?xml version="1.0" encoding="utf-8"?> 3M
<TableLayout 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"
Java Code:
android:layout_width="match_parent"
3M
android:layout_height="match_parent"
android:stretchColumns="*"
tools:context=".MainActivity">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
Page No: 35 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/button0"
android:text="0"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/button1"
android:text="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="2" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/button3"
android:text="3"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/button4"
android:text="4"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:id="@+id/button5"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="6"
android:id="@+id/button6"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="7"
Page No: 36 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/button7"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:id="@+id/button8"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="9"
android:id="@+id/button9"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Submit"
android:id="@+id/submit"/>
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="Clear"
android:id="@+id/clear"/>
</TableRow>
</TableLayout>
(Java File)
package com.example.p1;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
a=button0.getText().toString();
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button1.getText().toString();
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button2.getText().toString();
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button3.getText().toString();
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button4.getText().toString();
}
});
button5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button5.getText().toString();
Page No: 38 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
});
button6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button6.getText().toString();
}
});
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button7.getText().toString();
}
});
button8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button8.getText().toString();
}
});
button9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
a=button9.getText().toString();
}
});
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(),a,Toast.LENGTH_LONG).show(); }
});
}
}
Page No: 39 | 39
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
WINTER – 2022 EXAMINATION
Subject Name Mobile Application Development Model Answer Subject Code: 22617
Important Instructions to examiners: XXXXX
1) The answers should be examined by key words and not as word-to-word as given in the model answer
scheme.
2) The model answer and the answer written by candidate may vary but the examiner may try to assess the
understanding level of the candidate.
3) The language errors such as grammatical, spelling errors should not be given more Importance (Not
applicable for subject English and Communication Skills.
4) While assessing figures, examiner may give credit for principal components indicated in the figure. The
figures drawn by candidate and model answer may vary. The examiner may give credit for any equivalent
figure drawn.
5) Credits may be given step wise for numerical problems. In some cases, the assumed constant values may
vary and there may be some difference in the candidate’s answers and model answer.
6) In case of some questions credit may be given by judgement on part of examiner of relevant answer based
on candidate’s understanding.
7) For programming language papers, credit may be given to any other program based on equivalent concept.
8) As per the policy decision of Maharashtra State Government, teaching in English/Marathi and Bilingual
(English + Marathi) medium is introduced at first year of AICTE diploma Programme from academic year
2021-2022. Hence if the students in first year (first and second semesters) write answers in Marathi or
bilingual language (English +Marathi), the Examiner shall consider the same and assess the answer based
on matching of concepts with model answer.
Q. Sub Note: As Android programs contain many of the auto generated code statements from IDE, Marking
No. Q. while assessing such answers correct logical steps taken to obtain the required output can be Scheme
N. considered.
Answer
Ans The OHA is the group that is in charge of the Android smartphones operating system. It was (Define : 1
created by Google. The Open Handset Alliance (OHA) is consortium of multiple companies M, Stating
like Samsung, Sony, Intel and many more to provide services and deploy handsets using goal 1 M)
android platform.
The Open Handset Alliance (OHA) is an association whose goal is to develop open standards
for mobile devices, promote innovation in mobile phones and provide a better experience for
consumers at a lower cost.
Ans An Android Virtual Device (AVD) is a configuration that defines the characteristics of an (Define : 2
Android phone, tablet, Wear OS, Android TV, or Automotive OS device that you want to M ,any valid
simulate in the Android Emulator. The AVD Manager is an interface you can launch from definition
Android Studio that helps you create and manage AVDs. should be
considered)
Page No: 1 | 41
for more study material visit www.diplomachakhazana.in
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
c) State how the APK files are built? 2M
Ans The javac compiler compiles the java source file into the class file. (For each
The dx tool takes all the class files of your application and generates a single .dex file which step 1/2 M)
is a platform specific tool.
Then Android Assets Packaging Tool (aapt) handles the packaging process and finally
creates an executable file with extension .apk.
An APK file contains all of a program's code (such as .dex files), resources, assets,
certificates, and manifest file.
OR
Components of UI
Menu Bar
Toolbar
Navigation Bar
Editor Tabs
Editor
Project Explorer
Status Bar
Tool Buttons
e) State the uses of Intent in Android. 2M
Ans An Intent is a messaging object you can use to request an action from another app component. (1 M for
Intents are used for facilitating communication between components like Activities, Services each use, 2
and Broadcast Receivers. uses
expected)
Ans Content Providers are used to share data between two applications. This can be implemented (1 M for
in two ways: each
1. When you want to implement the existing content provider in another application. significance
2. When you want to create a new content provider that can share its data with other ,
Applications
Ans User Interface: The user interface of the Android operating system is straight forward, and (1 M for
these features make it very user friendly. each
feature, 4
Multiple Language Support: Android supports multiple languages in its operating system and features
one can change the language very easily based on one’s requirement, the International expected)
languages supported are English, Germany, Chinese, Dutch, French, German, Japanese,
Korean, Russian, and many more also some native language of India is also Supported Like
Hindi, Marathi, Gujarati, Punjabi and many more.
Multi-tasking: Android provides support to run apps and services in the background with ease
which allows the users to use multiple apps at the same time.
Connectivity: Android has extensive support to the connectivity and it supports connectivity
such as WiFi, Bluetooth, Hotspot, CDMA, GSM, NFC, VOLTE, UBB, VPN, 3G network
band, and 4G Network Band.
Extensive Application Support: Android have Play store which is used as the major tool to
download and update applications on the operating system, however, one can download the
installer(often called as APK file) and install it manually, but it is not much recommended as
third party applications could be prone to some security breach in the smartphones.
Ans Android SDK is a collection of libraries and Software Development tools that are essential for (1 M for
Developing Android Applications. Whenever Google releases a new version or update of each
Page No: 3 | 41
www.diplomachakhazana.in
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Android Software, a corresponding SDK also releases with it. In the updated or new version of feature, any
SDK, some more features are included which are not present in the previous version. Android 4 features
SDK consists of some tools which are very essential for the development of Android expected)
Application. These tools provide a smooth flow of the development process from developing
and debugging. Android SDK is compatible with all operating systems such as Windows,
Linux, macOS, etc.
1. Android Tool: This tool helps in managing the Android Virtual Device projects as well as
the installed components of the software development kit.
2. Emulator Tool: It helps us in testing the applications without the need of using the
application on an actual device.
3. Dalvik Debug Monitor Server(DDMS): DDMS is very useful for debugging the Android
Application.
4. Android Debug Bridge (ADB): It is a very versatile command-line tool and is helpful for
the communication between the developer and the Emulator or the Android device that is
connected.
Ans The Android security model is primarily based on a sandbox and permission mechanism. Each 2 M for
application is running in a specific Dalvik virtual machine with a unique user ID assigned to it, explanation
which means the application code runs in isolation from the code of all other applications. , 2 M for
Therefore, one application has not granted access to other applications’ files. explaining
permissions
Android application has been signed with a certificate with a private key Know the owner of , any 2
the application is unique. This allows the author of the application will be identified if needed. permissions
When an application is installed in the phone is assigned a user ID, thus avoiding it from expected)
affecting it other applications by creating a sandbox for it. This user ID is permanent on which
devices and applications with the same user ID are allowed to run in a single process. This is a
way to ensure that a malicious application has Cannot access / compromise the data of the
genuine application. It is mandatory for an application to list all the resources it will Access
during installation. Terms are required of an application, in the installation process should be
user-based or interactive Check with the signature of the application.
Declaring and Using Permissions
The purpose of a permission is to protect the privacy of an Android user. Android apps must
request permission to access sensitive user data (such as contacts and SMS), as well as certain
system features (such as camera and internet). Depending on the feature, the system might grant
the permission automatically or might prompt the user to approve the request.
Permissions are divided into several protection levels. The protection level affects whether
runtime permission requests are required. There are three protection levels that affect third-
party apps: normal, signature, and dangerous permissions.
Normal permissions: Normal permissions cover areas where your app needs to access data or
resources outside the app’s sandbox, but where there’s very little risk to the user’s privacy or
Page No: 4 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
the operation of other apps. For example, permission to set the time zone is a normal
permission. If an app declares in its manifest that it needs a normal permission, the system
automatically grants the app that permission at install time. The system doesn’t prompt the user
to grant normal permissions, and users cannot revoke these permissions.
Signature permissions: The system grants these app permissions at install time, but only when
the app that attempts to use permission is signed by the same certificate as the app that defines
the permission.
Dangerous permissions: Dangerous permissions cover areas where the app wants data or
resources that involve the user’s private information, or could potentially affect the user’s
stored data or the operation of other apps. For example, the ability to read the user’s contacts is
a dangerous permission. If an app declares that it needs a dangerous permission, the user must
explicitly grant the permission to the app. Until the user approves the permission, your app
cannot provide functionality that depends on that permission. To use a dangerous permission,
your app must prompt the user to grant permission at runtime. For more details about how the
user is prompted, see Request prompt for dangerous permission.
d) Elaborate the need of permissions in Android. Explain the permissions to set 4M
system functionalitics like SEND-SMS, bluetooth.
Ans The purpose of a permission is to protect the privacy of an Android user. Android apps must(2 M for
request permission to access sensitive user data (such as contacts and SMS), as well as certain
explanation
system features (such as camera and internet). Depending on the feature, the system might grant
of need, 1
the permission automatically or might prompt the user to approve the request. M each for
explaining
android. permission. SEND_SMS permissions
Allows the app to send SMS messages. This may result in unexpected charges. of Sms and
Malicious apps may cost you money by sending messages without your confirmation. bluetooth)
Ans Download the latest version of Android Studio from above URL and launch Android 4 M for
Studio.exe file by double clicking on it. steps
The initial android studio setup screen will open in that click Next to continue for further
steps of environment setup
Now we need to select a required components to setup an android environment. Here
we selected all three components (Android Studio, Android SDK and Android Virtual
Device) and click Next.
Now we need to agree the License agreements to proceed further, click on I Agree
button
Now we need to specify the local machine drive location to install Android Studio and
Android SDK.
After selecting the location path to install required components, click Next.
Now select the start menu folder to create a shortcut for android studio and click Install
Once we click Install button the installation process will start and click Next after
completion of Installation.
After that it will show installation completion wizard in that click Finish to launch
android studio While launching Android Studio it will give you an option to import
Page No: 7 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
settings from previous version of studio. In case if you don’t have any previous version,
select second option and click OK
Now android studio will open a welcome wizard window in that click Next to validate
our current Android SDK and development environment setup
Now select a Standard installation type and click Next to install a common settings and
options
Now verify settings and click Finish to complete android studio setup process
After completion of required components installation click on Finish
After completion of all required components installation, we will be able to see Android
Studio welcome window
c) Explain the activity life cycle. 4M
Ans Diagram 2
M
explanation
2M
Page No: 8 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
onCreate (): Called then the activity is created. Used to initialize the activity, for
example create the user interface.
onResume (): Called if the activity get visible again and the user starts interacting
with the activity again. Used to initialize fields, register listeners, bind
to services, etc.
onPause (): Called once another activity gets into the foreground. Always called
before the activity is not visible anymore. Used to release resources or
save application data. For example you unregister listeners, intent
receivers, unbind from services or remove system service listeners.
onStop (): Called once the activity is no longer visible. Time or CPU intensive shutdown
operations, such as writing information to a database should be down in the onStop() method.
This method is guaranteed to be called as
of API 11.
Page No: 10 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<ProgressBar
android:id="@+id/progressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:layout_marginTop="20dp"
android:indeterminate="false"
android:max="100"
android:minHeight="50dp"
android:minWidth="200dp"
android:progress="1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/progressBar"
android:layout_below="@+id/progressBar"/>
</RelativeLayout>
Java file:
package in.edu.vpt.progressbar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private int progressStatus = 0;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
textView = (TextView) findViewById(R.id.textView);
// Start long running operation in a background thread
new Thread(new Runnable() {
public void run() {
Page No: 12 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
while (progressStatus < 100) {
progressStatus += 1;
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
progressBar.setProgress(progressStatus);
textView.setText(progressStatus+"/"+progressBar.getMax());
}
});
try {
// Sleep for 200 milliseconds.
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
c) Explain Android system architecture in detail. 4M
Ans Diagram
2 M,
Explanation
2M
1. Applications:
• The top layer of android architecture is Applications. The native and third party applications
like Contacts, Email, Music, Gallery, Clock, Games, etc. whatever we will build those will be
installed on this layer only.
Page No: 13 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• The application layer runs within the Android run time using the classes and services made
available from the application framework.
2. Application Framework:
• The Application Framework provides the classes used to create an Android application. It also
provides a generic abstraction for hardware access and manages the user interface and
application resources.
• It basically provides the services through which we can create the particular class and make
that class helpful for the Applications creation.
• The application framework includes services like telephony service, location services,
notification manager, NFC service, view system, etc. which we can use for application
development as per our requirements.
3. Android Runtime:
• Android Runtime environment is an important part of Android rather than an internal part and
it contains a components like core libraries and the Dalvik virtual machine.
• The Android run time is the engine that powers our applications along with the libraries and
it forms the basis for the application framework.
(i) Dalvik Virtual Machine (DVM) is a register-based virtual machine like Java Virtual
Machine (JVM).
It is specially designed and optimized for android to ensure that a device can run multiple
instances efficiently. It relies on the Linux kernel for threading and low-level memory
management.
(ii) The core libraries in android runtime will enable us to implement an android applications
using standard JAVA programming language.
4. Platform Libraries:
• The Platform Libraries includes various C/C++ core libraries and Java based libraries such as
SSL, libc, Graphics, SQLite, Webkit, Media, Surface Manger, OpenGL etc. to provide a
support for android development.
5. Linux Kernel:
• Linux Kernel is a bottom layer and heart of the android architecture. It is heart of Android
architecture that exists at the root of android architecture and contains all the low-level device
drivers for the various hardware components of an Android device.
• Linux Kernel is responsible for device drivers, power management, memory management,
device management and resource access. It manage all the drivers such as display drivers,
camera drivers, Bluetooth drivers, audio drivers, memory drivers, etc. which are mainly
required for the android device during the runtime.
• The Linux Kernel will provide an abstraction layer between the device hardware and the
remainder of the stack. It is responsible for memory management, power management, device
management, resource access, etc.
d) Explain the procedure of Geo-coding and reverse Geo-coding. 4M
Page No: 14 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• The following code shows how we can find out the address of a location we have just touched and
using the getFromLocation() method: reverse
classMapOverlay extends com.google.android.maps.Overlay geocoding 2
M
{
@Override
publicboolean draw(Canvas canvas, MapViewmapView,
boolean shadow, long when)
{
//...
}
@Override
publicbooleanonTouchEvent(MotionEvent event, MapViewmapView)
{
//---when user lifts his finger---
if (event.getAction() == 1) {
GeoPoint p = mapView.getProjection().fromPixels(
(int) event.getX(),
(int) event.getY());
Geocoder geoCoder = new Geocoder(
getBaseContext(), Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocation(
p.getLatitudeE6() / 1E6,
p.getLongitudeE6() / 1E6, 1);
String add = "";
if (addresses.size() > 0)
{
for (inti=0; i<addresses.get(0).getMaxAddressLineIndex();
i++)
add += addresses.get(0).getAddressLine(i) + "n";
}
Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show();
}
catch (IOException e) {
e.printStackTrace();
}
return true;
}
else
return false;
}
}
Page No: 15 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Reverse-geocoding:
If we know the address of a location but want to know its latitude and longitude, we can do so
via reverse-Geocoding. Again, we can use the Geocoder class for this purpose.
• The following code shows how we can find the exact location of the Empire State Building
by using the getFromLocationName() method:
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try {
List<Address> addresses = geoCoder.getFromLocationName(
"empire state building", 5);
String add = "";
if (addresses.size() > 0) {
p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
mc.animateTo(p);
mapView.invalidate();
}
} catch (IOException e) {
e.printStackTrace();
}
Once. the location is found, the above code navigates the map to the location.
e) Develop an application to send and receive SMS (Write only Java and 4M
permission tag in manifest file).
Ans Permissions and <receiver> tag required in AndroidManifest.xml Manifest
<uses-permission android:name="android.permission.RECEIVE_SMS" /> File:1M
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/> Java Code:
<uses-permission android:name="android.permission.WRITE_SMS"/> 3M
<receiver
android:name=".SmsReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
MainActivity.java
(Cosidering appropriate layout file with 2 edit text boxes namely for phone number,
message and a button for sending sms)
package com.example.testreceivesms;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
Page No: 16 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(sms);
}
}
SmsReceiver.java
package com.example.testreceivesms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
if (bundle != null) {
// Retrieve the SMS Messages received
Object[] sms = (Object[]) bundle.get("pdus");
Page No: 18 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
a) Develop a program to send and receive an Email. 6M
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_alignLeft="@+id/editText1"
android:layout_marginTop="20dp" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_alignLeft="@+id/editText2"
android:layout_marginTop="30dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"
android:text="Send To:"
android:textColor="#0F9D58" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
Page No: 19 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignParentLeft="true"
android:text="Email Subject:"
android:textColor="#0F9D58" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText3"
android:layout_alignBottom="@+id/editText3"
android:text="Email Body:"
android:textColor="#0F9D58" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText3"
android:layout_alignLeft="@+id/editText3"
android:layout_marginLeft="76dp"
android:layout_marginTop="20dp"
android:text="Send email!!" />
</RelativeLayout>
MainActivity.java
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// define objects for edit text and button
Button button;
EditText sendto, subject, body;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Page No: 20 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
// attach setOnClickListener to button with Intent object define in it
button.setOnClickListener(view -> {
String emailsend = sendto.getText().toString();
String emailsubject = subject.getText().toString();
String emailbody = body.getText().toString();
@Override
protected void onResume() {
super.onResume();
Page No: 21 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
registerReceiver(gml, intf);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(gml);
}
}
Gmailrerciever..java
package com.example.myemailprog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.BitmapFactory;
import android.widget.Toast;
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myemailprog">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyEmailProg">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Page No: 22 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
</intent-filter>
</activity>
<receiver android:name="GmailReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.PROVIDER_CHANGED"
android:priority="-10">
</action>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="content" android:host="gmail-ls"
android:pathPattern="/unread/.*">
</data>
</intent-filter>
</receiver>
</application>
</manifest>
b) Develop a program for providing bluetooth connectivity. 6M
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="30dp"
android:layout_marginTop="49dp"
android:text="TURN_ON" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button1"
android:layout_below="@+id/button1"
android:layout_marginTop="27dp"
android:text="DISCOVERABLE" />
Page No: 23 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/button2"
android:layout_below="@+id/button2"
android:layout_marginTop="28dp"
android:text="TURN_OFF" />
</RelativeLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:androclass="http://schemas.android.com/apk/res/android"
package="com.example.bluetooth"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.bluetooth.MainActivity"
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>
MainActivity.java
package com.example.bluetooth;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.Intent;
Page No: 24 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
}
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Page No: 25 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
mBluetoothAdapter.disable();
//out.append("TURN_OFF BLUETOOTH");
Toast.makeText(getApplicationContext(), "TURNING_OFF BLUETOOTH", Toast.LENGT
H_LONG);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
c) Develop a program to implement 6M
<GridView
android:id="@+id/gridview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:columnWidth="50dp"
android:gravity="center"
android:numColumns="auto_fit"
android:stretchMode="columnWidth" >
</GridView>
<ImageView
android:id="@+id/full_logo"
android:layout_width="match_parent"
Page No: 26 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content"
app:srcCompat="@drawable/android_logo" />
</LinearLayout>
Placed image that has to be displayed in drawable folder
package in.msbte.controls_exam_ques;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.ListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//List View
adapter = new ArrayAdapter<String>(this, R.layout.simple_item, sampleArray);
ListView listView = (ListView) findViewById(R.id.sample_list);
listView.setAdapter(adapter);
//Grid View
gridView = (GridView) findViewById(R.id.gridview1);
adapter1 = new ArrayAdapter<String>(this, R.layout.simple_item, alphabets);
gridView.setAdapter(adapter1);
}
}
6. Attempt any TWO of the following: 12 M
Page No: 27 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
a) Develop an application to store customer's details like, customer-id, customer-name, 6M
mobile number, address, pin-code and retrieve customer information using customer-id
in SQLite databases.
(Any other relevant logic can be considered)
Ans activity_main.xml Layout File
<?xml version="1.0" encoding="utf-8"?> : 1M
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" Java File :
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" Correct
android:layout_height="match_parent" Logics for
tools:context=".MainActivity">
Create
table : 1M
<TextView Insertion of
android:text="Insert Customer Details" record : 2M
android:layout_width="wrap_content" Retrival of
android:layout_height="wrap_content" data : 2M
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:id="@+id/textView"
android:gravity="center"
android:textSize="20dp"
android:textColor="#000000"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="ID"
android:id="@+id/editid"
android:layout_below="@+id/textView"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:id="@+id/editname"
android:layout_below="@+id/editid"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Mobile No."
android:id="@+id/editmobile"
android:layout_below="@+id/editname"/>
Page No: 28 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Address"
android:lines="3"
android:id="@+id/editaddress"
android:layout_below="@+id/editmobile"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Pin Code"
android:id="@+id/editpincode"
android:layout_below="@+id/editaddress"/>
<Button
android:text="Insert Data"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editpincode"
android:layout_centerHorizontal="true"
android:id="@+id/button" />
<TextView
android:text="Search Customer Details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true"
android:id="@+id/textView1"
android:gravity="center"
android:textSize="20dp"
android:layout_below="@+id/button"
android:textColor="#000000"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Enter ID"
android:id="@+id/editsearchid"
android:layout_below="@+id/textView1"/>
Page No: 29 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<Button
android:text="Search Data"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/editsearchid"
android:layout_centerHorizontal="true"
android:id="@+id/button1" />
</RelativeLayout>
MainActivity.java
package in.msbte.database;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EnterData = (Button)findViewById(R.id.button);
SearchData = (Button)findViewById(R.id.button1);
editTextID = (EditText)findViewById(R.id.editid);
editTextName = (EditText)findViewById(R.id.editname);
editMobileNo = (EditText)findViewById(R.id.editmobile);
editAddress = (EditText)findViewById(R.id.editaddress);
editPincode = (EditText)findViewById(R.id.editpincode);
editSearchid = (EditText)findViewById(R.id.editsearchid);
EnterData.setOnClickListener(new View.OnClickListener() {
@Override
Page No: 30 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
public void onClick(View view) {
sqLiteDatabaseObj = openOrCreateDatabase("AndroidJSonDataBase",
Context.MODE_PRIVATE, null);
sqLiteDatabaseObj.execSQL("CREATE TABLE IF NOT EXISTS
AndroidJSonTable(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, cid
VARCHAR, name VARCHAR, mobile VARCHAR, address VARCHAR, pincode
VARCHAR);");
cid = editTextID.getText().toString();
cname = editTextName.getText().toString() ;
cmobile = editMobileNo.getText().toString();
caddress = editAddress.getText().toString();
cpincode = editPincode.getText().toString();
sql_query = "INSERT INTO AndroidJSonTable (cid, name, mobile, address,
pincode) VALUES('"+cid+"', '"+cname+"', '"+cmobile+"', '"+caddress+"', '"+cpincode+"');";
sqLiteDatabaseObj.execSQL(sql_query);
Toast.makeText(getApplicationContext(), "Data Inserted Successfully",
Toast.LENGTH_LONG).show();
}
});
SearchData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sid = editSearchid.getText().toString();
Cursor cursor = sqLiteDatabaseObj.rawQuery( "select * from AndroidJSonTable
where cid="+sid+"", null );
StringBuffer buffer= new StringBuffer();
while (cursor.moveToNext())
{
String cid =cursor.getString(1);
String name =cursor.getString(2);
String mob =cursor.getString(3);
String addr =cursor.getString(4);
String pcode =cursor.getString(5);
buffer.append(cid+ " " + name + " " + mob +" " + addr +" " + pcode +"
\n");
Toast.makeText(getApplicationContext(), buffer,
Toast.LENGTH_LONG).show();
} }); } }
b) Write a program to find the direction from user's current location to MSBTE, 6M
Bandra. (Write only Java and manitest file).
(Note : Any other relevant logic to get the required output can also be considered.)
Page No: 31 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Ans AndroidManifest.xml Manifest
file :2M
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" Java File :
package="com.example.msbte.google_map_currentlocationroute"> 4M
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
MainActivity.java
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
Page No: 32 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.DexterError;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.PermissionRequestErrorListener;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import java.util.List;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.clear();
Log.d("mylog", "Added Markers");
mMap.addMarker(place1);
mMap.addMarker(place2);
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(googlePlex), 5000,
null);
}
@Override
public void onTaskDone(Object... values) {
if (currentPolyline != null)
currentPolyline.remove();
currentPolyline = mMap.addPolyline((PolylineOptions) values[0]);
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest>
permissions, PermissionToken token) {
token.continuePermissionRequest();
}
}).
withErrorListener(new PermissionRequestErrorListener() {
@Override
public void onError(DexterError error) {
Toast.makeText(getApplicationContext(), "Some Error! ",
Toast.LENGTH_SHORT).show();
}
})
Page No: 35 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
.onSameThread()
.check();
}
startLocationUpdates();
mLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(mLocation == null){
startLocationUpdates();
}
if (mLocation != null) {
// mLatitudeTextView.setText(String.valueOf(mLocation.getLatitude()));
//mLongitudeTextView.setText(String.valueOf(mLocation.getLongitude()));
Page No: 36 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
} else {
Toast.makeText(this, "Location not Detected", Toast.LENGTH_SHORT).show();
} }
@Override
public void onConnectionSuspended(int i) {
Log.i(TAG, "Connection Suspended");
mGoogleApiClient.connect();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode());
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null) {
mGoogleApiClient.connect();
} }
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
} }
@Override
public void onLocationChanged(Location location) {
tvLocation.setText(String.valueOf(location.getLatitude() +"
"+String.valueOf(location.getLongitude())));
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
if(isFirstTime){
//code to draw path on map
getDirection = findViewById(R.id.btnGetDirection);
getDirection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new FetchURL(MainActivity.this).execute(getUrl(place1.getPosition(),
place2.getPosition(), "driving"), "driving");
}
});
Page No: 38 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<EditText
android:id="@+id/num1"
android:layout_below="@+id/heading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Number 1"
android:inputType="number" />
<EditText
android:id="@+id/num2"
android:layout_below="@+id/num1"
android:hint="Enter Number 2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<TextView
android:id="@+id/result"
android:layout_below="@+id/num2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:text="Result" />
<Button
android:id="@+id/sum"
android:layout_below="@id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="+" />
<Button
android:id="@+id/sub"
android:layout_below="@id/result"
android:layout_toRightOf="@id/sum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="-" />
<Button
Page No: 39 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/div"
android:layout_below="@id/result"
android:layout_toRightOf="@id/sub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="/" />
<Button
android:id="@+id/mul"
android:layout_below="@id/result"
android:layout_toRightOf="@id/div"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="x"/>
</RelativeLayout>
MainActivity.java
package in.msbte.calculator;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
public EditText e1, e2;
Button add, sub , mul, div;
TextView t1;
int num1, num2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1 = (EditText) findViewById(R.id.num1);
e2 = (EditText) findViewById(R.id.num2);
t1 = (TextView) findViewById(R.id.result);
add = (Button) findViewById(R.id.sum);
mul = (Button) findViewById(R.id.mul);
div = (Button) findViewById(R.id.div);
sub = (Button) findViewById(R.id.sub);
add.setOnClickListener(new View.OnClickListener() {
Page No: 40 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
@Override
public void onClick(View view) {
num1 = Integer.parseInt(e1.getText().toString());
num2 = Integer.parseInt(e2.getText().toString());
int sum = num1 + num2;
t1.setText(Integer.toString(sum));
}
});
sub.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = Integer.parseInt(e1.getText().toString());
num2 = Integer.parseInt(e2.getText().toString());
int sum = num1 - num2;
t1.setText(Integer.toString(sum));
}
});
mul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = Integer.parseInt(e1.getText().toString());
num2 = Integer.parseInt(e2.getText().toString());
int sum = num1 * num2;
t1.setText(Integer.toString(sum));
}
});
div.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
num1 = Integer.parseInt(e1.getText().toString());
num2 = Integer.parseInt(e2.getText().toString());
int sum = num1 / num2;
t1.setText(Integer.toString(sum));
}
});
}
}
Page No: 41 | 41
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
SUMMER – 2023 EXAMINATION
Model Answer – Only for the Use of RAC Assessors
te
Subject Name: Mobile Application Development Subject Code: 22617
al
Important Instructions to examiners: XXXXX
lc
1) The answers should be examined by key words and not as word-to-word as given in the model answer scheme.
2) The model answer and the answer written by candidate may vary but the examiner may try to assess the
le
understanding level of the candidate.
3) The language errors such as grammatical, spelling errors should not be given more Importance (Not applicable for
a
subject English and Communication Skills.
r.c
4) While assessing figures, examiner may give credit for principal components indicated in the figure. The figures
drawn by candidate and model answer may vary. The examiner may give credit for any equivalent figure drawn.
om
5) Credits may be given step wise for numerical problems. In some cases, the assumed constant values may vary and
there may be some difference in the candidate’s answers and model answer.
6) In case of some questions credit may be given by judgement on part of examiner of relevant answer based on
candidate’s understanding.
7) For programming language papers, credit may be given to any other program based on equivalent concept.
8) As per the policy decision of Maharashtra State Government, teaching in English/Marathi and Bilingual (English +
Marathi) medium is introduced at first year of AICTE diploma Programme from academic year 2021-2022. Hence if
the students in first year (first and second semesters) write answers in Marathi or bilingual language (English
+Marathi), the Examiner shall consider the same and assess the answer based on matching of concepts with model
answer.
Page No: 1 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
•
sb
In the Android ecosystem this translates to inter-dependence between users,
developers, and equipment makers. One cannot exist without the other:
te
▪ Google develops android
▪ Users buy devices and applications
al
▪ Original Equipment makers sell devices, sometimes bundled with applications
lc
▪ Developers buy devices, then make and sell applications
le
▪ Freelance Android Developer developers have the skills to contribute to the
ecosystem for android development , they are who creates their own applications and
a
published them on googles play store.
r.c
om
b) List various tools for android application development 2M
Ans Android Fragment is the part of activity, it is also known as sub-activity. There can be more Explanation
2M
than one fragment in an activity.
Page No: 2 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
We can create Fragments by extending Fragment class or by inserting a Fragment into our
Activity layout by declaring the Fragment in the activity’s layout file, as
te
a <fragment> element.
al
Fragments were added in Honeycomb version of Android i.e API version 11. We can add,
lc
replace or remove Fragment’s in an Activity while the activity is running.
le
Fragment can be used in multiple activities.
a
We can also combine multiple Fragments in a single activity to build a multi-plane UI.
r.c
We can only show a single Activity on the screen at one given point of time so we were not
able to divide the screen and control different parts separately. With the help of Fragment’s
om
we can divide the screens in different parts and controls different parts separately
• In Android, you can use SmsManager API or devices Built-in SMS application to 4 points
send SMS's
2M
• Android SMS is stored in PDU (protocol description unit) format
• SmsManager class takes care of sending the SMS message.
• We just need to get an instance of it and send the SMS message.
• We need to add permission to SEND_SMS in the Android manifest file.
Ans The android platform supports three broad categories of sensors. 2 M for List
• Motion Sensors
These are used to measure acceleration forces and rotational forces along with three
axes.
• Environmental sensors
These are used to measure the environmental changes such as temperature, humidity etc.
• Position sensors
Page No: 3 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
2. Attempt any THREE of the following: 12 M
te
Ans Android Explain
al
android 2 M
Android is an open source and Linux-based Operating System .It is designed primarily for
lc
touch screens mobile devices such as smartphones and tablet computers. Android offers a Importance
le
unified approach to application development for mobile devices which means developers 2M
need only develop for Android, and their applications should be able to run on different
a
devices powered by Android.
r.c
Android was developed by the Open Handset Alliance, led by Google, and other companies.
om
OHA
• The Open Handset Alliance (OHA) is a business alliance that was created for the
purpose of developing open mobile device standards.
• The OHA has approximately 80 member companies, including HTC, Dell, Intel,
Motorola, Qualcomm and Google.
Importance of OHA
• Lower overall handset costs: Opens up resources, which facilitates the focus on
creating innovative applications, solutions and services.
• Developer-friendly environment: In the open-source community, developers share
notes to expedite application development.
• Post-development: Provides an ideal channel for application marketing and
distribution.
Ans The Dalvik Virtual Machine (DVM) is an android virtual machine optimized for mobile Explain 2
devices. M
Dalvik VM is also a virtual machine that is highly optimized for mobile devices. Importance
2M
Thus, it provides all the three things, that are memory management, high performance as
well as battery life.
Page No: 4 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
te
al
lc
le
a r.c
om
The Dex compiler converts the class files into the .dex file that run on the Dalvik VM.
Multiple class files are converted into one dex file.
The javac tool compiles the java source file into the class file.
The dx tool takes all the class files of your application and generates a single .dex file. It is a
platform-specific tool.
The Android Assets Packaging Tool (aapt) handles the packaging process.
c) Describe the process of getting the map API key. 4M
Click on the API key option to generate your API key. After clicking on this option your
API key will be generated
d) Explain multimedia framework in android. 4M
Page No: 5 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
Ans Multimedia Framework Proper
Explanation
4 marks
te
al
lc
le
a r.c
om
• The android multimedia system includes multimedia applications, multimedia
framework, OpenCore engine and hardware abstract for audio/video input/output
devices.
• The goal of the android multimedia framework is to provide a consistent interface
for Java services.
• The multimedia framework consists of several core dynamic libraries such as
libmediajni, libmedia, libmediaplayservice and so on
• Java classes call the Native C library Libmedia through Java JNI (Java Native
Interface).
• Libmedia library communicates with Media Server guard process through Android’s
Binder IPC (inter process communication) mechanism.
• Media Server process creates the corresponding multimedia service according to the
Java multimedia applications. The whole communication between Libmedia and
Media Server forms a Client/Server model.
• In Media Server guard process, it calls OpenCore multimedia engine to realize the
specific multimedia processing functions. And the OpenCore engine refers to the
PVPlayer and PVAuthor.
Page No: 6 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
Go to Android https://developer.android.com/studio to get the Android Studio executable or steps 4
zip file. marks
te
Step 2:
al
● Click on the Download Android Studio Button.
● Click on the “I have read and agree with the above terms and conditions” checkbox
lc
followed by the download button
● Click on the Save file button in the appeared prompt box and the file will start
le
downloading.
a r.c
Step 3:
After the downloading has finished, open the file from downloads and will prompt the
following dialog box. Click on next. In the next prompt, it’ll ask for a path for installation.
om
Choose a path and hit next.
Step 4:
It will start the installation, and once it is completed, it will be like the image shown below.
Step 5:
Once “Finish” is clicked, it will ask whether the previous settings need to be imported [if the
android studio had been installed earlier], or not. It is better to choose the ‘Don’t import
Settings option’. Click the OK button.
Step 6:
This will start the Android Studio. Meanwhile, it will be finding the available SDK
components.
Step 7:
After it has found the SDK components, it will redirect to the Welcome dialog box. Choose
Standard and click on Next. Now choose the theme, whether the Light theme or the Dark
one. The light one is called the IntelliJ theme whereas the dark theme is called Dracula.
Choose as required. Click on the Next button.
Step 8:
Now it is time to download the SDK components. Click on Finish. Components begin to
download let it complete. The Android Studio has been successfully configured. Now it’s
time to launch and build apps. Click on the Finish button to launch it.
Step 9:
Click on Start a new Android Studio project to build a new app.
Page No: 7 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
Ans GridView : (1 M for
explanation
Android GridView shows items in two-dimensional scrolling grid (rows & columns) and the of
te
grid items are not necessarily predetermined but they automatically inserted to the layout GridView,1
al
using a ListAdapter. M for
explaining
lc
GridView Attributes
attributes, 2
le
Following are the important attributes specific to GridView – M example)
a
[any two
r.c
attributes
Sr.No Attribute & Description should be
considered
om
1 android:id
for 1 M,
This is the ID which uniquely identifies the layout. any valid
example of
2 android:columnWidth GridView
for 2 M]
This specifies the fixed width for each column. This could be in px, dp,
sp, in, or mm.
3 android:gravity
Specifies the gravity within each cell. Possible values are top, bottom,
left, right, center, center_vertical, center_horizontal etc.
4 android:horizontalSpacing
Defines the default horizontal spacing between columns. This could be
in px, dp, sp, in, or mm.
5 android:numColumns
Defines how many columns to show. May be an integer value, such as
"100" or auto_fit which means display as many columns as possible to
fill the available space.
6 android:stretchMode
Defines how columns should stretch to fill the available empty space, if
any. This must be either of the values −
• none − Stretching is disabled.
• spacingWidth − The spacing between each column is stretched.
• columnWidth − Each column is stretched equally.
• spacingWidthUniform − The spacing between each column is
uniformly stretched..
Page No: 8 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
7 android:verticalSpacing
Defines the default vertical spacing between rows. This could be in px,
te
dp, sp, in, or mm.
al
lc
activity_main.xml Code :
le
<?xml version="1.0" encoding="utf-8"?>
a
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
r.c
xmlns:app="http://schemas.android.com/apk/res-auto"
om
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
tools:context=".MainActivity">
</GridView>
activity_listview.xml code :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
Page No: 9 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:layout_height="wrap_content"
android:layout_gravity="center" />
te
</LinearLayout>
al
lc
MainActivity.java
le
package com.example.myapplication.gridviewbuttons;
a r.c
import android.os.Bundle;
import android.widget.ArrayAdapter;
om
import android.widget.GridView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
GridView gridview;
String arr[] = new String[15];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridview = findViewById(R.id.gridview);
for (int i = 0; i < 15; i++) {
arr[i] = Integer.toString(i + 1);
}
ArrayAdapter<String> ad = new ArrayAdapter<String>(this, R.layout.activity_listview,
R.id.btn, arr);
gridview.setAdapter(ad);
}
}
Ans Text to Speech converts the text written on the screen to speech like you have written “Hello Proper
World” on the screen and when you press the button it will speak “Hello World”. Text-to- explanation
speech is commonly used as an accessibility feature to help people who have trouble reading
Page No: 10 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
on-screen text, but it’s also convenient for those who want to be read too. This feature has
sb
4 marks
come out to be a very common and useful feature for the users.
te
In android, by using TextToSpeech class we can easily convert our text into voice and it
al
supports different types of speaking languages. We can choose the speaking language based
on our requirements in the android application.
lc
The android TextToSpeech instance can only be used to synthesize text once it has
le
completed its initialization so implement TextToSpeech.
a
OnInitListener to notify the completion of initialization. During the initialization, we can set
r.c
the audio pitch rate, audio speed, type of language to speak, etc. based on our requirements.
om
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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:orientation="vertical"
android:layout_margin="30dp"
tools:context=".MainActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/Text"
android:layout_marginBottom="20dp"
android:hint="Enter your text"
android:gravity="center"
android:textSize="16dp"/>
Page No: 11 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<Button
te
android:layout_width="wrap_content"
al
android:id="@+id/btnText"
lc
android:layout_height="wrap_content"
le
android:text="Click"
a r.c
android:layout_gravity="center"/>
om
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:gravity="center_horizontal"
android:text="MobileApplicationDevelopment"
android:textSize="36sp" />
</LinearLayout>
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Locale;
Page No: 12 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
public class MainActivity extends AppCompatActivity {
te
EditText Text;
al
Button btnText;
lc
TextToSpeech textToSpeech;
le
@Override
a r.c
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
om
setContentView(R.layout.activity_main);
Text = findViewById(R.id.Text);
btnText = findViewById(R.id.btnText);
btnText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
textToSpeech.speak(Text.getText().toString(),TextToSpeech.QUEUE_FLUSH,null);
}
Page No: 13 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
});
te
}
al
}
lc
d) Describe steps for deploying android application on Google Play Store. 4M
le
a
Ans Step 1: Create a Developer Account Correct
Before you can publish any app on Google Play, you need to create a Developer Account.
r.c
steps 4
You can easily sign up for one using your existing Google Account. You’ll need to pay a marks
one-time registration fee of $25 using your international credit or debit card. It can take
om
up to 48 hours for your registration to be fully processed.
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
production release. The first three releases allow you to test out your app among a select
group of users before you make it go live for everyone to access.
te
This is a safer option because you can analyze the test results and optimize or fix your
app accordingly if you need to before rolling it out to all users.
al
Once you create a production release, your uploaded app version will become accessible
to everyone in the countries you choose to distribute it in and click on ‘Create release.’
lc
le
Step 6: Provide an Appropriate Content Rating
If you don’t assign a rating to your app, it will be listed as ‘Unrated’. Apps that are
a
‘Unrated’ may get removed from Google Play.
r.c
To rate your app, you need to fill out a content rating questionnaire An appropriate
content rating will also help you get to the right audience, which will eventually improve
om
your engagement rates.
Ans The android project contains different types of app modules, source code files, and resource 1 M for
files. listing of
directory
1. Manifests Folder structure , 3
2. Java Folder M for
explanation
3. res (Resources) Folder )
Page No: 15 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
•
sb
Drawable Folder
• Layout Folder
te
• Mipmap Folder
al
• Values Folder
lc
le
4. Gradle Scripts
a r.c
om
Manifests Folder
Manifests folder contains AndroidManifest.xml for creating our android application. This
file contains information about our application such as the Android version, metadata, states
package for Kotlin file, and other application components. It acts as an intermediator
between android OS and our application.
Java folder
The Java folder contains all the java source code (.java) files that we create during the app
development, including other Test files. If we create any new project using Java, by default
the class file MainActivity.java will be created.
Resource (res) folder
The resource folder is the most important folder because it contains all the non-code sources
like images, XML layouts, and UI strings for our android application.
res/drawable folder
It contains the different types of images used for the development of the application. We
Page No: 16 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
need to add all the images in a drawable folder for the application development.
res/layout folder
te
The layout folder contains all XML layout files which we used to define the user interface of
al
our application. It contains the activity_main.xml file
lc
res/mipmap folder
le
This folder contains launcher.xml files to define icons that are used to show on the home
a
screen. It contains different density types of icons depending upon the size of the device
r.c
such as hdpi, mdpi, xhdpi.
res/values folder
om
Values folder contains a number of XML files like strings, dimensions, colors, and style
definitions. One of the most important files is the strings.xml file which contains the
resources.
Gradle Scripts folder
Gradle means automated build system and it contains a number of files that are used to
define a build configuration that can be applied to all modules in our application. In
build.gradle (Project) there are buildscripts and in build.gradle (Module) plugins and
implementations are used to build configurations that can be applied to all our application
modules.
Page No: 17 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:layout_alignParentStart="true" />
<Button
te
android:layout_width="wrap_content"
al
android:layout_height="wrap_content"
lc
android:text="SELECT TIME"
le
android:id="@+id/btn_time"
a r.c
android:layout_below="@+id/in_time"/>
</RelativeLayout>
om
MainActivity.java
package com.example.myapplication.timepickerwithspinnermode;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener {
Button btnTimePicker;
EditText txtTime;
private int mHour, mMinute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnTimePicker=(Button)findViewById(R.id.btn_time);
Page No: 18 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
txtTime=(EditText)findViewById(R.id.in_time);
btnTimePicker.setOnClickListener(this);
te
}
al
@Override
lc
public void onClick(View v) {
le
if (v == btnTimePicker) {
a r.c
// Get Current Time
final Calendar c = Calendar.getInstance();
om
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);
// Launch Time Picker Dialog
TimePickerDialog timePickerDialog = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
txtTime.setText(hourOfDay + ":" + minute);
}
}, mHour, mMinute, false);
timePickerDialog.show();
}
}
}
c) Explain property animation method to animate the properties of view object with example. 4M
Ans A property animation changes a property's (a field in an object) value over a specified length (2 M for
of time. To animate something, you specify the object property that you want to animate, explaining
such as an object's position on the screen, how long you want to animate it for, and what property
values you want to animate between. animation
method, 2
The property animation system lets you define the following characteristics of an animation: M for
example )
Duration: You can specify the duration of an animation. The default length is 300 ms.
Time interpolation: You can specify how the values for the property are calculated as a
Page No: 19 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
function of the animation's current elapsed time.
Repeat count and behavior: You can specify whether or not to have an animation repeat
te
when it reaches the end of a duration and how many times to repeat the animation. You can
al
also specify whether you want the animation to play back in reverse. Setting it to reverse
plays the animation forwards then backwards repeatedly, until the number of repeats is
lc
reached.
le
Animator sets: You can group animations into logical sets that play together or sequentially
a
or after specified delays.
r.c
Frame refresh delay: You can specify how often to refresh frames of your animation. The
default is set to refresh every 10 ms, but the speed in which your application can refresh
om
frames is ultimately dependent on how busy the system is overall and how fast the system
can service the underlying timer.
Strings.xml
<resources>
<string name="app_name">Animation</string>
<string name="blink">BLINK</string>
<string name="fade">FADE</string>
<string name="move">MOVE</string>
</resources>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".MainActivity">
<ImageView
Page No: 20 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:id="@+id/imageview"
android:layout_width="200dp"
te
android:layout_height="200dp"
al
android:layout_centerHorizontal="true"
lc
android:layout_marginTop="40dp"
le
android:contentDescription="@string/app_name"
a r.c
android:src="@drawable/image" />
om
<LinearLayout
android:id="@+id/linear1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/imageview"
android:layout_marginTop="30dp"
android:orientation="horizontal"
android:weightSum="3">
<Button
android:id="@+id/BTNblink"
style="@style/TextAppearance.AppCompat.Widget.Button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:padding="3dp"
android:text="@string/blink"
android:textColor="@color/white" />
Page No: 21 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<Button
te
android:id="@+id/BTNfade"
al
style="@style/TextAppearance.AppCompat.Widget.Button"
lc
android:layout_width="0dp"
le
android:layout_height="wrap_content"
a r.c
android:layout_margin="10dp"
android:layout_weight="1"
om
android:padding="3dp"
android:text="@string/fade"
android:textColor="@color/white" />
<Button
android:id="@+id/BTNmove"
style="@style/TextAppearance.AppCompat.Widget.Button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:padding="3dp"
android:text="@string/move"
android:textColor="@color/white" />
</LinearLayout>
</RelativeLayout>
1) Blink Animation
Page No: 22 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
te
<alpha android:fromAlpha="0.0"
al
android:toAlpha="1.0"
lc
android:interpolator="@android:anim/accelerate_interpolator"
le
android:duration="500"
a r.c
android:repeatMode="reverse"
android:repeatCount="infinite"/>
om
</set>
2) Fade Animation
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:duration="1000"
android:fromAlpha="0"
android:toAlpha="1" />
<alpha
android:duration="1000"
android:fromAlpha="1"
android:startOffset="2000"
android:toAlpha="0" />
</set>
3) Move Animation
<?xml version="1.0" encoding="utf-8"?>
<set
xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillAfter="true">
Page No: 23 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<translate
te
android:fromXDelta="0%p"
al
android:toXDelta="75%p"
lc
android:duration="700" />
le
</set>
a r.c
MainActivity.java
import androidx.appcompat.app.AppCompatActivity;
om
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
ImageView imageView;
Button blinkBTN, fadeBTN, moveBTN;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageview);
blinkBTN = findViewById(R.id.BTNblink);
fadeBTN = findViewById(R.id.BTNfade);
moveBTN = findViewById(R.id.BTNmove);
Page No: 24 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
blinkBTN.setOnClickListener(new View.OnClickListener() {
@Override
te
public void onClick(View v) {
al
// To add blink animation
lc
Animation animation =
le
AnimationUtils.loadAnimation(getApplicationContext(), R.anim.blink_animation);
a
imageView.startAnimation(animation);
r.c
}
om
});
fadeBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// To add fade animation
Animation animation =
AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fade_animation);
imageView.startAnimation(animation);
}
});
moveBTN.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// To add move animation
Animation animation =
AnimationUtils.loadAnimation(getApplicationContext(), R.anim.move_animation);
imageView.startAnimation(animation);
}
});
}
}
Page No: 25 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
d) Describe permissions required for android application development. 4M
Ans The Android security model is primarily based on a sandbox and permission mechanism. (2 Marks
te
Each application is running in a specific Dalvik virtual machine with a unique user ID for two
permission
al
assigned to it, which means the application code runs in isolation from the code of all other
applications. Therefore, one application has not granted access to other applications’ files. explanation
lc
)
Android application has been signed with a certificate with a private key Know the owner of
le
the application is unique. This allows the author of the application will be identified if
a
needed. When an application is installed in the phone is assigned a user ID, thus avoiding it
r.c
from affecting it other applications by creating a sandbox for it. This user ID is permanent
on which devices and applications with the same user ID are allowed to run in a single
om
process. This is a way to ensure that a malicious application has Cannot access /
compromise the data of the genuine application. It is mandatory for an application to list all
the resources it will Access during installation. Terms are required of an application, in the
installation process should be user-based or interactive Check with the signature of the
application.
Declaring and Using Permissions
The purpose of a permission is to protect the privacy of an Android user. Android apps must
request permission to access sensitive user data (such as contacts and SMS), as well as
certain system features (such as camera and internet). Depending on the feature, the system
might grant the permission automatically or might prompt the user to approve the request.
Permissions are divided into several protection levels. The protection level affects whether
runtime permission requests are required. There are three protection levels that affect third-
party apps: normal, signature, and dangerous permissions.
Normal permissions cover areas where your app needs to access data or resources outside
the app’s sandbox, but where there’s very little risk to the user’s privacy or the operation of
other apps. For example, permission to set the time zone is a normal permission. If an app
declares in its manifest that it needs a normal permission, the system automatically grants
the app that permission at install time. The system doesn’t prompt the user to grant normal
permissions, and users cannot revoke these permissions.
Signature permissions: The system grants these app permissions at install time, but only
when the app that attempts to use permission is signed by the same certificate as the app that
defines the permission.
Dangerous permissions: Dangerous permissions cover areas where the app wants data or
resources that involve the user’s private information, or could potentially affect the user’s
stored data or the operation of other apps. For example, the ability to read the user’s contacts
is a dangerous permission. If an app declares that it needs a dangerous permission, the user
must explicitly grant the permission to the app. Until the user approves the permission, your
app cannot provide functionality that depends on that permission. To use a dangerous
permission, your app must prompt the user to grant permission at runtime. For more details
about how the user is prompted, see Request prompt for dangerous permission.
Page No: 26 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
e) Develop an android application to show current location of an user's car 4M
te
Ans activity_maps.xml (2 M for
al
xml code, 1
<fragment xmlns:android="http://schemas.android.com/apk/res/android" M java
lc
xmlns:map="http://schemas.android.com/apk/res-auto" code,
le
1 M for
xmlns:tools="http://schemas.android.com/tools" permissions
a
)
r.c
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
om
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="example.com.mapexample.MapsActivity" />
MapsActivity.java
import android.os.Build;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.location.LocationServices;
import android.location.Location;
import android.Manifest;
Page No: 27 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
import android.content.pm.PackageManager;
import android.support.v4.content.ContextCompat;
te
import com.google.android.gms.common.ConnectionResult;
al
import com.google.android.gms.location.LocationListener;
lc
import com.google.android.gms.location.LocationRequest;
le
a r.c
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback,
om
LocationListener,GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
@Override
Page No: 28 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
te
al
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
lc
if (ContextCompat.checkSelfPermission(this,
le
Manifest.permission.ACCESS_FINE_LOCATION)
a r.c
== PackageManager.PERMISSION_GRANTED) {
buildGoogleApiClient();
om
mMap.setMyLocationEnabled(true);
}
}
else {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);
}
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
mGoogleApiClient.connect();
}
@Override
public void onConnected(Bundle bundle) {
Page No: 29 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
mLocationRequest.setInterval(1000);
mLocationRequest.setFastestInterval(1000);
te
al
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)
;
lc
le
if (ContextCompat.checkSelfPermission(this,
a
Manifest.permission.ACCESS_FINE_LOCATION)
r.c
== PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
om
mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
@Override
public void onLocationChanged(Location location) {
mLastLocation = location;
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
}
//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Current Position");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
Page No: 30 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
mCurrLocationMarker = mMap.addMarker(markerOptions);
te
//move map camera
al
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
lc
mMap.animateCamera(CameraUpdateFactory.zoomTo(11));
le
a r.c
//stop location updates
if (mGoogleApiClient != null) {
om
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient,
this);
}
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
}
Add the following user-permission in AndroidManifest.xml file.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
Note: only the permission line can be written , no entire code is required for manifest file.
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<TextView
te
android:text="Employee Registration Form"
android:layout_width="wrap_content"
al
android:layout_height="wrap_content"
lc
android:layout_alignParentTop="true"
le
android:layout_centerHorizontal="true"
android:id="@+id/textView"
a
android:gravity="center"
r.c
android:textSize="20dp"
android:textColor="#000000"/>
om
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="ID"
android:id="@+id/editid"
android:layout_below="@+id/textView"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:id="@+id/editname"
android:layout_below="@+id/editid"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Mobile No."
android:id="@+id/editmobile"
android:layout_below="@+id/editname"/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Address"
android:lines="3"
android:id="@+id/editaddress"
android:layout_below="@+id/editmobile"/>
<EditText
android:layout_width="fill_parent"
Page No: 32 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:layout_height="wrap_content"
android:hint="Pin Code"
te
android:id="@+id/editpincode"
android:layout_below="@+id/editaddress"/>
al
lc
<Button
le
android:text="Submit Details"
android:layout_width="fill_parent"
a
android:layout_height="wrap_content"
r.c
android:layout_below="@+id/editpincode"
android:layout_centerHorizontal="true"
om
android:id="@+id/button" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Student Feedback Form" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:id="@+id/editname"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Roll No."
Page No: 33 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:id="@+id/editrollno"/>
te
<EditText
android:layout_width="match_parent"
al
android:layout_height="wrap_content"
lc
android:hint="Class"
le
android:id="@+id/editclass"/>
a
<EditText
r.c
android:layout_width="match_parent"
android:layout_height="wrap_content"
om
android:hint="Enter your Feedback"
android:lines="3"
android:id="@+id/editfeedback"/>
<Button
android:text="Submit Feedback"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:id="@+id/button" />
</LinearLayout>
MapsActivity.java
package com.example.feedback;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
te
setContentView(R.layout.activity_main);
submitBtn = (Button)findViewById(R.id.button);
al
std_name = (EditText)findViewById(R.id.editname);
lc
std_rollno = (EditText)findViewById(R.id.editrollno);
le
std_class = (EditText)findViewById(R.id.editclass);
std_class = (EditText)findViewById(R.id.editfeedback);
a r.c
submitBtn.setOnClickListener(new View.OnClickListener() {
@Override
om
public void onClick(View view) {
sqLiteDatabaseObj = openOrCreateDatabase("FeedbaseDataBase",
Context.MODE_PRIVATE, null);
sqLiteDatabaseObj.execSQL("CREATE TABLE IF NOT EXISTS
Student(id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name
VARCHAR, rollno VARCHAR, class VARCHAR, feedback VARCHAR);");
sname = std_name.getText().toString();
srollno = std_rollno.getText().toString() ;
sclass = std_class.getText().toString();
sfeedback = std_class.getText().toString();
sql_query = "INSERT INTO Student (name, rollno, class, feedback)
VALUES('"+sname+"', '"+srollno+"', '"+sclass+"', '"+sfeedback+"')";
sqLiteDatabaseObj.execSQL(sql_query);
Toast.makeText(getApplicationContext(), "Feedback Submitted
Successfully", Toast.LENGTH_LONG).show();
}
});
}
}
Ans Geocoding is the process of transforming a street address or other description of a (Geocoding ,
location into a (latitude, longitude) coordinate. Reverse
Geocoding
Reverse geocoding is the process of transforming a (latitude, longitude) coordinate into a Explanation :
(partial) address. 3 M,
Example :
The amount of detail in a reverse geocoded location description may vary, for example 3M)
one might contain the full street address of the closest building, while another might
contain only a city name and postal code.
Page No: 35 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
The Geocoder class is used for handling geocoding and reverse geocoding.
te
activity_maps.xml
al
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
lc
xmlns:tools="http://schemas.android.com/tools"
le
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
a
android:layout_width="match_parent"
r.c
android:layout_height="match_parent"
tools:context="example.com.mapexample.MapsActivity">
om
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:layout_width="248dp"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Search Location" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="searchLocation"
android:text="Search" />
</LinearLayout>
</fragment>
AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
MapsActivity.java
package example.com.mapexample;
import android.location.Address;
import android.location.Geocoder;
import android.os.Build;
import android.support.v4.app.FragmentActivity;
Page No: 36 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
import android.os.Bundle;
import com.google.android.gms.common.api.GoogleApiClient;
te
import com.google.android.gms.maps.CameraUpdateFactory;
al
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
lc
import com.google.android.gms.maps.SupportMapFragment;
le
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
a
import com.google.android.gms.maps.model.Marker;
r.c
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.location.LocationServices;
om
import android.location.Location;
import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import java.io.IOException;
import java.util.List;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be
used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
Page No: 37 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
}
te
@Override
al
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
lc
le
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this,
a
Manifest.permission.ACCESS_FINE_LOCATION)
r.c
== PackageManager.PERMISSION_GRANTED) {
buildGoogleApiClient();
om
mMap.setMyLocationEnabled(true);
}
}
else {
buildGoogleApiClient();
mMap.setMyLocationEnabled(true);
}
}
protected synchronized void buildGoogleApiClient() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
mGoogleApiClient.connect();
}
@Override
public void onConnected(Bundle bundle) {
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
Page No: 38 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
}
te
@Override
al
public void onLocationChanged(Location location) {
lc
mLastLocation = location;
le
if (mCurrLocationMarker != null) {
mCurrLocationMarker.remove();
a
}
r.c
//Place current location marker
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
om
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("Current Position");
markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
mCurrLocationMarker = mMap.addMarker(markerOptions);
LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
} catch (IOException e) {
e.printStackTrace();
}
Page No: 39 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
Address address = addressList.get(0);
LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
mMap.addMarker(new MarkerOptions().position(latLng).title(location));
te
mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
al
Toast.makeText(getApplicationContext(),address.getLatitude()+"
"+address.getLongitude(),Toast.LENGTH_LONG).show();
lc
}
le
}
a
}
r.c
6. Attempt any TWO of the following: 12 M
om
a) Design an android application to show the list of paired devices by Bluetooth. 6M
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Paired devices:"
android:id="@+id/textView1"
android:textColor="#ff34ff06"
android:textSize="25dp"
android:layout_below="@+id/button1" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
Page No: 40 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
android:layout_alignParentBottom="true"
android:layout_below="@+id/textView1" />
te
</RelativeLayout>
al
AndroidManifest.xml
lc
<?xml version="1.0" encoding="utf-8"?>
le
<manifest xmlns:androclass="http://schemas.android.com/apk/res/android"
package="com.example.bluetooth"
a
android:versionCode="1"
r.c
android:versionName="1.0" >
om
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-
permission android:name="android.permission.BLUETOOTH_ADMIN" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=" in.org.msbte.bluetooth.MainActivity"
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>
MainActivity.java
package in.org.msbte.bluetooth;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
Page No: 41 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
import android.widget.ListView;
import android.widget.Toast;
te
import java.util.ArrayList;
al
import java.util.Set;
lc
public class MainActivity extends AppCompatActivity {
le
Button b1;
private BluetoothAdapter BA;
a
private Set<BluetoothDevice>pairedDevices;
r.c
ListView lv;
om
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button1);
BA = BluetoothAdapter.getDefaultAdapter();
lv = (ListView)findViewById(R.id.listView);
}
lv.setAdapter(adapter);
}
}
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
<TextView
android:id="@+id/fstTxt"
android:layout_width="wrap_content"
te
android:layout_height="wrap_content"
al
android:layout_marginLeft="100dp"
android:layout_marginTop="150dp"
lc
android:text="Mobile No" />
le
<EditText
android:id="@+id/mblTxt"
a
android:layout_width="wrap_content"
r.c
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
om
android:ems="10"/>
<TextView
android:id="@+id/secTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Message"
android:layout_marginLeft="100dp" />
<EditText
android:id="@+id/msgTxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:ems="10" />
<Button
android:id="@+id/btnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:text="Send SMS" />
</LinearLayout>
MainActivity.java
package in.org.msbte.sendsmsexample;
import android.content.Intent;
import android.net.Uri;
import android.provider.Telephony;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
Page No: 43 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
public class MainActivity extends AppCompatActivity {
te
private EditText txtMessage;
al
private Button btnSms;
@Override
lc
protected void onCreate(Bundle savedInstanceState) {
le
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a
txtMobile = (EditText)findViewById(R.id.mblTxt);
r.c
txtMessage = (EditText)findViewById(R.id.msgTxt);
btnSms = (Button)findViewById(R.id.btnSend);
om
btnSms.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
SmsManager smgr = SmsManager.getDefault();
smgr.sendTextMessage(txtMobile.getText().toString(),null,txtMessage.getText().toString(),null,null);
Toast.makeText(MainActivity.this, "SMS Sent Successfully",
Toast.LENGTH_SHORT).show();
}
catch (Exception e){
Toast.makeText(MainActivity.this, "SMS Failed to Send, Please try again",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
c) Explain how linear and frame layout is used to design an android application with 6M
suitable example.
Ans LinearLayout (2 M : For
each layout
• Android LinearLayout is a view group that aligns all children in either vertically explanation,
or horizontally. 1 M for
each layout
• Linear layout in Android allow us to arrange components horizontally in a single
example)
column or
vertically in a single row.
• Vertically or horizontally direction depends on attribute android: orientation.
• Linear layout is simple and easy to use, it creates a scroll bar if the length of the
window exceeds the length of the screen.
• Linear Layout are one of the simplest and common type of layouts used by
Android developers to keep controls within their interfaces. The linear layout
works as much as its name implies, it organizes the controls either a vertical or
horizontal pattern.
• When the layout’s orientation is set to vertical, all child controls within
Page No: 44 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
organized in a single column, and when the layout’s orientation is set to
sb
horizontal, all child controls within in single row.
te
Example
al
lc
<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutandroid:layout_width="368dp"
le
android:layout_height="495dp"
a
xmlns:tools="http://schemas.android.com/tools"
r.c
android:orientation="vertical"
tools:layout_editor_absoluteX="8dp"
om
tools:layout_editor_absoluteY="8dp"
xmlns:android="http://schemas.android.com/apk/res/android">
<Button
android:id="@+id/button5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button1" />
<Button
android:id="@+id/button6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button2" />
<Button
android:id="@+id/button7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button3" />
<Button
android:id="@+id/button8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button4" />
</LinearLayout>
Frame Layout
• Frame Layout is designed to block out an area on the screen to display a single item.
Generally, FrameLayout should be used to hold a single child view, because it can be
difficult to organize child views in a way that's scalable to different screen sizes without
the children overlapping each other.
Page No: 45 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
• Frame layouts are one of the simplest layout types used to organize controls within the
user interface of an Android application. The purpose of FrameLayout is to allocate an
te
area of screen.
• Frame layouts are one of the most efficient types of layouts used by Android developers
al
to organize view controls. They are used less often than some other layouts, simply
lc
because they are generally used to display only one view, or views which overlap.
• The frame layout is often used as a container layout, as it generally only has a single
le
child view (often another layout, used to organize more than one view).
a
Example
r.c
om
<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/framelayout"
android:layout_width="200dp"
android:layout_height="300dp"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="90dp"
android:layout_marginLeft="20dp"
android:text="Button"/>
<TextView
android:layout_width="100dp"
android:layout_height="50dp"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:background="@color/colorPrimary"
android:textColor="#fff"
android:text="I am TextView" />
</FrameLayout
Page No: 46 | 47
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
m
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
sb
te
al
lc
le
a r.c
om
Page No: 47 | 47
lOMoARcPSD|46833019
Page No: 1 | 48
Reverse Geocoding :
Reverse geocoding is the process of transforming a (latitude, longitude) coordinate
into a (partial) address.
Ans Intent is the message that is passed between components such as activities. Definition 1 M
Android uses Intent for communicating between the components of an Application Types Listing 1 M
and also from one application to another application.
Types:
Explicit Intent
Implicit Intent
f) Write difference between toggle button and radio button. 2M
Page No: 2 | 48
Attribute Description
Page No: 3 | 48
1. Click Download Android Studio. The Terms and Conditions page with
the Android Studio License Agreement opens.
2. Read the License Agreement.
3. At the bottom of the page, if you agree with the terms and conditions,
select the I have read and agree with the above terms and
Page No: 4 | 48
Within Android Studio, you can install the Android SDK as follows:
c) Explain the need of Android Operating System. Also describe any four 4M
features of android.
Open Source:
Multi-Platform Support
Multi-Carrier Support
World wide a large number of telecom carriers like Airtel, Vodafone, Idea
Cellular, AT&T Mobility, BSNL etc. are supporting Android powered
phones.
Android Market place (Google Play store) has very few restrictions on the
content or functionality of an android app. So the developer can distribute
theirs app through Google Play store and as well other distribution channels
like Amazon’s app store.
Four features of android
1) Near Field Communication (NFC)
Most Android devices support NFC, which allows electronic devices to easily
interact across short distances.
2) Alternate Keyboards
Android supports multiple keyboards and makes them easy to install; the SwiftKey,
Skype, and 8pen apps all offer ways to quickly change up your keyboard style.
3) Infrared Transmission
The Android operating system supports a built-in infrared transmitter, allowing you
to use your phone or tablet as a remote control.
4) No-Touch Control
Using Android apps such as Wave Control, users can control their phones touch-free,
using only gestures.
5) Automation
The Tasker app controls the app permissions but also automate them
Using the Android Market or third-party options like AppBrain, we can download
apps on PC and then automatically sync them with Android, no plugging required.
Page No: 6 | 48
While it’s possible to hack certain phones to customize the home screen, Android
comes with this capability from the get-go
9) Widgets
Apps are versatile, but sometimes you want information at a glance instead of having
to open an app and wait for it to load. Android widgets let you display just about any
feature you choose, right on the home screen—including weather apps, music
widgets, or productivity tools that helpfully remind you of upcoming meetings or
approaching deadlines.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to
be used.
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
Page No: 7 | 48
Ans A service is an application component which runs without direst interaction with Explanation 2 M,
Diagram 2 M
the user in the background.
● Services are used for repetitive and potentially long running operations, i.e.,
Internet downloads, checking for new data, data processing, updating content
providers and the like.
● Service can either be started or bound we just need to call either startService() or
bindService() from any of our android components. Based on how our service
was started it will either be “started” or “bound”
Service Lifecycle:
1. Started
a. A service is started when an application component, such as an activity, starts it by
calling startService().
b. Now the service can run in the background indefinitely, even if the component that
started it is destroyed.
2. Bound
a. A service is bound when an application component binds to it by calling
bindService().
b. A bound service offers a client-server interface that allows components to interact
with the service, send requests, get results, and even do so across processes with
InterProcess Communication (IPC).
c. Like any other components service also has callback methods. These will be
invoked while the service is running to inform the application of its state.
Implementing these in our custom service would help you in performing the right
Page No: 8 | 48
d. There is always only a single instance of service running in the app. If you are
calling startService() for a single service multiple times in our application it just
invokes the onStartCommand() on that service. Neither is the service restarted
multiple times nor are its multiple instances created.
1. onCreate():
This is the first callback which will be invoked when any component starts the
service. If the same service is called again while it is still running this method
Won’t be invoked. Ideally one time setup and intializing should be done in this
callback.
2. onStartCommand() /startSetvice()
This callback is invoked when service is started by any component by calling
startService(). It basically indicates that the service has started and can now run
indefinetly.
3. onBind()
To provide binding for a service, you must implement the onBind() callback
method. This method returns an IBinder object that defines the programming
interface that clients can use to interact with the service.
Page No: 9 | 48
5. onRebind()
This is invoked when new clients are connected to the service. It is called after
onRebind
6. onDestroy()
This is a final clean up call from the system. This is invoked just before the
service is being destroyed.
Therefore, one application has not granted access to other applications’ files.
Android application has been signed with a certificate with a private key
Know the owner of the application is unique.
This allows the author of the application will be identified if needed. When
an application is installed in the phone is assigned a user ID, thus avoiding it
from affecting it other applications by creating a sandbox for it.
This user ID is permanent on which devices and applications with the same
user ID are allowed to run in a single process.
It is mandatory for an application to list all the resources it will Access during
installation. Terms are required of an application, in the installation process
should be user-based or interactive Check with the signature of the
application
Page No: 10 | 48
Page No: 11 | 48
Page No: 12 | 48
Page No: 13 | 48
Page No: 14 | 48
DVM uses its own byte code and runs JVM uses java byte code and runs
the “.Dex” file. From Android 2.2 SDK “.class” file having JIT (Just In Time).
Dalvik has got a Just in Time compiler
DVM has been designed so that a A single instance of JVM is shared with
device can run multiple instances of the multiple applications.
VM efficiently. Applications are given
their own instance
There is a constant pool for every It has a constant pool for every class.
application.
An The android project contains different types of app modules, source code files, and 1 M for each
s resource files. directory
Following are the components/ modules of android directory:
1) Manifests Folder
Manifests folder contains AndroidManifest.xml for creating our android
application. This file contains information about our application such as the
Page No: 15 | 48
2) Java folder
The Java folder contains all the java source code (.java) files that we create
during the app development, including other Test files.
res/drawable folder
It contains the different types of images used for the development of
the application. We need to add all the images in a drawable folder for
the application development.
res/layout folder
The layout folder contains all XML layout files which we used to
define the user interface of our application. It contains the
activity_main.xml file.
res/mipmap folder
This folder contains launcher.xml files to define icons that are used to
show on the home screen. It contains different density types of icons
depending upon the size of the device such as hdpi, mdpi, xhdpi.
res/values folder
Values folder contains a number of XML files like strings,
dimensions, colors, and style definitions. One of the most important
files is the strings.xml file which contains the resources.
Ans [Consider any relevant example of Radio Button and in XML file, consider XML Code 2 M,
minimum attributes] Java Code 2 M
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
Page No: 16 | 48
<TextView android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Radio Button"
android:textSize="20dp"
android:gravity="center"
android:textColor="#f00"/>
<RadioGroup android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text1">
<RadioButton android:id="@+id/male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Male"/>
<RadioButton
android:id="@+id/female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/male"
android:text="Female"/>
</RadioGroup>
<Button android:id="@+id/submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/group"
android:layout_marginTop="99dp"
android:layout_centerHorizontal="true"
android:text="Submit" />
</RelativeLayout>
Java File:
package com.example.ifcdiv;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
Page No: 17 | 48
import android.widget.Toast;
RadioButton male,female;
Button b1;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frame);
male=findViewById(R.id.male);
female=findViewById(R.id.female);
b1=findViewById(R.id.submit);
b1.setOnClickListener(new View.OnClickListener()
@Override
Page No: 18 | 48
MainActivity.java
(Cosidering appropriate layout file with 2 edit text boxes namely for phone
number,
message and a button for sending sms)
package com.example.testreceivesms;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
Page No: 19 | 48
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEND_SMS)!=
PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(MainActivity.this,new
String[]{Manifest.permission.SEND_SMS},100);
}
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
String phno= et1.getText().toString();
String msg=et2.getText().toString();
SmsManager smsManager= SmsManager.getDefault();
smsManager.sendTextMessage(phno,null,msg,null,null);
Page No: 20 | 48
});
}
@Override
protected void onStart() {
super.onStart();
IntentFilter filter=new
IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(sms,filter);
}
@Override
protected void onStop() {
super.onStop();
unregisterReceiver(sms);
}
}
SmsReceiver.java
package com.example.testreceivesms;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
Page No: 21 | 48
Page No: 22 | 48
onCreate (): Called then the activity is created. Used to initialize the activity, for
example create the user interface.
onStart ():called when activity is becoming visible to the user.
onResume (): Called if the activity get visible again and the user starts interacting
with the activity again. Used to initialize fields, register listeners, bind
to services, etc.
onPause (): Called once another activity gets into the foreground. Always called
before the activity is not visible anymore. Used to release resources or save
application data. For example you unregister listeners, intent receivers, unbind from
services or remove system service listeners.
onStop (): Called once the activity is no longer visible. Time or CPU intensive
shutdown operations, such as writing information to a database should be down in
the onStop() method. This method is guaranteed to be called as of API 11.
onDestroy (): called before the activity is destroyed.
Page No: 23 | 48
Ans Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and Any appropriate UI
fill all required details to create a new project. controls and layout
with correct
Step 2 − Add the following code to res/layout/activity_main.xml. activity_main.xml
file-3 M
<?xml version="1.0" encoding="utf-8"?>
MainActivity.java
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
file-3 M
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="4dp">
<TextView
android:id="@+id/textResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="70dp"
android:background="#008080"
android:padding="5dp"
android:text="Code4Example"
android:textColor="#fff"
android:textSize="24sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editNum1"
android:inputType="number"
android:layout_width="match_parent"
Page No: 24 | 48
Page No: 25 | 48
Page No: 26 | 48
editNum1= findViewById(R.id.editNum1);
editNum2= findViewById(R.id.editNum2);
textResult= findViewById(R.id.textResult);
}
public void btnAdd(View view){
double num1 = Double.parseDouble(editNum1.getText().toString());
double num2 = Double.parseDouble(editNum2.getText().toString());
double result = num1 + num2;
textResult.setText(Double.toString(result));
}
public void btnSub(View view){
double num1 = Double.parseDouble(editNum1.getText().toString());
double num2 = Double.parseDouble(editNum2.getText().toString());
double result = num1 - num2;
textResult.setText(Double.toString(result));
}
public void btnMul(View view){
double num1 = Double.parseDouble(editNum1.getText().toString());
double num2 = Double.parseDouble(editNum2.getText().toString());
double result = num1 * num2;
textResult.setText(Double.toString(result));
}
public void btnDiv(View view){
Page No: 27 | 48
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/google_maps_key" />
<activity
android:name=".MapsActivity"
android:label="@string/title_activity_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Page No: 29 | 48
package example.com.mapexample;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
public class MapsActivity extends FragmentActivity implements OnMapReadyC
allback{
private GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used
.
Page No: 30 | 48
android:paddingTop="@dimen/activity_vertical_margin"
Page No: 31 | 48
tools:context=".MainActivity"
android:transitionGroup="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_below="@+id/textview"
android:layout_centerHorizontal="true"
android:textColor="#ff7aff24"
android:textSize="35dp" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/textView"
android:layout_marginTop="46dp"
android:text="thanks"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:textColor="#ff7aff10"
android:textColorHint="#ffff23d1" />
<Button
android:layout_width="wrap_content"
Page No: 32 | 48
android:id="@+id/button"
android:layout_below="@+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp"
android:textSize="15dp" />
</RelativeLayout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
<TextView
android:padding="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextToSpeechDemo"
android:gravity="center"
android:textSize="16sp"
android:textStyle="bold"
android:textColor="@android:color/white"/>
</LinearLayout>
Page No: 33 | 48
package com.example.texttospeech.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.Locale;
import android.widget.Toast;
TextToSpeech t1;
EditText ed1;
Button b1;
@Override
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CU
STOM);
getSupportActionBar().setCustomView(R.layout.toolbar_title_layout);
setContentView(R.layout.activity_main);
ed1=(EditText)findViewById(R.id.editText);
b1=(Button)findViewById(R.id.button);
@Override
Page No: 34 | 48
t1.setLanguage(Locale.UK);
});
b1.setOnClickListener(new View.OnClickListener() {
@Override
Toast.makeText(getApplicationContext(),
toSpeak,Toast.LENGTH_SHORT).show();
});
if(t1 !=null){
t1.stop();
t1.shutdown();
super.onPause();
Page No: 35 | 48
Page No: 36 | 48
DBHandler.java file
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHandler extends SQLiteOpenHelper {
// creating a constant variables for our database.
// below variable is for our database name.
private static final String DB_NAME = "empdb";
Page No: 37 | 48
Page No: 38 | 48
Page No: 39 | 48
// below line is to add on click listener for our add emp button.
addCourseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Page No: 40 | 48
Page No: 41 | 48
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_emp);
Page No: 42 | 48
// displaying a toast message that our employee database has been updated.
Toast.makeText(UpdateempActivity.this, "Employee Record Updated..",
Toast.LENGTH_SHORT).show();
Page No: 43 | 48
1)Preparing your app for release is a multistep process involving the following tasks:
2) Signing of Application
Application signing allows developers to identify the author of the
application and to update their application without creating complicated
interfaces and permissions.
Every application that is run on the Android platform must be signed by the
developer.
Page No: 44 | 48
1)App signing
All APKs must be signed with a certificate whose private key is held by their
developer. The certificate does not need to be signed by a certificate authority. It's
allowable, and typical, for Android apps to use self-signed certificates. The purpose
of certificates in Android is to distinguish app authors. This lets the system grant or
deny apps access to signature-level permissions and grant or deny an app's request to
be given the same Linux identity as another app.
Starting in Android 12 (API level 31), the knownCerts attribute for signature-level
permissions lets you refer to the digests of known signing certificates at declaration
time.
You can declare the knownCerts attribute and use the knownSigner flag in your
app's protectionLevel attribute for a particular signature-level permission. Then, the
system grants that permission to a requesting app if any signer in the requesting app's
signing lineage, including the current signer, matches one of the digests that's
declared with the permission in the knownCerts attribute.
The knownSigner flag lets devices and apps grant signature permissions to other
apps without having to sign the apps at the time of device manufacturing and
shipment.
At install time, Android gives each package a distinct Linux user ID. The identity
remains constant for the duration of the package's life on that device. On a different
device, the same package might have a different UID—what matters is that each
package has a distinct UID on a given device.
Because security enforcement happens at the process level, the code of any two
Page No: 45 | 48
Any data stored by an app is assigned that app's user ID and isn't normally accessible
to other packages.
For example, an app that needs to control which other apps can start one of its
activities can declare a permission for this operation as follows:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp" >
<permission
android:name="com.example.myapp.permission.DEADLY_ACTIVITY"
android:label="@string/permlab_deadlyActivity"
android:description="@string/permdesc_deadlyActivity"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" />
...
</manifest>
c) Develop a program to TURN ON and OFF bluetooth. 6M
Write .java file and permission tags.
Ans Code of MainActivity.java AndroidManifest.x
ml file-3 M
package com.example.bluetooth.myapplication;
MainActivity.java
import android.app.Activity; file-3 M
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
Page No: 46 | 48
b1 = (Button) findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
b4=(Button)findViewById(R.id.button4);
BA = BluetoothAdapter.getDefaultAdapter();
lv = (ListView)findViewById(R.id.listView);
}
Page No: 47 | 48
lv.setAdapter(adapter);
}
}
Permission Tags
AndroidManifest.xml file
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bluetooth.myapplication" >
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
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>
Page No: 48 | 48
Ans Explanation 2 M
Page No: 1 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• Users buy devices and applications
b) Define Emulator. 2M
Ans An Android emulator is a tool that creates virtual Android devices on your computer. Correct
The emulator lets you prototype, develop and test Android applications without using Definition 2 M
a physical device
• The application layer runs within the Android run time using the classes and
services made available from the application framework.
Page No: 3 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
2. Application Framework:
• It basically provides the services through which we can create the particular
class and make that class helpful for the Applications creation.
Page No: 4 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
internal part and it contains a components like core libraries and the Dalvik
virtual machine.
• The Android run time is the engine that powers our applications along with the
libraries and it forms the basis for the application framework.
• It is specially designed and optimized for android to ensure that a device can
run multiple instances efficiently. It relies on the Linux kernel for threading
and low-level memory
• management.
• The core libraries in android runtime will enable us to implement an android
applications using standard JAVA programming language.
4. Platform Libraries:
• The Platform Libraries includes various C/C++ core libraries and Java based
libraries such as SSL,libc, Graphics, SQLite, Webkit, Media, Surface Manger,
OpenGL etc. to provide a support for android development.
5. Linux Kernel:
• Linux Kernel is a bottom layer and heart of the android architecture. It is heart
of Android architecture that exists at the root of android architecture and
contains all the low-level device drivers for the various hardware components
of an Android device.
• The Linux Kernel will provide an abstraction layer between the device
hardware and the remainder of the stack. It is responsible for memory
management, power management, device management, resource access, etc.
Ans A RelativeLayout is a type of ViewGroup that allows you to position its child views Explanation 2
relative to each other or to the parent container. This layout is powerful because it lets M,
you align views based on rules such as being above, below, to the left, to the right, or Example 2 M
(Consider any
centered relative to other views or the parent layout.
suitable
example)
Page No: 5 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Attributes Used in RelativeLayout:
• android:layout_alignParentLeft or android:layout_alignParentStart:
Aligns the view to the left or start of the parent.
• android:layout_alignParentRight or android:layout_alignParentEnd:
Aligns the view to the right or end of the parent.
Example of RelativeLayout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, RelativeLayout!"
android:textSize="20sp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<Button
Page No: 6 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me"
android:layout_below="@id/textView1"
android:layout_centerHorizontal="true"/>
<ImageView
android:id="@+id/imageView1"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/ic_launcher_foreground"
android:layout_below="@id/button1"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/formTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Page No: 7 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:text="Student Registration Form"
android:textSize="24sp"
android:textColor="#000000"
android:layout_gravity="center"
android:layout_marginBottom="20dp"/>
<TextView
android:id="@+id/labelName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Full Name:"
android:textSize="16sp"
android:layout_marginBottom="8dp"/>
<EditText
android:id="@+id/etName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:layout_marginBottom="16dp"/>
<TextView
android:id="@+id/labelEmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Email Address:"
Page No: 8 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:textSize="16sp"
android:layout_marginBottom="8dp"/>
<EditText
android:id="@+id/etEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Email"
android:inputType="textEmailAddress"
android:layout_marginBottom="16dp"/>
<TextView
android:id="@+id/labelGender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gender:"
android:textSize="16sp"
android:layout_marginBottom="8dp"/>
<RadioGroup
android:id="@+id/radioGroupGender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="16dp">
Page No: 9 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<RadioButton
android:id="@+id/rbMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Male"
android:layout_marginEnd="16dp"/>
<RadioButton
android:id="@+id/rbFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:layout_marginEnd="16dp"/>
<RadioButton
android:id="@+id/rbOther"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Other"/>
</RadioGroup>
<TextView
android:id="@+id/labelCourse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Course:"
Page No: 10 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:textSize="16sp"
android:layout_marginBottom="8dp"/>
<Spinner
android:id="@+id/spinnerCourse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp" />
<Button
android:id="@+id/btnSubmit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Submit"
android:textSize="18sp"
android:layout_marginTop="16dp" />
</LinearLayout>
• You’ll need to pay a one-time registration fee of $25 using your international
credit or debit card. It can take up to 48 hours for your registration to be fully
processed.
Step 2: Plan to Sell? Link Your Merchant Account
• If you want to publish a paid app or plan to sell in-app purchases, you need to
Page No: 11 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
create a payments center profile, i.e. a merchant account.
• A merchant account will let you manage your app sales and monthly payouts,
as well as analyze your sales reports right in your Play Console.
• Before you can publish your app, you need to prepare its store listing. These
are all the details that will show up to customers on your app’s listing on
Google Play. You not necessarily complete it at once , you can always save a
draft and revisit it later when you’re ready to publish.
• The information required for your store listing is divided into several
categories such as Product Details containing title, short and full description of
the app, Your app’s title and description should be written with a great user
experience in mind. Use the right keywords, but don’t overdo it. Make sure
your app doesn’t come across as spam-y or promotional, or it will risk getting
suspended on the Play Store.
• Graphic Assets where you can add screenshots, images, videos, promotional
graphics, and icons that showcase your app’s features and functionality.
• Finally upload your app, by uploading APK file. Before you upload APK, you
need to create an app release. You need to select the type of release you want
to upload your first app version to.
• You can choose between an internal test, a closed test, an open test, and a
production release. The first three releases allow you to test out your app
among a select group of users before you make it go live for everyone to
access.
• This is a safer option because you can analyze the test results and optimize or
Page No: 12 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
fix your app accordingly if you need to before rolling it out to all users.
• Once you create a production release, your uploaded app version will become
accessible to everyone in the countries you choose to distribute it in and click
on ‘Create release.’
• If you don’t assign a rating to your app, it will be listed as ‘Unrated’. Apps that
are ‘Unrated’ may get removed from Google Play.
• To rate your app, you need to fill out a content rating questionnaire An
appropriate content rating will also help you get to the right audience, which
will eventually improve your engagement rates.
• Before you can fill out the details required in this step, you need to determine
your app’s monetization strategy. Once you know how your app is going to
make money, you can go ahead and set up your app as free or paid.
• You can always change your app from paid to free later, but you cannot change
a free app to paid. For that, you’ll need to create a new app and set its price.
• The final step involves reviewing and rolling out your release after making sure
you’ve taken care of everything else.
• Before you review and rollout your release, make sure the store listing, content
rating, and pricing and distribution sections of your app each have a green
check mark next to them.
• Once you’re sure about the correctness of the details, select your app and
navigate to ‘Release management’ – ‘App releases.’
• You can always opt for reviews by clicking on ‘Review’ to be taken to the
‘Review and rollout release’ screen. Here, you can see if there are any issues or
warnings you might have missed out on.
• Finally, select ‘Confirm rollout.’ This will also publish your app to all users in
your target countries on Google Play.
Page No: 13 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Ans 4 correct points-
4M
DVM JVM
It is Register based which is designed to It is Stack based.
run on low memory.
DVM uses its own byte code and runs JVM uses java byte code and runs
the “.Dex” file. From Android 2.2 SDK “.class” file having JIT (Just In Time).
Dalvik has got a Just in Time compiler
DVM has been designed so that a device A single instance of JVM is shared with
can run multiple instances of the VM multiple applications.
efficiently. Applications are given their
own instance
DVM supports the Android operating JVM supports multiple operating
system only. systems.
There is a constant pool for every It has a constant pool for every class.
application.
Here the executable is APK. Here the executable is JAR
b) Describe sensors use in Android. 4M
Ans Most of the android devices have built-in sensors that measure motion, orientation, and 1 M for each
various environmental condition. The android platform supports three broad categories sensor’s use
of sensors.
1. Motion Sensors
These are used to measure acceleration forces and rotational forces along with three
axes.
2. Environmental sensors
These are used to measure the environmental changes such as temperature, humidity
etc.
3. Position sensors
These are used to measure the physical position of device.
Example:
TYPE_ACCELE_ROMETER
TYPE_GRAVITY
TYPE_LIGHT
TYPE_ORIENTATION
TYPE_PRESSURE
Some of the sensors are hardware based and some are software based sensors.
Whatever the sensor is, android allows us to get the raw data from these sensors and
use it in our application.
Page No: 14 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Android provides SensorManager and Sensor classes to use the sensors in our
application.
1) SensorManager class
The android.hardware.SensorManager class provides methods :
o to get sensor instance,
o to access and list sensors,
o to register and unregister sensor listeners etc.
You can get the instance of SensorManager by calling the method getSystemService()
and passing the SENSOR_SERVICE constant in it.
SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);
2) Sensor class
The android.hardware.Sensor class provides methods to get information of the sensor
such as sensor name, sensor type, sensor resolution, sensor type etc.
3) SensorEvent class
Its instance is created by the system. It provides information about the sensor.
4) SensorEventListener interface
It provides two call back methods to get information when sensor values (x,y and z)
change or sensor accuracy changes.
Page No: 15 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content" />
</LinearLayout>
2. Java Code (MainActivity.java)
package com.example.listviewdemo;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
String[] items = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"};
ArrayAdapter<String> adapter = new ArrayAdapter<>(
this,
android.R.layout.simple_list_item_1,
items
);
listView.setAdapter(adapter);
}
}
Page No: 16 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
2. Real-Time Logs:
It displays real-time application logs, allowing developers to track events, actions, and
method calls while the app is running.
3. Performance Monitoring:
Helps measure memory usage, CPU activity, and network operations to optimize the
app’s performance.
4. Debugging UI Issues:
The console highlights UI-related errors like invalid layouts or missing resources,
helping ensure proper user interface design.
5. Testing and Feedback:
Supports testing by showing outputs of log messages (Log.d, Log.e, etc.), making it
easier to verify functionality and behavior during development.
Page No: 17 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
b) Double-click the downloaded file.
c) If you see a User Account Control dialog about allowing the installation to
make changes to your computer, click Yes to confirm the installation.
d) Click Next to start the installation.
e) Accept the default installation settings for all steps.
f) Click finish when installation is done.
• EditText 2 M for
Example code
• Button XML or Java
Code
• ImageView
• ListView
• CheckBox
• RadioButton
• ProgressBar
Example Code:
XML Layout (activity_main.xml):
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me" />
Page No: 18 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
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);
Button myButton = findViewById(R.id.myButton);
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Button Clicked!",
Toast.LENGTH_SHORT).show();
}
});
}
}
* Note: Consider any suitable example.
Page No: 19 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Bluetooth"
android:id="@+id/text"
android:textSize="20dp"
android:gravity="center"/>
<Button
android:id="@+id/on"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:layout_marginTop="62dp"
android:text="ON" />
<Button
android:id="@+id/discoverable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/on"
android:layout_marginTop="74dp"
android:text="DISCOVERABLE" />
<Button
android:id="@+id/off"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/discoverable"
android:layout_marginTop="104dp"
android:text="OFF" />
</RelativeLayout>
Menifest File:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.ifcdiv">
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
Java File
package com.example.ifcdiv;
import androidx.appcompat.app.AppCompatActivity;
import android.bluetooth.BluetoothAdapter;
import android.content.Intent;
import android.os.Bundle;
Page No: 20 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.view.View;
import android.widget.Button;
on=findViewById(R.id.on);
off=findViewById(R.id.off);
dis=findViewById(R.id.discoverable);
BluetoothAdapter bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
on.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!bluetoothAdapter.isEnabled())
{
Intent i=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(i,REQUEST_ENABLE);
}
}
});
dis.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!bluetoothAdapter.isDiscovering())
{
Intent i=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(i,REQUEST_DIS);
}
}
});
off.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bluetoothAdapter.disable();
}
});
}
}
Page No: 21 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
d) Explain Geocoding and reverse geocoding in android with example. 4M
Ans Geocoding: Converts an address (like "123 Main St, Mumbai") into geographical 3 M for Code,
coordinates (latitude and longitude). 1 M for
Permissions
Reverse Geocoding: Converts geographical coordinates into a readable address (like
"123 Main St, Mumbai").
Example: Geocoding and Reverse Geocoding
1. Add Permissions
Include location permissions in the AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
/>
2. Layout File (res/layout/activity_main.xml)
A layout with a button and two TextView elements to show results.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<Button
android:id="@+id/btnGeocode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Get Coordinates from Address" />
<TextView
android:id="@+id/tvGeocodeResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp" />
<Button
Page No: 22 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/btnReverseGeocode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Get Address from Coordinates"
android:layout_marginTop="20dp" />
<TextView
android:id="@+id/tvReverseGeocodeResult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp" />
</LinearLayout>
3. Java Code (MainActivity.java)
Using Geocoder to perform geocoding and reverse geocoding.
package com.example.geocodingdemo;
import android.location.Address;
import android.location.Geocoder;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Page No: 23 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
setContentView(R.layout.activity_main);
Button btnGeocode = findViewById(R.id.btnGeocode);
TextView tvGeocodeResult = findViewById(R.id.tvGeocodeResult);
Button btnReverseGeocode = findViewById(R.id.btnReverseGeocode);
TextView tvReverseGeocodeResult =
findViewById(R.id.tvReverseGeocodeResult);
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
// Geocoding: Address to Coordinates
btnGeocode.setOnClickListener(v -> {
String address = "123 Main St, Mumbai";
try {
List<Address> addresses = geocoder.getFromLocationName(address, 1);
if (addresses != null && !addresses.isEmpty()) {
Address location = addresses.get(0);
tvGeocodeResult.setText("Coordinates: " + location.getLatitude() + ", " +
location.getLongitude());
} else {
tvGeocodeResult.setText("Address not found");
}
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Error: " + e.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
// Reverse Geocoding: Coordinates to Address
btnReverseGeocode.setOnClickListener(v -> {
double latitude = 19.0760; // Example: Mumbai's latitude
double longitude = 72.8777; // Example: Mumbai's longitude
Page No: 24 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
try {
List<Address> addresses = geocoder.getFromLocation(latitude, longitude,
1);
if (addresses != null && !addresses.isEmpty()) {
Address address = addresses.get(0);
tvReverseGeocodeResult.setText("Address: " +
address.getAddressLine(0));
} else {
tvReverseGeocodeResult.setText("Address not found");
}
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this, "Error: " + e.getMessage(),
Toast.LENGTH_SHORT).show();
}
});
}
}
Ans A service is an application component which runs without direst interaction with the 1 M for diagram,
user in the background.
3 M for
● Services are used for repetitive and potentially long running operations, i.e., Internet Explanation
downloads, checking for new data, data processing, updating content providers and the
like.
● Service can either be started or bound we just need to call either startService() or
bindService() from any of our android components. Based on how our service was
started it will either be “started” or “bound”
Service Lifecycle
1. Started
a. A service is started when an application component, such as an activity, starts it by
calling startService().
b. Now the service can run in the background indefinitely, even if the component that
Page No: 25 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
started it is destroyed.
2. Bound
a. A service is bound when an application component binds to it by calling
bindService().
b. A bound service offers a client-server interface that allows components to interact
with the service, send requests, get results, and even do so across processes with
InterProcess Communication (IPC).
c. Like any other components service also has callback methods. These will be
invoked while the service is running to inform the application of its state.
Implementing these in our custom service would help you in performing the right
operation in the right state.
d. There is always only a single instance of service running in the app. If you are
calling startService() for a single service multiple times in our application it just
invokes the onStartCommand() on that service. Neither is the service restarted
Page No: 26 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
multiple times nor are its multiple instances created
1. onCreate():
This is the first callback which will be invoked when any component starts the
service. If the same service is called again while it is still running this method Won’t
be invoked. Ideally one time setup and intializing should be done in this callback.
2. onStartCommand() /startSetvice()
This callback is invoked when service is started by any component by calling
startService(). It basically indicates that the service has started and can now run
indefinetly.
3. onBind()
To provide binding for a service, you must implement the onBind() callback method.
This method returns an IBinder object that defines the programming interface that
clients can use to interact with the service.
4. onUnbind()
This is invoked when all the clients are disconnected from the service.
5. onRebind()
This is invoked when new clients are connected to the service. It is called after
onRebind
6. onDestroy()
This is a final clean up call from the system. This is invoked just before the service is
being destroyed.
a) Develop the android application for student marksheets using table layout atleast 6M
five subject marks with total and percentage. (Write both Java and xml code)
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
Page No: 27 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Student Marksheet"
android:textSize="24sp"
android:layout_gravity="center"
android:marginBottom="20dp" />
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:padding="8dp">
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject 1"
android:paddingEnd="8dp"/>
<EditText
android:id="@+id/subject1_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
Page No: 28 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:hint="Marks"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject 2"
android:paddingEnd="8dp"/>
<EditText
android:id="@+id/subject2_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
android:hint="Marks"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject 3"
android:paddingEnd="8dp"/>
<EditText
Page No: 29 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/subject3_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
android:hint="Marks"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject 4"
android:paddingEnd="8dp"/>
<EditText
android:id="@+id/subject4_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
android:hint="Marks"/>
</TableRow>
<TableRow>
Page No: 30 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subject 5"
android:paddingEnd="8dp"/>
<EditText
android:id="@+id/subject5_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:inputType="number"
android:hint="Marks"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Total Marks"
android:paddingEnd="8dp"/>
<TextView
android:id="@+id/total_marks"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
Page No: 31 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:text="0"
android:gravity="end"/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Percentage"
android:paddingEnd="8dp"/>
<TextView
android:id="@+id/percentage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="0%"
android:gravity="end"/>
</TableRow>
</TableLayout>
<Button
android:id="@+id/submit_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
Page No: 32 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_gravity="center"/>
</LinearLayout>
Java Code
package com.example.studentmarksheet;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
Button calculateButton;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Page No: 33 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
subject1 = findViewById(R.id.subject1_marks);
subject2 = findViewById(R.id.subject2_marks);
subject3 = findViewById(R.id.subject3_marks);
subject4 = findViewById(R.id.subject4_marks);
subject5 = findViewById(R.id.subject5_marks);
totalMarks = findViewById(R.id.total_marks);
percentage = findViewById(R.id.percentage);
calculateButton = findViewById(R.id.submit_button);
calculateButton.setOnClickListener(new View.OnClickListener() {
@Override
try {
Page No: 34 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
totalMarks.setText(String.valueOf(total));
percentage.setText(String.format("%.2f%%", percentageValue));
} catch (NumberFormatException e) {
});
b) Develop an application to store student details like roll no, name, marks and 6M
retrieve student information using roll no. in SQLite database. (Write java and
xml file).
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<EditText
android:id="@+id/editRollNo"
android:layout_width="match_parent"
Page No: 35 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content"
android:hint="Roll No"
android:inputType="number" />
<EditText
android:id="@+id/editName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Name"
android:inputType="text" />
<EditText
android:id="@+id/editMarks"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Marks"
android:inputType="number" />
<Button
android:id="@+id/saveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<EditText
android:id="@+id/searchRollNo"
Page No: 36 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
<Button
android:id="@+id/searchButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<TextView
android:id="@+id/studentInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp"
android:gravity="center"
android:layout_marginTop="20dp" />
</LinearLayout>
Java Code
package com.example.studentinfo;
import android.content.ContentValues;
import android.database.Cursor;
Page No: 37 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
// UI components
TextView studentInfo;
DBHelper dbHelper;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI components
editRollNo = findViewById(R.id.editRollNo);
Page No: 38 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
editName = findViewById(R.id.editName);
editMarks = findViewById(R.id.editMarks);
searchRollNo = findViewById(R.id.searchRollNo);
saveButton = findViewById(R.id.saveButton);
searchButton = findViewById(R.id.searchButton);
studentInfo = findViewById(R.id.studentInfo);
// Initialize DB helper
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
saveStudentInfo();
});
searchButton.setOnClickListener(new View.OnClickListener() {
@Override
searchStudentInfo();
});
Page No: 39 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
} else {
SQLiteDatabase db = dbHelper.getWritableDatabase();
values.put(DBHelper.COLUMN_ROLL_NO, rollNo);
values.put(DBHelper.COLUMN_NAME, name);
values.put(DBHelper.COLUMN_MARKS, marks);
if (result == -1) {
} else {
clearFields();
Page No: 40 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
if (rollNo.isEmpty()) {
} else {
SQLiteDatabase db = dbHelper.getReadableDatabase();
String[] projection = {
DBHelper.COLUMN_ROLL_NO,
DBHelper.COLUMN_NAME,
DBHelper.COLUMN_MARKS
};
String name =
cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.COLUMN_NAME));
Page No: 41 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
String marks =
cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.COLUMN_MARKS));
cursor.close();
} else {
editRollNo.setText("");
editName.setText("");
editMarks.setText("");
searchRollNo.setText("");
Ans GridView just works like ListView, The only difference is that GridView is used to Grid view
display grid of View objects. definition 1 M
The view objects can be a Text view, an Image view or a view group which has both Example of grid
an image and some text. view 2 M
Vertical and horizontal spacing between every single items of gridView can be set Image view
by verticalSpacing and horizontalSpacing. definition 1 M
Example of
GridView Example image view 2 M
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
Page No: 42 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
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="#FFEB3B"
tools:context="com.example.android.studytonightandroid.MainActivity">
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:numColumns="2"/>
</android.support.constraint.ConstraintLayout>
Now we will create a new XML file, with name grid_item.xml in the layout folder,
and add a TextView
Java File
public class MainActivity extends AppCompatActivity
{
GridView gridView;
TextView textView;
String[] carBrands = { "Ferrari", "McLaren", "Jaguar", "Skoda", "Suzuki",
Page No: 43 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
"Hyundai", "Toyota", "Renault", "Mercedes", "BMW", "Ford",
"Honda", "Chevrolet", "Volkswagon" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
gridView = (GridView)findViewById(R.id.gridView);
textView = (TextView)findViewById(R.id.textView);
listView.setAdapter(adapter);
} }
ImageView
<ImageView
android:id="@+id/simpleImageView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#000"
android:src="@drawable/lion"
android:padding="30dp"/>
Ans DatePicker is used to display date selection widget in android application. It can be Date picker
used in either spinner mode or calendar mode ( date picker). explanation 2 M
Xml file 2 M
Java file 2 M
Page No: 44 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
DatePicker Properties:
DatePickerMode :
Value can be spinner or calendar. If set to calendar, it will display a calendar which let
you choose date. If set to spinner, it will display a spinner to let you choose date.
XML file:
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<DatePicker
android:id="@+id/simpleDatePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#150"
android:datePickerMode="spinner" />
<Button
android:id="@+id/submitButton"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/simpleDatePicker"
Page No: 45 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:background="#150"
android:text="SUBMIT"
android:textColor="#fff"
android:textSize="20sp"
android:textStyle="bold" />
</RelativeLayout>
Java File:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.Button;
import android.widget.Toast;
DatePicker simpleDatePicker;
Button submit;
@Override
super.onCreate(savedInstanceState);
Page No: 46 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
setContentView(R.layout.activity_main);
submit.setOnClickListener(new View.OnClickListener() {
@Override
});
b) Write a program to find the direction from ·user's current location to MSBTE, 6M
Bandra (Write only java and manifest file) )
Page No: 47 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
MainActivity.java
import android.Manifest;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.net.Uri;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
Page No: 48 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.DexterError;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.PermissionRequestErrorListener;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import java.util.List;
public class MainActivity extends AppCompatActivity implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
com.google.android.gms.location.LocationListener , OnMapReadyCallback,
TaskLoadedCallback{
//variables for map and route
private GoogleMap mMap;
private MarkerOptions place1, place2;
Button getDirection;
private Polyline currentPolyline;
private MapFragment mapFragment;
private boolean isFirstTime = true;
//variables for current location
private static final String TAG = "MainActivity";
private TextView tvLocation;
private GoogleApiClient mGoogleApiClient;
private Location mLocation;
private LocationRequest mLocationRequest;
private com.google.android.gms.location.LocationListener listener;
Page No: 49 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
private long UPDATE_INTERVAL = 2 * 1000; /* 10 secs */
private long FASTEST_INTERVAL = 2000; /* 2 sec */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//code for getting current location
requestMultiplePermissions();
tvLocation = (TextView) findViewById((R.id.tv));
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
} //code for drawing route
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.clear();
Log.d("mylog", "Added Markers");
mMap.addMarker(place1);
mMap.addMarker(place2);
CameraPosition googlePlex = CameraPosition.builder()
.target(new LatLng(22.7739,71.6673))
.zoom(7)
.bearing(0)
.tilt(45)
.build();
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(googlePlex),
Page No: 50 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
5000,
null);
}
private String getUrl(LatLng origin, LatLng dest, String directionMode) {
// Origin of route
String str_origin = "origin=" + origin.latitude + "," + origin.longitude;
// Destination of route
String str_dest = "destination=" + dest.latitude + "," + dest.longitude;
// Mode
String mode = "mode=" + directionMode;
// Building the parameters to the web service
String parameters = str_origin + "&" + str_dest + "&" + mode;
// Output format
String output = "json";
// Building the url to the web service
String url = "https://maps.googleapis.com/maps/api/directions/" + output + "?" +
parameters + "&key=" + getString(R.string.google_maps_key);
return url;
}
@Override
public void onTaskDone(Object... values) {
if (currentPolyline != null)
currentPolyline.remove();
currentPolyline = mMap.addPolyline((PolylineOptions) values[0]);
}
//runtime permission method
private void requestMultiplePermissions(){
Dexter.withActivity(this)
Page No: 51 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
withPermissions(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION )
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
// check if all permissions are granted
if (report.areAllPermissionsGranted()) {
Toast.makeText(getApplicationContext(), "All permissions are granted by
user!", Toast.LENGTH_SHORT).show();
}
// check for permanent denial of any permission
if (report.isAnyPermissionPermanentlyDenied()) {
// show alert dialog navigating to Settings
openSettingsDialog();
}
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest>
permissions, PermissionToken token) {
token.continuePermissionRequest();
}
}).
withErrorListener(new PermissionRequestErrorListener() {
@Override
public void onError(DexterError error) {
Toast.makeText(getApplicationContext(), "Some Error! ",
Toast.LENGTH_SHORT).show();
Page No: 52 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
})
.onSameThread()
.check();
}
private void openSettingsDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Required Permissions");
builder.setMessage("This app require permission to use awesome feature. Grant them
in
app settings.");
builder.setPositiveButton("Take Me To SETTINGS", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
Intent intent = new
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivityForResult(intent, 101);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
Page No: 53 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
builder.show();
}
//methods for getting current location
@Override
public void onConnected(Bundle bundle) {
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
return;
}
startLocationUpdates();
mLocation =
LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if(mLocation == null){
startLocationUpdates();
}
if (mLocation != null) {
// mLatitudeTextView.setText(String.valueOf(mLocation.getLatitude()));
//mLongitudeTextView.setText(String.valueOf(mLocation.getLongitude()));
} else {
Toast.makeText(this, "Location not Detected", Toast.LENGTH_SHORT).show();
}}
@Override
public void onConnectionSuspended(int i) {
Log.i(TAG, "Connection Suspended");
mGoogleApiClient.connect();
Page No: 54 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.i(TAG, "Connection failed. Error: " + connectionResult.getErrorCode());
}
@Override
protected void onStart() {
super.onStart();
if (mGoogleApiClient != null) { mGoogleApiClient.connect();
}}
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}}
protected void startLocationUpdates() {
// Create the location request
mLocationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(UPDATE_INTERVAL)
.setFastestInterval(FASTEST_INTERVAL);
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
return;
Page No: 55 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
}
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
mLocationRequest, this);
}
@Override
public void onLocationChanged(Location location) {
String msg = "Updated Location: " +
Double.toString(location.getLatitude()) + "," +
Double.toString(location.getLongitude());
tvLocation.setText(String.valueOf(location.getLatitude() +"
"+String.valueOf(location.getLongitude())));
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
if(isFirstTime){
//code to draw path on map
getDirection = findViewById(R.id.btnGetDirection);
getDirection.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new FetchURL(MainActivity.this).execute(getUrl(place1.getPosition(),
place2.getPosition(), "driving"), "driving");
}
});
place1 = new MarkerOptions().position(new LatLng(location.getLatitude(),
location.getLongitude())).title("Location 1");
place2 = new MarkerOptions().position(new
LatLng(19.021824,72.8662016)).title("MSBTE");
mapFragment = (MapFragment)
getFragmentManager().findFragmentById(R.id.mapNearBy);
Page No: 56 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
mapFragment.getMapAsync(this);
isFirstTime = false;
} }}
Note: Imports are not required in coding.
c) Develop and application to send SMS (Design minimal UI as per your choice. 6M
Write XML ,Java and manifest file).
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send = findViewById(R.id.send);
msg = findViewById(R.id.sms);
phone = findViewById(R.id.phone);
requestMessage();
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Page No: 57 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
if(checkPermission()) {
sendSMS();
} else {
requestMessage();
}
}
});
}
sm = SmsManager.getDefault();
sm.sendTextMessage(PhoneText , null, MsgTxt,null,null);
Toast.makeText(MainActivity.this, "Message sent",
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(MainActivity.this, "Message not sent",
Toast.LENGTH_SHORT).show();
}
}
public boolean checkPermission(){
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS) ==
PackageManager.PERMISSION_GRANTED) {
return true;
} else return false;
}
}
AndroidManifest.xml:
o <uses-feature android:name="android.hardware.telephony" />
o <uses-permission
android:name="android.permission.SEND_SMS"/>
Page No: 58 | 58
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
SUMMER – 2024 EXAMINATION
Model Answer – Only for the Use of RAC Assessors
Q. Su Answer Marking
No b Scheme
. Q.
N.
Page No: 1 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
An Android emulator is a tool that creates virtual Android devices on your computer. The Correct
s emulator lets you prototype, develop and test Android applications without using a physical definition
device 2M
2)viewgroups
3)fragments
4)activity
An 1. android:textOff any 2
s 2. android:textOn attributes ,
3. android:id one
4. android:checked attribute
5. android:gravity for one M
6. android:textColor
7. android:textSize
8. android: textStyle
e) Define service in android operating system. 2M
An A service is an application component which runs without direct interaction with the user in Correct
s the background. Services are used for repetitive and potentially long running operations, i.e., definition
Internet downloads, checking for new data, data processing, updating content providers and 2M
the like.
An getMyLocation(): This method returns the currently displayed user location. One
s method for
moveCamera(CameraUpdate update): This method reposition the camera according to the 1M
instructions defined in the update.
Page No: 2 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
An Android is a new generation mobile OS which runs on Linux kernel. There are some Any four
s following points which describe why we use Android OS: points,
1. Desktop: The Android phone adds widgets to the desktop. The purpose for the widget, 4M
for
example, the Facebook widget allows us to update our facebook desktop. The people widget
allows us to make possible different actions for different contacts right from our desktop.
The
message widget allows us to immediately see our e-mail from the desktop.
2. Connectivity: On one page/desktop we could be able to have four connecting device tool
button like, Turn ON/OFF Bluetooth, Turn ON/OFF WiFi, Turn ON/OFF mobile network,
Turn On/Off GPS and so on. These buttons let us switch ON/OFF instantly which will help
us to conserve battery life.
3. Browser: The Android OS browser is one of the best browsers on the mobile market. It
generally loads pages faster than Safari or any other browser, has Flash support and simply
does everything a browser should do. For example, iPhone has Safari browser. It is stable,
has no Flash support, so we cannot watch Youtube videos or any related contents, it is not
flexible but monopolistic.
4. Open to Carrier: If we know Java programming language then we are open to Android
world.
5. Market: Android OS has an android market. The android apps are free and work as well.
6. Future: The future mobile phones are basically going to be smart phones.
7. Muti-Notification: Android phones have multi-notification system. With android the app
have access to the notification system and call all report.
8. Google Integration: The Android has inbuilt google support. For examle, Google Map,
G-Mail etc.
10. Endless Personalization: The Android cell phone allows to configuration their mobile
to look and behave exactly like they want.
b) Compare JVM and DVM. (any four points) 4M
An Any four
s JVM DVM points 4
M, 1 M for
one point)
Page No: 3 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
JVM supports multiple operating DVM supports only Android Operating
systems. System.
JVM forms separate classes in separate DVM forms multiple class in .dex byte
code file.
.class byte code files.
The executable format of JVM is JAR. The executable format of DVM is APK.
JVM has different constant pools. DVM has common constant pool.
It runs .class byte code directly. The .class byte codes are optimized to
.odex format before executing in DVM.
An Android is a multi-process system, in which each application (and parts of the system) runs correct
s in its own process. explanatio
n4M
Most security between applications and the system is enforced at the process level through
standard Linux facilities, such as user and group IDs that are assigned to applications.
The Android security model is primarily based on a sandbox and permission mechanism.
Each application is running in a specific Dalvik virtual machine with a unique user ID
assigned to it, which means the application code runs in isolation from the code of all others
applications. As a consequence, one application has not granted access to other applications’
files.
Android application has been signed with a certificate with a private key Know the owner of
the application is unique.
When an application is installed in The phone is assigned a user ID, thus avoiding it from
affecting it Other applications by creating a sandbox for it. This user ID is permanent on
which devices and applications with the same user ID are allowed to run in a single process.
This is a way to ensure that a malicious application has Can not access / compromise the data
of the genuine application.
Page No: 4 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
It is mandatory for an application to list all the resources it will Access during installation.
The purpose of a permission is to protect the privacy of an Android user. Android apps must
request permission to access sensitive user data (such as contacts and SMS), as well as certain
system features (such as camera and internet).
Permissions are divided into several protection levels. The protection level affects whether
runtime permission requests are required.
Android introduced shared user ID & permission to allow application components talk to
each other & enable application to access to critical system in Android devices.
Page No: 5 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
An Diagram
s 2M,
Explanati
on 2 M
onCreate (): Called then the activity is created. Used to initialize the activity, for example
create the user interface.
onResume (): Called if the activity get visible again and the user starts interacting with the
activity again. Used to initialize fields, register listeners, bind to services, etc.
onPause (): Called once another activity gets into the foreground. Always called before the
activity is not visible anymore. Used to release resources or save application data. For
Page No: 6 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
example you unregister listeners, intent receivers, unbind from services or remove system
service listeners.
onStop (): Called once the activity is no longer visible. Time or CPU intensive shutdown
operations, such as writing information to a database should be down in the onStop() method.
This method is guaranteed to be called as of API 11.
1. Activity States:
The Android OS uses a priority queue to assist in managing activities running on the device.
Based on the state a particular Android activity is in, it will be assigned a certain priority
within the OS. This priority system helps Android identify activities that are no longer in
use, allowing the OS to reclaim memory and resources. Fig. illustrates the states an activity
can go through, during its lifetime:
These states are often broken into three main teams as follows:
1. Active or Running:
Activities are thought of active or running if they're within the foreground, additionally
referred to as the top of the activity stack. this can be thought of the highets priority activity
within the Android Activity stack, and as such only be killed by the OS in extreme things,
like if the activity tries to use more memory than is available on the device as this might
cause the UI to become unresponsive.
2. Paused:
When the device goes to sleep, or an activity continues to be visible but partially hidden by
a new, non-full-sized or clear activity, the activity is taken into account paused. Paused
activities are still alive, that is, they maintain all state and member information, and stay
attached to the window manager. This can be thought of to be the second highest priority
activity within the android Activity stack and, as such, can solely be killed by the OS if
killing this activity can satisfy the resource requirement needed to keep the Active/Running
Activity stable and responsive.
3. Stopped:
Activities that are utterly obscured by another activity are thought of stopped or within the
background. Stopped activities still try and retain their state and member info for as long as
possible but stopped activities are thought of to be loweat priority of the three states and, as
such, the OS can kill activities during this state initial to satisfy the resource needs of higher
priority activities.
Page No: 7 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
We need to install two packages:
1. Android Studio (IDE), which is an Integrated Development Environment (IDE)
2. Android SDK (Software Development Kit) for developing and running Android apps.
An ScrollView Explain:
s 1M
ScrollView is used to scroll the child elements of palette inside ScrollView. Android
supports vertical scroll view as default scroll view. Vertical ScrollView scrolls elements Attributes:
vertically.Android uses HorizontalScrollView for horizontal ScrollView. 1M
Example :
Attributes of ScrollView 2M
• android:fillViewport - Defines whether the scrollview should stretch its content to
fill the viewport.
• android:scrollbars - scrollbars attribute is used to show the scrollbars in horizontal
or vertical direction
• android:layout_width – Define the width
• android:layout_height – Define height
• android:id – Define id
Page No: 8 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
Example :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 1"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 2"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 3"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button 4"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
Page No: 9 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• SQLite is one way of storing app data. It is very lightweight database that comes
with Android OS.
• By default, Android comes with built-in SQLite Database support so we don’t need
to do any configurations.
• Android stores our database in a private disk space that’s associated with our
application and the data is secure, because by default this area is not accessible to
other applications.
• The package android.database.sqlite contains all the required APIs to use an SQLite
database in our android applications.
• In android, by using SQLiteOpenHelper class we can easily create the required
database and tables for our application. To use SQLiteOpenHelper, we need to
create a subclass that overrides the onCreate() and onUpgrade() call-back methods.
• SQLiteDatabase class contains methods to be performed on sqlite database such
as create, update, delete, select etc.
• We can insert data into the SQLite database by
passing ContentValues to insert() method.
• In android, we can read the data from the SQLite database using
the query() method in android applications.
We can update the data in the SQLite database using an update() method in android
applications.
An Google Play Developer Console is the platform that Google provides for Google Play and Any 4
s Android developers to publish their apps. points :
4M
● The Google Play Developer console allows app developers and marketers to better
understand how their apps are performing in terms of growth, technical performance such as
crashes or display issues, and financials.
● The console offers acquisition reports and detailed analysis which can help app devs find
out how well an app is really performing.
● The platform is important as it provides developers with access to first party data
(trustworthy information collected about an app’s audience that comes straight from Google
Play) that highlights the real performance of an app.
● It shows the number of impressions an app listing receives and the number of Installs an
app receives from different sources over time.
Page No: 10 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btnStartService"
android:layout_width="270dp"
android:layout_height="wrap_content"
android:text="Button 1"/>
<Button
android:id="@+id/btnStopService"
android:layout_width="270dp"
android:layout_height="wrap_content"
android:text="Button 2"/>
</LinearLayout>
2. Frame Layout
FrameLayout is designed to block out an area on the screen to display a single item.
Generally, FrameLayout should be used to hold a single child view, because it can be difficult
Page No: 11 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
to organize child views in a way that's scalable to different screen sizes without the children
overlapping each other.
We can add multiple children to a FrameLayout and control their position within the
FrameLayout by assigning gravity to each child, using the android:layout_gravity attribute.
Example:
<FrameLayout
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:id="@+id/table"
android:foregroundGravity="center"
android:foreground="#000"
tools:context=".MainActivity">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginBottom="10dp"
android:src="@mipmap/ic_launcher"
android:scaleType="centerCrop" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity=""
android:text="CENTER"/>
</FrameLayout>
Page No: 12 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
b) Write a program to create first display screen of any search engine using auto complete 4M
text view.
An <RelativeLayout Xml file:
s 1M
xmlns:android="http://schemas.android.com/apk/res/android"
Java file: 3
xmlns:app="http://schemas.android.com/apk/res-auto" M
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:layout_gravity="center">
<AutoCompleteTextView
android:id="@+id/txt"
android:textSize="50dp"
android:layout_centerHorizontal="true"
android:hint="Enter Text to search"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
package com.example.al_libaansapp;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
Page No: 13 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.view.View;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = findViewById(R.id.txt);
An • Android Fragment is the part of activity, it is also known as sub-activity. There can Define
s Fragment :
be more than one fragment in an activity.
2M
Page No: 14 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• We can create Fragments by extending Fragment class or by inserting a Fragment
into our Activity layout by declaring the Fragment in the activity’s layout file, as
a <fragment> element.
• We can only show a single Activity on the screen at one given point of time so we
were not able to divide the screen and control different parts separately. With the
help of Fragment’s we can divide the screens in different parts and controls
different parts separately.
Example:
activity_main.xml:
<fragment
android:id="@+id/Frag1"
android:layout_width="match_parent"
android:layout_height="400dp"
android:name="com.example.al_libaansapp"/>
<fragment
android:id="@+id/Frag2"
android:layout_width="match_parent"
android:layout_height="400dp"
android:name="com.example.al_libaansapp"/>
</LinearLayout>
- Fragment1.xml:
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Fragment 1"
android:textSize="40dp"
android:textColor="@color/white"
android:textStyle="bold" />
</FrameLayout>
- Fragment2.xml:
<FrameLayout
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:background="@color/purple"
tools:context=".Fragment2">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="Fragment 2"
android:textSize="40dp"
android:textStyle="bold"
android:textColor="@color/black"/>
</FrameLayout>
Page No: 16 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
An Each type :
s Types of permissions 1M
1. Install-time permissions
• Install-time permissions give your app limited access to restricted data, and they
allow your app to perform restricted actions that minimally affect the system or
other apps.
• When you declare install-time permissions in your app, the system automatically
grants your app the permissions when the user installs your app.
a) Normal permissions
• These permissions allow access to data and actions that extend beyond your app's
sandbox.
• However, the data and actions present very little risk to the user's privacy, and the
operation of other apps.
b) Signature permissions
• If the app declares a signature permission that another app has defined, and if the
two apps are signed by the same certificate, then the system grants the permission
to the first app at install time. Otherwise, that first app cannot be granted the
permission.
2. Runtime permissions
• Many runtime permissions access private user data, a special type of restricted data
that includes potentially sensitive information. Examples of private user data
include location and contact information.
3. Special permissions
Page No: 17 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
• Only the platform and OEMs can define special permissions.
Additionally, the platform and OEMs usually define special permissions when they want to
protect access to particularly powerful actions, such as drawing over other apps.
<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"
tools:context=".MainActivity">
<TextView
android:id="@+id/textView"
android:layout_width="81dp"
android:layout_height="41dp"
android:layout_marginEnd="268dp"
android:layout_marginBottom="576dp"
android:text="To :"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<TextView
android:id="@+id/textView2"
android:layout_width="70dp"
Page No: 18 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="43dp"
android:layout_marginEnd="276dp"
android:layout_marginBottom="512dp"
android:text="Sms Text"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/etPhno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="40dp"
android:layout_marginBottom="572dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<EditText
android:id="@+id/etmsg"
android:layout_width="193dp"
android:layout_height="51dp"
android:layout_marginEnd="56dp"
android:layout_marginBottom="504dp"
android:inputType="textPersonName"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
Page No: 19 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:id="@+id/btnSms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="156dp"
android:layout_marginBottom="400dp"
android:text="SEND SMS"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
EditText et1,et2;
Button b1;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=findViewById(R.id.etPhno);
et2=findViewById(R.id.etmsg);
b1=findViewById(R.id.btnSms);
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.SEND_SMS)!
=
PackageManager.PERMISSION_GRANTED)
ActivityCompat.requestPermissions(MainActivity.this,new
Page No: 20 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
String[]{Manifest.permission.SEND_SMS},100);
b1.setOnClickListener(new View.OnClickListener() {
@Override
try {
String msg=et2.getText().toString();
smsManager.sendTextMessage(phno,null,msg,null,null);
Toast.makeText(MainActivity.this,"Sms sent successfully",
Toast.LENGTH_LONG).show();
catch(Exception e)
});
a) Develop android application to enter one number and display factorial of a number 6M
once click on button.
An (Note: Consider the appropriate XML file. All attributes are not required. xml file-
s In java file all imports are not expected. Different relevant logic/code can be 2M
considered.)
java code-
activity_main.xml 4M
Page No: 21 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<?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">
<EditText
android:layout_width="wrap_content"
android:layout_height=" wrap_content "
android:hint="Enter a number"
android:id="@+id/number"
android:inputType="number"
android:textSize="30dp"
/>
<Button
android:layout_width=" wrap_content "
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:layout_below="@id/number"
android:textSize="20dp"
android:text="Calculate Factorial"
/>
<TextView
android:layout_width="wrap_content"
Page No: 22 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_height="wrap_content"
android:id="@+id/tv"
android:layout_below="@id/btn1"
android:textSize="20dp"/>
</RelativeLayout>
MainActivity.java
package com.example.factorial;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
Page No: 23 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
tv=(TextView)findViewById(R.id.tv);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strnum;
strnum = number.getText().toString();
num = Integer.parseInt(strnum);
factorial(num);
}
});
}
private void factorial(int num) {
int i = 1;
factor = i;
while (i <= num) {
factor = factor * i;
i++;
}
s = ”Factorial of Number is : ”+ factor;
tv.setText(s);
}
}
An (Note: Consider the appropriate XML file. All attributes are not required. XML file-
s In java file all imports are not expected. Different relevant logic/code can be 2M
considered.)
Java code-
4M
Page No: 24 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
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"
android:padding="40dp"
android:orientation="horizontal"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="CAMERA"
android:id="@+id/text"
android:textSize="20dp"
android:gravity="center"/>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text"
android:layout_marginTop="81dp"
android:src="@drawable/rose"/>
<Button
android:id="@+id/photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/image"
Page No: 25 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:text="TAKE PHOTO" />
</RelativeLayout>
MainActivity.java
package com.example.ifcdiv;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.graphics.Bitmap; import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
Button b1;
ImageView imageView;
int CAMERA_REQUEST=1;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
b1=findViewById(R.id.photo); imageView=findViewById(R.id.image);
b1.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
Intent i=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i,CAMERA_REQUEST); } }); }
@Override protected void onActivityResult(int requestCode, int resultCode, @Nullable
Intent data) { super.onActivityResult(requestCode, resultCode, data);
if (requestCode==CAMERA_REQUEST) { Bitmap image= (Bitmap)
data.getExtras().get("data");
imageView.setImageBitmap(image); } } }
Page No: 26 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
c) Write a program to show users current location. 6M
An (Note: Consider the appropriate XML file. All attributes are not required. In java file all XML file:
s imports are not expected.) 1M
Java Code:
activity_main.xml 5M
<?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">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/google_map"
android:name="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>
MainActivity.Java
package com.example.location;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.FragmentActivity;
import android.Manifest;
import android.content.pm.PackageManager;
import android.location.Location;
import android.os.Bundle;
import android.widget.Toast;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
public class MainActivity extends FragmentActivity implements
OnMapReadyCallback
{
Location currentlocation;
FusedLocationProviderClient fusedLocationProviderClient;
Page No: 27 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
private static final int REQUEST_CODE = 101;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
fetchLastLocation();
}
private void fetchLastLocation() {
if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission
(this, Manifest.permission.ACCESS_COARSE_LOCATION) !=
PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,new
String[]{Manifest.permission.ACCESS_FINE_LOCATION},REQUEST_CODE);
return;
}
Task<Location> task = fusedLocationProviderClient.getLastLocation();
task.addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if(location!=null)
{
currentlocation=location;
Toast.makeText(getApplicationContext(),currentlocation.getLatitude()+""+
currentlocation.getLongitude(), Toast.LENGTH_SHORT).show();
SupportMapFragment supportMapFragment =
(SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.google_ma
p);
supportMapFragment.getMapAsync(MainActivity.this);
}
}
});
}
@Override
public void onMapReady(@NonNull GoogleMap googleMap) {
LatLng latLng=new LatLng(currentlocation.getLatitude(),currentlocation.getLongitude());
MarkerOptions markerOptions=new MarkerOptions().position(latLng)
.title("I am Here");
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,5));
googleMap.addMarker(markerOptions);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
Page No: 28 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
case REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
fetchLastLocation();
}
break;
}
}
}
An (Note: Consider the appropriate XML file. All attributes are not required. In java file Xml file-
s all imports are not expected. Different relevant logic/code can be considered.) 2M
Java code-
activity_main.xml 4M
</LinearLayout>
MainActivtiy.java
Package com.example.sensordisplay;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.view.View;
Page No: 29 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.widget.TextView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private SensorManager mgr;
private TextView txtList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mgr = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
txtList = (TextView)findViewById(R.id.sensorslist);
List<Sensor> sensorList = mgr.getSensorList(Sensor.TYPE_ALL);
StringBuilder strBuilder = new StringBuilder();
for(Sensor s: sensorList){
strBuilder.append(s.getName()+"\n");
}
txtList.setVisibility(View.VISIBLE);
txtList.setText(strBuilder);
}
}
b) Write a program to send e-mail. 6M
An (Note: Consider the appropriate XML file. All attributes are not required. Xml file-
s Different relevant logic/code can be considered.) 2M
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_marginTop="18dp"
android:layout_marginRight="22dp" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_alignLeft="@+id/editText1"
android:layout_marginTop="20dp" />
Page No: 30 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText2"
android:layout_alignLeft="@+id/editText2"
android:layout_marginTop="30dp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText1"
android:layout_alignBottom="@+id/editText1"
android:layout_alignParentLeft="true"
android:text="Send To:"
android:textColor="#0F9D58" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText2"
android:layout_alignBottom="@+id/editText2"
android:layout_alignParentLeft="true"
android:text="Email Subject:"
android:textColor="#0F9D58" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/editText3"
android:layout_alignBottom="@+id/editText3"
android:text="Email Body:"
android:textColor="#0F9D58" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText3"
android:layout_alignLeft="@+id/editText3"
android:layout_marginLeft="76dp"
android:layout_marginTop="20dp"
android:text="Send email!!" />
</RelativeLayout>
MainActivity.java
package com.example.email;
import android.content.Intent;
Page No: 31 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// define objects for edit text and button
Button button;
EditText sendto, subject, body;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Getting instance of edittext and button
sendto = findViewById(R.id.editText1);
subject = findViewById(R.id.editText2);
body = findViewById(R.id.editText3);
button = findViewById(R.id.button);
// attach setOnClickListener to button with Intent object define in it
button.setOnClickListener(view -> {
String emailsend = sendto.getText().toString();
String emailsubject = subject.getText().toString();
String emailbody = body.getText().toString();
// define Intent object with action attribute as ACTION_SEND
Intent intent = new Intent(Intent.ACTION_SEND);
// add three fields to intent using putExtra function
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{emailsend});
intent.putExtra(Intent.EXTRA_SUBJECT, emailsubject);
intent.putExtra(Intent.EXTRA_TEXT, emailbody);
// set type of intent
intent.setType("message/rfc822");
// startActivity with intent with chooser as Email client using createChooser function
startActivity(Intent.createChooser(intent, "Choose an Email client :"));
});
}
}
c) Write a program to show five checkboxes and total selected checkboxes using linear 6M
layout.
An (Note: Consider the appropriate XML file. All attributes are not required. XML file-
s Different relevant logic/code can be considered.) 2M
MainActivity.java
package com.example.checkbox;
import androidx.appcompat.app.AppCompatActivity;
import java.lang.StringBuffer;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
Page No: 33 | 34
MAHARASHTRA STATE BOARD OF TECHNICAL EDUCATION
(Autonomous)
(ISO/IEC - 27001 - 2013 Certified)
__________________________________________________________________________________________________
import android.widget.CheckBox;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
Button b1;
CheckBox c1,c2,c3,c4,c5;
String s;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
s ="Your Hobbies are:- ";
b1=(Button) findViewById(R.id.b1);
c1=(CheckBox) findViewById(R.id.c1);
c2=(CheckBox) findViewById(R.id.c2);
c3=(CheckBox) findViewById(R.id.c3);
c4=(CheckBox) findViewById(R.id.c4);
c5=(CheckBox) findViewById(R.id.c5);
b1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) { if(c1.isChecked())
{
s = s + c1.getText()+" ";
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
if(c2.isChecked())
{
s = s + c2.getText()+" ";
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
if(c3.isChecked())
{
s = s + c3.getText()+" ";
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
if(c4.isChecked())
{
s = s + c4.getText()+" ";
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
if(c5.isChecked())
{
s = s + c5.getText()+" ";
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
}
});
}
}
Page No: 34 | 34
Question Bank
Android 11
Android 10
Android 9 (Pie)
Android 8 (Oreo)
Android 7 (Nougat)
Android 6 (Marshmallow)
3. Define OHA.
The primary goal of the OHA is to create a unified platform for mobile devices
that is open, flexible, and scalable. To achieve this, the alliance works to
develop open-source software and standards for the Android operating system.
This enables device manufacturers to customize their devices and create unique
user experiences while maintaining compatibility with the wider Android
ecosystem.
In addition to developing open standards and software, the OHA also works to
promote the Android platform and support its adoption by device manufacturers
and developers. This includes providing resources, tools, and support for
developers to create and distribute Android apps, as well as working to ensure
that the platform remains secure and stable.
Overall, the OHA plays a key role in the development and growth of the
Android platform, and its work has helped to establish Android as one of the
most widely used mobile operating systems in the world.
4. Explain android ecosystem with the help of a diagram.
Android ecosystem refers to the interdependence between the demand and
supply of users, equipment makers, and software developers. To become an
android developer, it is important to understand the android ecosystem and its
interdependencies. Android is a mobile OS that is a modified version of the
Linux kernel also it is open-source software.
developers can access the source code and customize it according to their
needs. This makes it more flexible and adaptable to different devices and
user requirements.
Customization: Android OS allows users to customize their devices by
installing third-party apps, customizing the home screen and lock screen,
and changing the default settings. This means that users have more
control over their devices, which can lead to a more personalized
experience.
App ecosystem: The Google Play Store has over 3 million apps, which is
more than any other app store. This means that users have access to a
wide range of apps, including games, productivity tools, social media,
and more.
Multitasking: Android OS allows users to multitask by running multiple
apps at the same time. This means that users can switch between apps
without having to close them and reopen them.
Integration: Android OS is designed to work seamlessly with Google
services such as Gmail, Google Maps, and Google Drive. This means that
users can easily access these services from their devices and integrate
them with other apps.
Hardware options: Android OS is available on a wide range of devices,
from budget smartphones to high-end tablets and smartwatches. This
means that users have a wide range of options to choose from, depending
on their needs and budget.
1) Linux kernel
2) Native Libraries
On the top of linux kernel, their are Native libraries such as WebKit, OpenGL,
FreeType, SQLite, Media, C runtime library (libc) etc.
The WebKit library is responsible for browser support, SQLite is for database,
FreeType for font support, Media for playing and recording audio and video
formats.
3) Android Runtime
In android runtime, there are core libraries and DVM (Dalvik Virtual Machine)
which is responsible to run android application. DVM is like JVM but it is
optimized for mobile devices. It consumes less memory and provides fast
performance.
4) Android Framework
On the top of Native libraries and android runtime, there is android framework.
Android framework includes Android API's such as UI (User Interface),
telephony, resources, locations, Content Providers (data) and package managers.
It provides a lot of classes and interfaces for android application development.
5) Applications
On the top of android framework, there are applications. All applications such
as home, contact, settings, games, browsers are using android framework that
uses android runtime and libraries. Android runtime and native libraries are
using linux kernal.
When a user launches an Android app, the app's code is loaded into the device's
memory. The app then interacts with the device's operating system and
hardware resources, such as the processor, memory, storage, camera,
microphone, and other sensors, to perform its intended functions.
The Android operating system provides an abstraction layer that allows apps to
access these hardware resources without knowing the specifics of each device's
hardware. This abstraction layer also helps ensure that apps are compatible with
a wide range of Android devices.
The app's user interface is created using the Android framework, which provides
a set of pre-built UI components (such as buttons, text fields, and images) that
can be arranged and customized to create a unique user interface for the app.
JDK is a set of software development tools that allow developers to create Java
applications. It includes the Java Runtime Environment (JRE), which allows
you to run Java programs, as well as the Java compiler and other development
tools, such as the Java debugger and JavaDoc.
When developing Android applications using Java, you need to have both the
JDK and the Android SDK installed on your computer. The JDK is required
because Android development is done using the Java programming language.
The Android SDK is required because it contains the necessary tools and
libraries for building Android applications.
9. Explain dalvik virtual machine with the help of compiling and packaging
process diagram.
The emulator creates a virtual environment for the Android operating system,
including a virtual display, virtual storage, and virtual sensors such as GPS and
accelerometer. It can run various Android versions, screen sizes, and device
configurations, which allows developers to test their apps on a range of devices.
Android Studio comes with an emulator called Android Virtual Device (AVD),
which can be configured to simulate different device specifications, such as
screen size, resolution, and hardware specifications. Developers can also
customize the emulator's settings, such as the amount of RAM and storage, and
even emulate various network conditions to test their apps under different
network scenarios.
Open Android Studio and click on the "AVD Manager" icon in the toolbar
or go to "Tools" > "AVD Manager".
In the AVD Manager window, click on the "Create Virtual Device"
button.
Select the device definition you want to use from the list of available
options. You can choose from various devices with different screen sizes,
resolutions, and hardware configurations.
Click on the "Next" button to configure the virtual device.
Choose the system image you want to use for the virtual device. You can
download system images for different Android versions from the
"Recommended" tab or the "Other Images" tab.
Click on the "Next" button and give your virtual device a name.
Customize the advanced settings if needed (such as RAM size, internal
storage, etc.).
Click on the "Finish" button to create the virtual device.
1. Manifests Folder
2. Java Folder
3. res (Resources) Folder
Drawable Folder
Layout Folder
Mipmap Folder
Values Folder
4. Gradle Scripts
Manifests Folder
Manifests folder contains AndroidManifest.xml for creating our android
application. This file contains information about our application such as the
Android version, metadata, states package for Kotlin file, and other application
components. It acts as an intermediator between android OS and our
application.
Java folder
The Java folder contains all the java and Kotlin source code (.java) files that we
create during the app development, including other Test files. If we create any
new project using Kotlin, by default the class file MainActivity.kt file will
create automatically under the package name
res/drawable folder
It contains the different types of images used for the development of the
application. We need to add all the images in a drawable folder for the
application development.
res/layout folder
The layout folder contains all XML layout files which we used to define the
user interface of our application. It contains the activity_main.xml file.
Each View has its own properties, such as its size, position, background color,
and other visual attributes, and it can also have a set of behaviors that respond to
user input, such as clicking, dragging, or scrolling.
In Android, Views are organized into a hierarchy, where each View can be a
parent to other Views, and this hierarchical structure is called the View
hierarchy. The topmost View in the hierarchy is usually a ViewGroup, which is
a container for other Views.
Some common View classes in Android include TextView (for displaying text),
ImageView (for displaying images), Button (for creating clickable buttons),
EditText (for accepting text input), and ListView (for displaying a scrollable list
of items).
In Android app development, the layout refers to the structure of the user
interface (UI) components that are displayed on the app screen. It defines how
the UI components are arranged, aligned, and positioned within the app's screen.
LinearLayout is the most basic layout in android studio, that aligns all the
children sequentially either in a horizontal manner or a vertical manner by
specifying the android:orientation attribute. If one
applies android:orientation=”vertical” then elements will be arranged one
after another in a vertical manner and If you
apply android:orientation=”horizontal” then elements will be arranged one
after another in a horizontal manner.
Example -:
<LinearLayout
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:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="wrap_content"/>
<Button
android:layout_width="match_parent"
android:layout_margin="10dp"
android:layout_height="wrap_content"/>
<!-- Add Button-->
<Button
android:layout_width="match_parent" android:layout_margin="10dp"
android:layout_height="wrap_content"/>
<TableLayout
android:id="@+id/tableLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:shrinkColumns="*"
android:stretchColumns="*">
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="Name"
android:textStyle="bold"/>
<TextView
android:text="Age"
android:textStyle="bold"/>
<TextView
android:text="Gender"
android:textStyle="bold"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="John"/>
<TextView
android:text="25"/>
<TextView
android:text="Male"/>
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:text="Jane"/>
<TextView
android:text="30"/>
<TextView
android:text="Female"/>
</TableRow>
</TableLayout>
19. Define frame layout with its attributes. Write a program to insert an image
using frame layout.
When using a FrameLayout, it's important to keep in mind that views are placed
on top of each other in the order they are added to the layout. This means that
the last view added will be displayed on top of all other views. Additionally,
since there is no concept of positioning within a FrameLayout, you'll need to
use other layout managers such as RelativeLayout or LinearLayout to position
views relative to each other.
20. What do you mean by attribute? How do you set orientation attribute in
linear layout.
<LinearLayout
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:orientation="vertical"
tools:context=".MainActivity">
</LinearLayout>
21. Explain scroll view with the help of a program.
In Android, a ScrollView is a container that allows users to scroll through its
contents when the contents are too large to fit in the visible area. A ScrollView
can contain any type of content, such as text, images, or other views.
When the contents of the ScrollView are larger than the visible area, users can
scroll through the content by dragging their finger up or down the screen. The
ScrollView will automatically adjust the position of the content so that it
remains within the visible area.
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is the first TextView" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is the second TextView" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="This is the third TextView" />
</LinearLayout>
</ScrollView>
In Android, Absolute Layout is a type of layout that allows you to specify the
exact position of each UI element (such as buttons, text, images, etc.) using
absolute (x, y) coordinates on the screen. This means that the elements are
placed exactly where you want them, and their positions do not change with
respect to the other elements or the screen size.
First, you need to create a new Android project in Android Studio and open the
main layout file. Then, change the layout type to AbsoluteLayout by adding the
following line of code to the XML file:
<AbsoluteLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
</AbsoluteLayout>
Inside the AbsoluteLayout, you can add UI elements (such as buttons, text,
images, etc.) and specify their exact position on the screen using the
"android:layout_x" and "android:layout_y" attributes. Here is an example:
<Button
android:id="@+id/myButton"
android:text="Click Me!"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="100dp"
android:layout_y="200dp" />
23. Write the xml code to demonstrate the use of relative layout.
<TextView
android:id="@+id/top_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Top Text"
android:textSize="24sp"
android:layout_marginTop="16dp"
android:layout_centerHorizontal="true"/>
<TextView
android:id="@+id/bottom_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Bottom Text"
android:textSize="18sp"
android:layout_marginTop="32dp"
android:layout_below="@id/top_text"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"/>
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My Button"
android:textSize="18sp"
android:layout_below="@id/top_text"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"/>
</RelativeLayout>
In Android app development, views are the basic building blocks for creating
user interfaces. Views represent the visual components that users interact with
when they use an Android app. There are several categories of views in Android
app development, each with its own purpose and functionality. Here are some of
the most common categories of views in Android:
Layout Views: These views are used to define the layout structure of the
user interface. Examples include LinearLayout, RelativeLayout, and
FrameLayout.
Text Views: These views are used to display text on the screen. Examples
include TextView, EditText, and Button.
Image Views: These views are used to display images on the screen.
Examples include ImageView and ImageButton.
List Views: These views are used to display a list of items on the screen,
such as a list of contacts or emails. Examples include ListView and
RecyclerView.
Input Views: These views are used to accept user input, such as text or
numbers. Examples include EditText and CheckBox.
Container Views: These views are used to group other views together.
Examples include LinearLayout and FrameLayout.
Web Views: These views are used to display web pages within an app.
Examples include WebView and Chrome Custom Tabs.
Media Views: These views are used to play multimedia content such as
videos and audio files. Examples include VideoView and MediaPlayer.
25. Write a program to implement text view in xml and java file.
Xml code -:
<TextView
android:id="@+id/myTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp"
android:layout_centerInParent="true" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTextView = findViewById(R.id.myTextView);
}
}
26. How to define a button in xml? Also set a click event to display a toast
message.
27. Define toast in android. Write the correct syntax to define a toast.
<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:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<ImageButton
android:id="@+id/myImageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_foreground" />
</LinearLayout>
Java Code -:
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myImageButton = findViewById(R.id.myImageButton);
myImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Perform some action when the image button is clicked
}
});
}
}
29. Explain check box with the help of a program.
In Android, a CheckBox is a UI element that allows the user to toggle between
two states, checked and unchecked. Here's an example of how to create a
CheckBox in Android using Java:
<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:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<CheckBox
android:id="@+id/myCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check me!" />
</LinearLayout>
Java code -:
import android.os.Bundle;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myCheckBox = findViewById(R.id.myCheckBox);
myCheckBox.setOnCheckedChangeListener(new
CompoundButton.OnCheckedChangeListener()
{ @Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
Toast.makeText(MainActivity.this, "Checkbox is checked",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Checkbox is unchecked",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
30. Write a program to create a progress bar in android app.
Xml code -:
<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"
tools:context=".MainActivity">
<ProgressBar
android:id="@+id/myProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true" />
</RelativeLayout>
Java code -:
import android.os.Bundle;
import android.os.Handler;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myProgressBar = findViewById(R.id.myProgressBar);
// Update the progress bar and display the current value in the text
view
handler.post(new Runnable() {
public void run() {
myProgressBar.setProgress(progressStatus);
}
});
try {
// Sleep for 50 milliseconds to simulate a long-running operation
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
}
31. Develop an android application for picking time and date in android app.
Xml code - :
<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"
tools:context=".MainActivity">
<TimePicker
android:id="@+id/myTimePicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" />
</LinearLayout>
Java code -:
import android.os.Bundle;
import android.widget.TimePicker;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
myTimePicker = findViewById(R.id.myTimePicker);
// Set the current time as the default value for the time picker
Calendar calendar = Calendar.getInstance();
myTimePicker.setHour(calendar.get(Calendar.HOUR_OF_DAY));
myTimePicker.setMinute(calendar.get(Calendar.MINUTE));
Starting a new activity: You can use an Intent to start a new activity in
your application, or even in another application. This is commonly used
to transition between different screens or sections of an app, or to launch
a third-party app for a specific task.
Passing data between activities: You can use an Intent to pass data
between activities, such as user input or data retrieved from a web
service. This data can be simple values like strings and integers, or more
complex objects like arrays or custom classes.
In Android, there are two types of Intent: explicit and implicit. Here's an
explanation of each type with a program example:
Explicit Intent: An explicit intent is used to start a specific activity within your
own application. The target activity is identified by its class name.
Here's an example of how to use an explicit Intent to start a new activity:
// Create an explicit intent to start the SecondActivity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
34. Write a program to create a calculator application and display the result on
second activity using explicit intent.
1. onCreate()
It is called when the activity is first created. This is where all the static work is
done like creating views, binding data to lists, etc. This method also provides a
Bundle containing its previous frozen state, if there was one.
2. onStart()
It is invoked when the activity is visible to the user. It is followed by
onResume() if the activity is invoked from the background. It is also invoked
after onCreate() when the activity is first started.
3. onRestart()
It is invoked after the activity has been stopped and prior to its starting stage
and thus is always followed by onStart() when any activity is revived from
background to on-screen.
4. onResume()
It is invoked when the activity starts interacting with the user. At this point, the
activity is at the top of the activity stack, with a user interacting with it. Always
followed by onPause() when the activity goes into the background or is closed
by the user.
5. onPause()
It is invoked when an activity is going into the background but has not yet been
killed. It is a counterpart to onResume(). When an activity is launched in front
of another activity, this callback will be invoked on the top activity (currently
on screen). The activity, under the active activity, will not be created until the
active activity’s onPause() returns, so it is recommended that heavy processing
should not be done in this part.
6. onStop()
It is invoked when the activity is not visible to the user. It is followed
by onRestart() when the activity is revoked from the background, followed by
onDestroy() when the activity is closed or finished, and nothing when the
activity remains on the background only. Note that this method may never be
called, in low memory situations where the system does not have enough
memory to keep the activity’s process running after its onPause() method is
called.
7. onDestroy()
The final call received before the activity is destroyed. This can happen either
because the activity is finishing (when finish() is invoked) or because the
system is temporarily destroying this instance of the activity to save space. To
distinguish between these scenarios, check it with isFinishing() method.
System Broadcasts: These are broadcasts that are sent by the system to notify
applications of system-level events, such as the device being restarted or the
battery level changing.
Here are some examples of system broadcasts:
In Android, Content Providers are a very important component that serves the
purpose of a relational database to store the data of applications. The role of the
content provider in the android system is like a central repository in which data
of the applications are stored, and it facilitates other applications to securely
access and modifies that data based on the user requirements. Android system
allows the content provider to store the application data in several ways. Users
can manage to store the application data like images, audio, videos, and
personal contact information by storing them in SQLite Database , in files, or
even on a network. In order to share the data, content providers have certain
permissions that are used to grant or restrict the rights to other applications to
interfere with the data.
Create a class in the same directory where the that MainActivity file resides
and this class must extend the ContentProvider base class.
To access the content, define a content provider URI address.
Create a database to store the application data.
Implement the six abstract methods of ContentProvider class.
Register the content provider in AndroidManifest.xml file
using <provider> tag.
41. Define service. What do you mean by started and bound service.
Media Player API: This API allows developers to play audio and video
files, as well as streaming media. It provides a range of features, such as
playback speed control, volume control, and support for various media
formats.
Media Recorder API: This API allows developers to record audio and
video, as well as capture images. It provides a range of features, such as
video resolution and bitrate control, and support for various media
formats.
Camera API: This API provides access to the device's camera, allowing
developers to capture images and video. It provides a range of features,
such as autofocus, zoom, and flash control.
OpenGL ES: This API provides a way for developers to create and
manipulate 3D graphics on Android devices. It provides a range of
features, such as texture mapping, lighting, and animation.
OpenMAX AL: This API provides a low-level interface for accessing
hardware acceleration for multimedia tasks. It provides a range of
features, such as audio and video decoding and encoding, and supports
various media formats.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = findViewById(R.id.image_view);
mButton = findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dispatchTakePictureIntent();
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode ==
RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
mImageView.setImageBitmap(imageBitmap);
}
}
}
Xml code -:
<TextView
android:layout_gravity="center"
android:textSize="30dp"
android:layout_marginTop="20dp"
android:text="SMS Sending App"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView>
<EditText
android:padding="20dp"
android:id="@+id/mobilenumber"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Enter phone number"
android:layout_width="match_parent"
android:layout_height="wrap_content"></EditText>
<EditText
android:padding="20dp"
android:id="@+id/message"
android:layout_marginTop="20dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:hint="Enter your message"
android:layout_width="match_parent"
android:layout_height="wrap_content"></EditText>
<Button
android:layout_margin="20dp"
android:padding="20dp"
android:text="Send SMS"
android:id="@+id/send_btn"
android:textSize="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"></Button>
</LinearLayout>
Java Code -:
package com.example.smsapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
Button send_btn;
EditText send_phonenumber;
EditText send_message;
String phoneno;
String mymessage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
send_btn = findViewById(R.id.send_btn);
send_message = findViewById(R.id.message);
send_phonenumber = findViewById(R.id.mobilenumber);
send_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
phoneno = send_phonenumber.getText().toString();
mymessage = send_message.getText().toString();
try{
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneno,null,mymessage,null,null);
Toast.makeText(getApplicationContext(),"Message
sent",Toast.LENGTH_LONG).show();
}catch(Exception e){
Toast.makeText(getApplicationContext(),"Failed",Toast.LENGTH_LONG).sho
w();
}
}
});
}
}
Manifest File -:
<uses-permission android:name="android.permission.SEND_SMS"></uses-
permission>
@Override
public void onCreate(SQLiteDatabase db) {
// Create the table
String sql = "CREATE TABLE mytable ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "name TEXT,"
+ "age INTEGER)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Upgrade the table if needed
db.execSQL("DROP TABLE IF EXISTS mytable");
onCreate(db);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
locationTextView = findViewById(R.id.location_text_view);
}
@Override
protected void onResume() {
super.onResume();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, this);
} else {
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
locationTextView.setText("Latitude: " + latitude + "\nLongitude: " +
longitude);
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(this, "GPS disabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(this, "GPS enabled", Toast.LENGTH_SHORT).show();
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
Manifest code -:
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION" />
48. Explain the steps how to publish an android application on google playstore.
49. List sensors in android and explain any one them .
Android devices are equipped with a variety of sensors that enable various
functionalities in apps. Here are some of the common sensors in Android:
One of the most commonly used sensors in Android is the GPS sensor. The GPS
sensor uses signals from GPS satellites to determine the device's location. Here
is an example of how to use the GPS sensor in an Android app:
Code -:
public class MainActivity extends AppCompatActivity implements
LocationListener {
private LocationManager locationManager;
private TextView latitudeTextView, longitudeTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
latitudeTextView = findViewById(R.id.latitude_text_view);
longitudeTextView = findViewById(R.id.longitude_text_view);
}
@Override
protected void onResume() {
super.onResume();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, this);
} else {
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull
String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
if (requestCode == 1) {
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
== PackageManager.PERMISSION_GRANTED) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, this);
}
}
}
}
@Override
public void onLocationChanged(Location location) {
double latitude = location.getLatitude();
double longitude = location.getLongitude();
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
}
50. Describe the need of permission in android. Explain with any example or
program.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new
String[]{Manifest.permission.CAMERA},
REQUEST_CAMERA_PERMISSION);
} else {
startCamera();
}
}
private void startCamera() {
try {
camera = Camera.open();
CameraPreview preview = new CameraPreview(this, camera);
FrameLayout previewLayout = findViewById(R.id.preview_layout);
previewLayout.addView(preview);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull
String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
if (requestCode == REQUEST_CAMERA_PERMISSION) {
if (grantResults.length > 0 && grantResults[0] ==
PackageManager.PERMISSION_GRANTED) {
startCamera();
} else {
Toast.makeText(this, "Camera permission denied",
Toast.LENGTH_SHORT).show();
}
}
}
@Override
protected void onPause() {
super.onPause();
if (camera != null) {
camera.release();
camera = null;
}
}
}
51. State and elaborate the syntax of required class and methods
for Geocoding.
52. Define activity in android. Explain how to create a new activity and switch
from one activity to another.
Activities are a fundamental building block of Android apps, and they are
responsible for managing their own lifecycle, including being created, started,
paused, resumed, stopped, and destroyed. They can also be organized into
backstacks to enable users to navigate between different screens and workflows.
53. Develop this registration form UI. Write only xml code.
Roll N
Exam Seat
‹,(22617)”
Mobile Application Development (22617)
Ans 2:
Android studio Komodo
Eclipse Cordovo
IntelliJ Idea
Netbeans
Visual Studio
Ans 1:
JVM is the virtual machine that runs java code on different platforms. It acts as an
abstract layer between the program and the platform on which the java code is
running. The portability of Java code is possible only because of the JVM. The javac
compiler converts the source code file(.java file) into an intermediate java
bytecode format which is machine/platform independent.
DVM is a virtual machine to execute Android applications. The Java bytecode(.class
file) generated by javac compiler is converted into Dalvik bytecode to make the
application source files executable on the DVM. Since Android devices have a
definite processing capacity, memory, and battery life, the DVM design principle
aims to optimize itself so Ans it can load fastly and run smoothly even on low
memory/powered devices
Ans 2:
An IDE, or Integrated Development Environment, enables programmers to consolidate
the different aspects of writing a computer program. IDEs increase programmer
productivity by combining common activities of writing software into a single
application: editing source code, building executables, and debugging
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
Configuration set up steps should be known beforehand as learnt in the practical no.2
Android Development Tools (ADT) is a plugin for the Android studio that is designed
to give you a powerful, integrated environment in which to build Android applications.
ADT extends the capabilities of Android studio to let you quickly set up new Android
projects, create an application UI, add components based on the Android Framework
API, debug your applications using the Android SDK tools, and even export signed (or
unsigned) APKs in order to distribute your application. Developing in Android studio
with ADT is highly recommended and is the fastest way to get started. With the
guided project setup, it provides, as well as tools integration, custom XML editors, and
debug output pane, ADT gives you an incredible boost in developing Android
applications.
The ADT Bundle includes everything you need to begin developing apps:
Android studio + ADT plugin
Android SDK Tools Android Platform-tools
The latest Android platform
The latest Android system image for the emulator
Ans 2:
Android uses Dalvik Virtual Machine (DVM) which requires a special bytecode. We need
to convert Java class files into Dalvik Executable files using an Android tool called "dx".
In normal circumstances, developers will not be using this tool directly and build tools will
care for the generation of DVM compatible files.
X. Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
1. What is a Build Type in Gradle?
2. Explain the build process in Android.
Ans 2:
The build process for a typical Android app module, as shown in figure 1, follows these
general steps:
1. The compilers convert your source code into DEX (Dalvik Executable) files,
which include the bytecode that runs on Android devices, and everything else into
compiled resources.
2. The APK Packager combines the DEX files and compiled resources into a single
APK. Before your app can be installed and deployed onto an Android device,
however, the APK must be signed.
3. The APK Packager signs your APK using either the debug or release keystore:
a. If you are building a debug version of your app, that is, an app you intend only for
testing and profiling, the packager signs your app with the debug keystore.
Android Studio automatically configures new projects with a debug keystore.
b. If you are building a release version of your app that you intend to release
externally, the packager signs your app with the release keystore. To create a
release keystore, read about signing your app in android studio.
4. Before generating your final APK, the packager uses the zipline tool tool to
optimize your app to use less memory when running on a device.
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
In android studio students must be aware of the directory structure and the control
flow of the program. Program should be either executed on the android mobile phones
or on the suitable emulators. To execute a simple program, like to display Hello World
on screen syntax of writing a program in android is pre-requisite as the programming
language used is JAVA only. The main activity code is a Java file MainActivity.java.
This is the actual application file which ultimately gets converted to a Dalvik executable
and runs your application.
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main,menu);
return true;
}
}
The Manifest File: Whatever component you develop as a part of your application, you
must declare all its components in a manifest file called AndroidManifest.xml which
resides at the root of the application project directory. This file works as an interface
between Android OS and your application, so if you do not declare your component in
this file, then it will not be considered by the OS. The <activity> tag is used to specify
an activity and android:name attribute specifies the fully qualified classname of the
Activity subclass and the android:label attributes specifies a string to useas the label
for the activity. You can specify multiple activities using <activity> tags. The action for
the intent filter is named android.intent.action.MAIN to indicate thatthis activity
serves as the entry point for the application. The category for the intent- filter is named
android.intent.category.LAUNCHER to indicate that the applicationcan be launched
from the device's launcher icon. The @string refers to the strings.xml file explained
below. Hence, @string/app_name refers to the app_name string defined in the
strings.xml file, which is "HelloWorld". Similar way, other strings get populatedin the
application. Following is the list of tags which you will use in your manifest file to
specify different Android application components:
1) <activity>elements for activities
2) <service> elements for services
3) <receiver> elements for broadcast receivers
4) <provider> elements for content providers
Ans 2:
An activity is the single screen in android. It is like window or frame of Java. By
the help of activity, you can place all your UI components or widgets in a single screen.
The 7 lifecycle method of Activity describes how activity will behave at different states.
X. Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to display HelloWorld.
2. Write a program to display student name and marks.
(Space for answers)
Ans 1:
<?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"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Students_Information"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Heet ; Marks: 96"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Meet ; Marks: 97"
android:textColor="#161d6f"
Maharashtra State Board of Technical Education 21
Mobile Application Development (22617)
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Pratik ; Marks: 99"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Shaun ; Marks: 96"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Naman ; Marks: 97"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TextView
android:id="@+id/text6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Name: Hisbaan ; Marks: 92"
android:textColor="#161d6f"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
</TableLayout>
Dated signature of
Marks Obtained
Teacher
I. Practical Significance
To develop and place the android components accurately on the display
screen, android provides various layout managers. Layout managers can be
used on the simple android program too. Various layout managers can be
selected as per the program requirements.
Linear Layout: -
Ans. 1.
1. Linear Layout
LinearLayout is a view group that aligns all children in a single direction, vertically or
horizontally.
2. Relative Layout
RelativeLayout is a view group that displays child views in relative positions.
3. Table Layout
TableLayout is a view that groups views into rows and columns.
Ans. 2.
CardView is a new widget in Android that can be used to display any sort of data by
providing a rounded corner layout along with a specific elevation. CardView is the view
that can display views on top of each other. The main usage of CardView is that it helps to
give a rich feel and look to the UI design.
Ans 1.
<?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"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:layout_editor_absoluteX="199dp"
tools:layout_editor_absoluteY="362dp">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#03A9F4"
android:text="Name: Heet"
android:textColor="#000000"
android:textSize="24sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFC107"
android:text="Age:19"
android:textColor="#000000"
android:textSize="24sp"
android:textStyle="bold" />
Maharashtra State Board of Technical Education 27
Mobile Application Development (22617)
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#03A9F4"
android:text="Mobile_No:123456789"
android:textColor="#000000"
android:textSize="24sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
android:layout_height="match_parent"
android:background="#c7ffd8"
tools:context=".MainActivity"
tools:ignore="Deprecated">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="12dp"
android:layout_y="338dp"
android:text="Name: Heet"
android:textColor="#161d6f"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="135dp"
android:layout_y="338dp"
android:text="Age: 18"
android:textColor="#161d6f"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_x="213dp"
android:layout_y="338dp"
android:text="Phone_no: 123456789"
android:textColor="#161d6f"
android:textSize="18sp"
android:textStyle="bold" />
</AbsoluteLayout>
1……………………...
2……………………...
3………………………
4……………………….
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
To develop and place the android components accurately on the display
screen, android provides various layout managers. Layout managers can be
used on the simple android program too. Various layout managers can be
selected as per the program requirements.
2. Relative Layout:
A Relative Layout is a very powerful utility for designing a user interface because
it can eliminate nested view groups and keep your layout hierarchy flat, which
improves performance. If you find yourself using several nested Linear Layout
groups, you may be able to replace them with a single Relative Layout.
3. Table Layout:
A Table Layout consists of a number of Table Row objects, each defining a row
(actually, you can have other children, which will be explained below). Table
Layout containers do not display border lines for their rows, columns, or cells.
Each row has zero or more cells; each cell can hold one View object. The table has
as many columns as the row with the most cells. A table can leave cells empty. Cells
can span columns,as they can in HTML. The width of a column is defined bythe row
with the widest cell in that column.
Ans 1:
i. android:layout_width:This is the width of the layout.
ii. android:layout_height:This is the height of the layout
iii. android:layout_x:This specifies the x-coordinate of the layout.
iv. android:layout_y:This specifies the y-coordinate of the layout.
v. android:padding: This is the padding of the layout.
vi. android:margin: This is the margin of the layout
Ans 2 :
A layout that places its children in a rectangular grid.
The grid is composed of a set of infinitely thin lines that separate the viewing area into cells.
Throughout the API, grid lines are referenced by grid indices. A grid with N columns has N +
Maharashtra State Board of Technical Education 34
Mobile Application Development (22617)
1 grid indices that run from 0 through N inclusive. Regardless of how GridLayout is configured,
grid index 0 is fixed to the leading edge of the container and grid index N is fixed to its
trailing edge (after padding is taken into account).
X. Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to display 10 students basic information in a table
form using Table layout.
2. Write a program to display all the data types in object-oriented
programming using Frame layout.
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#31326f"
tools:layout_editor_absoluteX="125dp"
tools:layout_editor_absoluteY="245dp">
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:paddingTop="25dp"
android:paddingBottom="25dp"
android:text="Name"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView2"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
Maharashtra State Board of Technical Education 35
Mobile Application Development (22617)
android:layout_gravity="center"
android:paddingTop="25dp"
android:paddingBottom="25dp"
android:text="AGE"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView3"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Heet"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView4"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView5"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Shaun"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView6"
android:layout_width="170dp"
Maharashtra State Board of Technical Education 36
Mobile Application Development (22617)
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView7"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Pratik"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView8"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="18"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView9"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Gaurang"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView10"
android:layout_width="170dp"
Maharashtra State Board of Technical Education 37
Mobile Application Development (22617)
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView11"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Meet"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView12"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView13"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Naman"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView14"
android:layout_width="170dp"
Maharashtra State Board of Technical Education 38
Mobile Application Development (22617)
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="18"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView15"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Divyesh"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView16"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView17"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Harry"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView18"
android:layout_width="170dp"
Maharashtra State Board of Technical Education 39
Mobile Application Development (22617)
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="19"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
<TableRow
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView19"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_gravity="center"
android:text="Ron"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView20"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_gravity="center"
android:text="18"
android:textColor="#ffc93c"
android:textSize="30sp"
android:textStyle="bold" />
</TableRow>
</TableLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#02475e"
tools:layout_editor_absoluteX="114dp"
Maharashtra State Board of Technical Education 41
Mobile Application Development (22617)
tools:layout_editor_absoluteY="242dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center"
android:text="LONG"
android:textColor="#fefecc"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:text="BOOLEAN"
android:textColor="#fefecc"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left|center"
android:text="INT"
android:textColor="#fefecc"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="CHAR"
android:textColor="#fefecc"
android:textSize="30sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right|center"
android:text="FLOAT"
android:textColor="#fefecc"
android:textSize="30sp"
android:textStyle="bold" />
</FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 7: Develop a program to implement Text View and Edit Text.
I. Practical Significance
In this practical, UI controls in android like Text view and edit view are
studied. Wherein the UI controls can be developed, used and placed on the
screen using different layout managers as per the problem statement
requirements.
1. Text View:
In Android, Text View displays text to the user and optionally allows them to edit it
programmatically. Text View is a complete text editor, however basic class is
configured to not allow editing but we can edit it. View is the parent class of Text
View Being a subclass of view the text view component can be used in your app’s.
GUI inside a View Group, or as the content view of an activity. We can create a Text
View instance by declaring it inside a layout(XML file) or by instantiating it
programmatically(Java Class).
2. Edit Text:
In Android, Edit Text is a standard entry widget in android apps. It is an overlay over
Text View that configures itself to be editable. Edit Text is a subclass of Text View
with text editing operations. Often use Edit Text in our applications in order to
provide an input or text field, especially in forms. The simplest example of Edit Text
is Login or Sign-in form. Text Fields in Android Studio are basically Edit Text.
Note: An Edit Text is simply a thin extension of a Text View. An Edit Text
inherits all the properties of a Text View.
2. What is the name of the folder that contains the R.java file?
a. src
b. res
c. bin
d. gen
Ans 1 :
Non-visible is not defined as a process state.
Ans 2:
the name of the folder that contains the R.java file is Gen.
X. Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to accept username and password from the end user using Text
View and Edit Text.
2. Write a program to accept and display personal information of the student.
<TextView
android:id="@+id/Username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="UserName"
android:layout_marginTop="150dp"
android:layout_marginLeft="40dp" />
<EditText
android:id="@+id/User_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:layout_toRightOf="@+id/Username"
<TextView
android:id="@+id/Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:layout_marginTop="40dp"
android:layout_below="@+id/Username"
android:layout_marginLeft="40dp"
/>
<EditText
android:id="@+id/Pass_word"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dp"
android:layout_marginTop="190dp"
android:layout_toRightOf="@+id/Password"
android:ems="10"
android:inputType="textPassword" />
<Button
android:id="@+id/Submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Submit"
android:layout_marginTop="200dp"
android:layout_below="@+id/Pass_word"
/>
</RelativeLayout>
<TextView
android:id="@+id/Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="30dp"
android:text="Name" />
<EditText
android:id="@+id/editText_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="60dp"
android:layout_marginRight="@+id/Name"
android:ems="10" />
<EditText
android:id="@+id/editText_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Name"
android:layout_margin="60dp"
android:layout_marginRight="@+id/Age"
android:ems="10" />
<Button
android:id="@+id/Submit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="260dp"
android:text="Submit" />
<TextView
android:id="@+id/Student_Name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Submit"
android:visibility="invisible" />
<TextView
android:id="@+id/Student_age"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/Student_Name"
android:visibility="invisible" />
</RelativeLayout>
}
public void go()
{
Name=findViewById(R.id.editText_Name);
Age=findViewById(R.id.editText_age);
name=Name.getText().toString().trim();
age=Age.getText().toString().trim();
Display_Name=findViewById(R.id.Student_Name);
Display_Age=findViewById(R.id.Student_age);
Display_Name.setVisibility(View.VISIBLE);
Display_Name.setText("Name:"+name);
Display_Age.setVisibility(View.VISIBLE);
Display_Age.setText("Age:"+age);
}
}
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
In this practical, UI controls in android like Buttons are studied. There are various
types of buttons like Image button and toggle button which is studied.
2. Types of buttons–
Buttons can be divided into two categories the first is Buttons with text on, and
second is buttons with an image on.
3. Image Button –
A button with images on can contain both an image and a text. Android buttons with
images on are also called Image Button. In Android, Image Button is used to display
a normal button with a custom image in a button. In simple words we can say, Image
Button is a button with an image that can be pressed or clicked by the users. By
default it looks like a normal button with the standard button background that
changes the color during different button states. An image on the surface of a button
is defined within a xml (i.e. layout ) by using src attribute or within java class by
using setImageResource() method. We can also set an image or custom drawable in
the background of the image button . Image Button has all the properties of a normal
button so you can easily perform any event like click or any other event which you
can perform on a normal button.
Note: Standard button background image is displayed in the background of button
whenever you create an image button. To remove that image, you can define your
own background image in xml by using background attribute or in java class by
using setBackground() method.
4. Toggle Button–
A toggle button allows the user to change a setting between two states. You can
add a basic toggle button to your layout with the Toggle Button object. If you need
to change a button's state yourself, you can use the Compound
setOnCheckedChangeListener().
It is beneficial if user have to change the setting between two states. It can be used
to On/Off Sound, Wi-Fi, Bluetooth etc. By default, the android Toggle Button will
be in OFF (Unchecked) state. We can change the default state of Toggle Button by
using android:checked attribute. In case, if we want to change the state of Toggle
Button to ON (Checked), then we need to set android:checked = “true” in our
X. Exercise
Note: Faculty must ensure that every group of students use different
input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to create a toggle button to display ON / OFF Bluetooth on the
display screen.
2. Write a program to create a simple calculator.
Output
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
In this practical, all the previous UI controls in android like Text View, Edit Text
Buttons which are studied are implemented in this practical. Events are also handled
on the android UI controls used in the practical.
Define a button with login text and set its onClick Property. After that define the
X. Exercise
Note: Faculty must ensure that every group of students use different
input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to create a login form for a social networking site.
2. Write a program to create a login form for student registration system
super.onCreate(savedInstanceStat xmlns:app="http://schemas.andro
e); id.com/apk/res-auto"
setContentView(R.layout.activity_ xmlns:tools="http://schemas.andr
main); oid.com/tools"
username=findViewById(R.id.Use android:layout_width="match_pa
rname_ET); rent"
login=findViewById(R.id.Login); android:layout_height="match_p
arent"
login.setOnClickListener(new tools:context=".MainActivity">
View.OnClickListener()
{ <TextView
@Override android:id="@+id/Name"
public void onClick(View
v) { android:layout_width="wrap_con
tent"
Username=username.getText().toS
tring(); android:layout_height="wrap_co
ntent"
Toast.makeText(MainActivity.this android:text="Name"
,"Welcome
"+Username,Toast.LENGTH_SH android:layout_marginTop="40d
ORT).show(); p"
Intent intent=new
Intent(MainActivity.this,Empty_A android:layout_centerHorizontal=
ctivity.class); "true"
// android:textSize="20dp"
intent.putExtra("username",User />
name); <EditText
startActivity(intent);
android:id="@+id/Name_ET"
}
Maharashtra State Board of Technical Education 70
Mobile Application Development (22617)
android:layout_width="match_pa
rent" android:inputType="textPersonN
ame"
android:layout_height="wrap_co
ntent" android:layout_marginTop="20d
android:ems="10" p"
android:inputType="textPersonN android:layout_below="@+id/Age
ame" "
/>
android:layout_below="@+id/Na <TextView
me" android:id="@+id/Branch"
android:layout_marginTop="20d android:layout_width="wrap_con
p" tent"
/>
<TextView android:layout_height="wrap_co
android:id="@+id/Age" ntent"
android:text="Branch"
android:layout_width="wrap_con
tent" android:layout_marginTop="40d
p"
android:layout_height="wrap_co
ntent" android:layout_centerHorizontal=
android:text="Age" "true"
android:layout_marginTop="40d android:layout_below="@+id/Age
p" _ET"
android:textSize="20dp"
android:layout_centerHorizontal=
"true" />
<EditText
android:layout_below="@+id/Na
me_ET" android:id="@+id/Branch_ET"
android:textSize="20dp"
/> android:layout_width="match_pa
<EditText rent"
android:id="@+id/Age_ET"
android:layout_height="wrap_co
android:layout_width="match_pa ntent"
rent" android:ems="10"
android:layout_height="wrap_co android:inputType="textPersonN
ntent" ame"
android:ems="10"
Maharashtra State Board of Technical Education 71
Mobile Application Development (22617)
android:layout_marginTop="20d
p" android:layout_below="@+id/Se
mester"
android:layout_below="@+id/Bra />
nch" <Button
/> android:id="@+id/Login"
<TextView
android:id="@+id/Semester" android:layout_width="wrap_con
tent"
android:layout_width="wrap_con
tent" android:layout_height="wrap_co
ntent"
android:layout_height="wrap_co android:text="Login"
ntent"
android:text="Semester" android:layout_below="@+id/Se
mester_ET"
android:layout_marginTop="40d
p" android:layout_marginTop="40d
p"
android:layout_centerHorizontal=
"true" android:layout_centerHorizontal=
"true"
android:layout_below="@+id/Bra />
nch_ET"
android:textSize="20dp" <TextView
/> android:id="@+id/Login"
<EditText
android:layout_width="wrap_con
android:id="@+id/Semester_ET" tent"
android:layout_width="match_pa android:layout_height="wrap_co
rent" ntent"
android:text="Student Login"
android:layout_height="wrap_co android:textSize="40dp"
ntent"
android:ems="10" android:layout_centerHorizontal=
"true"
android:inputType="textPersonN
ame" android:textColor="@color/teal_2
00"
android:layout_marginTop="20d />
p" </RelativeLayout>
Output:
Ans 2.
XML file
<?xml version="1.0" android:layout_width="match_pa
encoding="utf-8"?> rent"
<RelativeLayout
xmlns:android="http://schemas.a android:layout_height="match_p
ndroid.com/apk/res/android" arent"
tools:context=".MainActivity">
xmlns:app="http://schemas.andro
id.com/apk/res-auto" <TextView
android:id="@+id/Name"
xmlns:tools="http://schemas.andr
oid.com/tools" android:layout_width="wrap_con
Maharashtra State Board of Technical Education 73
Mobile Application Development (22617)
tent"
android:layout_centerHorizontal=
android:layout_height="wrap_co "true"
ntent"
android:text="Name" android:layout_below="@+id/Na
me_ET"
android:layout_marginTop="40d android:textSize="20dp"
p" />
<EditText
android:layout_centerHorizontal= android:id="@+id/Age_ET"
"true"
android:textSize="20dp" android:layout_width="match_pa
/> rent"
<EditText
android:layout_height="wrap_co
android:id="@+id/Name_ET" ntent"
android:ems="10"
android:layout_width="match_pa
rent" android:inputType="textPersonN
ame"
android:layout_height="wrap_co
ntent" android:layout_marginTop="20d
android:ems="10" p"
android:inputType="textPersonN android:layout_below="@+id/Age
ame" "
/>
android:layout_below="@+id/Na <TextView
me" android:id="@+id/Branch"
android:layout_marginTop="20d android:layout_width="wrap_con
p" tent"
/>
<TextView android:layout_height="wrap_co
android:id="@+id/Age" ntent"
android:text="Branch"
android:layout_width="wrap_con
tent" android:layout_marginTop="40d
p"
android:layout_height="wrap_co
ntent" android:layout_centerHorizontal=
android:text="Age" "true"
android:layout_marginTop="40d android:layout_below="@+id/Age
p" _ET"
Maharashtra State Board of Technical Education 74
Mobile Application Development (22617)
android:textSize="20dp" android:id="@+id/Semester_ET"
/> android:layout_width="match_pa
<EditText rent"
android:id="@+id/Branch_ET" android:layout_height="wrap_co
ntent"
android:layout_width="match_pa android:ems="10"
rent"
android:inputType="textPersonN
android:layout_height="wrap_co ame"
ntent"
android:ems="10" android:layout_marginTop="20d
p"
android:inputType="textPersonN
ame" android:layout_below="@+id/Se
mester"
android:layout_marginTop="20d />
p" <Button
android:id="@+id/Login"
android:layout_below="@+id/Bra
nch" android:layout_width="wrap_con
/> tent"
<TextView
android:id="@+id/Semester" android:layout_height="wrap_co
ntent"
android:layout_width="wrap_con android:text="Login"
tent"
android:layout_below="@+id/Se
android:layout_height="wrap_co mester_ET"
ntent"
android:text="Semester" android:layout_marginTop="40d
p"
android:layout_marginTop="40d
p" android:layout_centerHorizontal=
"true"
android:layout_centerHorizontal= />
"true"
<TextView
android:layout_below="@+id/Bra android:id="@+id/Login"
nch_ET"
android:textSize="20dp" android:layout_width="wrap_con
/> tent"
<EditText
android:layout_height="wrap_co
Maharashtra State Board of Technical Education 75
Mobile Application Development (22617)
ntent" e);
android:text="Student Login"
android:textSize="40dp" setContentView(R.layout.activity_
main);
android:layout_centerHorizontal=
"true" name_et=findViewById(R.id.Nam
e_ET);
android:textColor="@color/teal_2
00" age_et=findViewById(R.id.Age_E
/> T);
</RelativeLayout>
branch_et=findViewById(R.id.Br
Java File: anch_ET);
package com.example.exp10_2;
sem_et=findViewById(R.id.Semes
ter_ET);
import login
androidx.appcompat.app.AppCo =findViewById(R.id.Login);
mpatActivity;
import android.content.Intent; login.setOnClickListener(new
import android.os.Bundle; View.OnClickListener()
import android.view.View; {
import android.widget.Button; @Override
import android.widget.EditText; public void onClick(View
import android.widget.Toast; v) {
import
android.widget.ToggleButton; Username=name_et.getText().toSt
ring();
import android.os.Bundle;
Age=age_et.getText().toString();
public class MainActivity extends
AppCompatActivity { Branch=branch_et.getText().toStr
ing();
EditText
name_et,age_et,branch_et,sem_et Semester=sem_et.getText().toStrin
; g();
String
Username,Age,Branch,Semester; Toast.makeText(MainActivity.this
Button login; ,"Welcome "+Username
,Toast.LENGTH_SHORT).show()
@Override ;
protected void onCreate(Bundle
savedInstanceState) { Toast.makeText(MainActivity.this
,"Age "+Age
super.onCreate(savedInstanceStat ,Toast.LENGTH_SHORT).show()
Maharashtra State Board of Technical Education 76
Mobile Application Development (22617)
; Intent(MainActivity.this,Empty_A
ctivity.class);
Toast.makeText(MainActivity.this //
,"Branch "+Branch intent.putExtra("username",User
,Toast.LENGTH_SHORT).show() name);
; startActivity(intent);
Toast.makeText(MainActivity.this }
,"Semester "+Semester });
,Toast.LENGTH_SHORT).show()
; }
}
Intent intent=new
Output:
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
2. Radio buttons allow the user to select one option from a set. You should use radio
buttons for optional sets that are mutually exclusive if you think that the user needs
to see all available options side-by-side.
X. Exercise
Note: Faculty must ensure that every group of students use different examples.
(Use blank space for answers or attach more pages if needed)
1. Write a program to show the following output. First two radio buttons are without
using radio group and next two radio buttons are using radio group. Note
Ans 1.
XML Code:
android:id="@+id/radioButt
<?xml version="1.0" on1"
encoding="utf-8"?>
<RelativeLayout android:layout_width="wrap
xmlns:android="http://schem _content"
as.android.com/apk/res/andro
id" android:layout_height="wrap
_content"
xmlns:app="http://schemas.a android:text="Radio
ndroid.com/apk/res-auto" Button 1"
xmlns:tools="http://schemas. android:layout_marginTop="
android.com/tools" 80dp"
android:textSize="40dp"
android:layout_width="matc />
h_parent" <RadioButton
android:layout_height="matc android:id="@+id/radioButt
h_parent" on2"
tools:context=".MainActivity android:layout_width="wrap
"> _content"
<TextView android:layout_height="wrap
_content"
android:id="@+id/textv" android:text="Radio
Button 2"
android:layout_width="wrap
_content" android:layout_marginTop="
40dp"
android:layout_height="wrap
_content" android:layout_below="@+id
android:text="Single /radioButton1"
Radio Buttons" android:textSize="40dp"
/>
android:textColor="#000000
" <RadioGroup
android:visibility="visible" android:layout_below="@+id
/radioButton2"
android:layout_centerHorizo
ntal="true" android:layout_width="matc
android:textSize="20dp" h_parent"
android:layout_marginTop=" android:layout_height="200d
20dp" p"
/>
<RadioButton android:layout_marginTop="
Maharashtra State Board of Technical Education 82
Mobile Application Development (22617)
50dp" android:checked="true"
android:id="@+id/radioGrou android:textSize="40dp"
p"> />
</RadioGroup>
<TextView <Button
android:id="@+id/textvr" android:id="@+id/Select"
android:layout_width="wrap android:layout_width="wrap
_content" _content"
android:layout_height="wrap android:layout_height="wrap
_content" _content"
android:text="Radio android:text="Select"
button inside RadioGroup"
android:layout_centerHorizo
android:textSize="20dp" ntal="true"
android:textColor="#000000 android:layout_below="@+id
" /radioGroup"
/>
android:visibility="visible" </RelativeLayout>
Java Code:
android:layout_marginTop="
25dp" package com.example.exp12;
/>
<RadioButton import
androidx.appcompat.app.App
android:id="@+id/male" CompatActivity;
setContentView(R.layout.acti radgender=findViewById(rad
vity_main); ioID);
radSelect=findViewById(R.id gender=radgender.getText().t
.radioGroup); oString().trim();
if(rad1.isChecked())
rad1=findViewById(R.id.radi {
oButton1); Toast.makeText(this,
"Radio button 1 is selected",
rad2=findViewById(R.id.radi Toast.LENGTH_SHORT).sho
oButton2); w();
}
select=findViewById(R.id.Sel if(rad2.isChecked())
ect); {
Toast.makeText(this,
select.setOnClickListener( "Radio button 2 is selected",
new View.OnClickListener() { Toast.LENGTH_SHORT).sho
public w();
void onClick(View v) { }
Toast.makeText(this,
select(); "Gender :" + gender,
} Toast.LENGTH_SHORT).sho
} w();
); }
} }
public void select()
Dated signature
Marks Obtained
of
Teacher
Process Product Total (25)
Related(10) Related(15)
I. Practical Significance
Progress bars are used to show progress of a task. For example, when you are uploading
or downloading something from the internet, it is better to show the progress of
download/upload to the user. In android there is a class called Progress Dialog that
allows you to create progress bar.
Ans1) You can update the percentage of progress displayed by using the
setProgress(int) method, or by calling incrementProgressBy(int) to increase the
current progress completed by a specified amount. By default, the progress bar is
full when the progress value reaches 100. You can adjust this default by setting the
android:max attribute.
Ans 2) <ProgressBar
android:id="@+id/indeterminateBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
Ans 3) XML attributes
1. android:indeterminateTintMode
2. android:interpolator
3. android:max
4. android:maxHeight
5. android:maxWidth
6. android:min
android:minHeight
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
A View occupies a rectangular area on the screen and is responsible for drawing and
event handling. View is the base class for widgets, which are used to create interactive
UI components (buttons, text fields, etc.). The View Group subclass is the base class for
layouts, which are invisible containers that hold other Views (or other ViewGroups) and
define their layout properties.
.
II. Relevant Program Outcomes (POs)
PO 1. Basic knowledge
PO 2- Discipline knowledge
PO 3- Experiments and practice
PO 4- Engineering tools
Grid View
In android Grid View is a view group that display items in two dimensional scrolling
grid (rows and columns), the grid items are not necessarily predetermined but they are
automatically inserted to the layout using a List Adapter. Users can then select any
grid item by clicking on it. Grid View is default scrollable so we don’t need to
use Scroll View or anything else with Grid View.
Image View
In Android, Image View class is used to display an image file in application. Image
file is easy to use but hard to master in Android, because of the various screen sizes in
Android devices. An android is enriched with some of the best UI design widgets that
allows us to build good looking and attractive UI based application.
Scroll Vie
In android scroll View can hold only one direct child. This means that, if you have
complex layout with more views(Buttons, Text Views or any other view) then you
must enclose them inside another standard layout like Table Layout, Relative
Layout or Linear Layout. You can specify layout_width and layout_height to adjust
width and height of screen. You can specify height and width in dp(density pixel) or
px(pixel). Then after enclosing them in a standard layout, enclose the whole layout
in scroll View to make all the element or views scrollable.
</GridView>
ActivityMain.java
import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;
public class MainActivity extends Activity {
GridView grid;
static final String[] letters = new String[] {
"A", "B", "C", "D", "E",
"F", "G", "H", "I", "J",
"K", "L", "M", "N", "O",
"P", "Q", "R", "S", "T",
"U", "V", "W", "X", "Y", "Z"};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
grid = (GridView) findViewById(R.id.gridView);
ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1, letters);
grid.setAdapter(adapter);
grid.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
Mah arashtra State Board of Technical Education 96
Mobile Application Development (22617)
Toast.makeText(getApplicationContext(),
((TextView) v).getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
3. Run the application
X. Exercise
(Use blank space provide for answers or attached more pages if needed)
1. Write a program to show the following output. Use appropriate view for the same.
Ans
XML code
import
<?xml version="1.0" encoding="utf-8"?> androidx.appcompat.app.AppCompatActiv
<RelativeLayout ity;
xmlns:android="http://schemas.android.co
m/apk/res/android" import android.os.Bundle;
xmlns:app="http://schemas.android.com
/apk/res-auto" public class MainActivity extends
xmlns:tools="http://schemas.android.co AppCompatActivity {
m/tools"
android:layout_width="match_parent" @Override
android:layout_height="match_parent" protected void onCreate(Bundle
tools:context=".MainActivity"> savedInstanceState) {
super.onCreate(savedInstanceState);
<ListView setContentView(R.layout.activity_ma
android:layout_width="match_parent in);
" }
android:layout_height="match_parent }
"
android:entries="@array/Language_li
st"
/>
</RelativeLayout>
strings.xml
<resources>
<string
name="app_name">Exp14_1</string>
<array name="Language_list">
<item>Android</item>
<item>Java</item>
<item>PHP</item>
<item>Hadoop</item>
<item>Sap</item>
<item>Phython</item>
<item>Ajax</item>
<item>C++</item>
<item>Puby</item>
<item>Rails</item>
</array>
</resources>
Java Code
package com.example.exp14_1;
Maharashtra State Board of Technical Education 98
Mobile Application Development (22617)
Output:
Ans 2:
<ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="347dp" />
<Button
android:id="@+id/button1"
android:layout_width="200dp"
android:layout_height="58dp"
android:gravity="center"
android:onClick="mess"
android:text="First Image "
android:textSize="20sp" />
<Button
android:id="@+id/button2"
android:layout_width="218dp"
android:layout_height="63dp"
android:onClick="mess"
android:text="Second Image"
android:textSize="20sp" />
</LinearLayout>
ActivityMain.java
package com.example.exp14_2;
Maharashtra State Board of Technical Education 100
Mobile Application Development (22617)
import
android.os.Bundle;
import
android.view.View;
import
android.widget.ImageView;
import
android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void mess(View v)
{
//initialize image view object
ImageView im=(ImageView)findViewById(R.id.imageView1);
//get clicked button id from view object
switch(v.getId())
{
case R.id.button1:
//if button1 is clicked than set image1
im.setImageResource(R.drawable.myi
mage); break;
case R.id.button2:
//if button2 is clicked than set image2
im.setImageResource(R.drawable.myi
mage2); break;
}
}
}
Ans 3
<?xml version="1.0" encoding="utf-8"?>
<GridView 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:id="@+id/activity_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="50dp"
Maharashtra State Board of Technical Education 102
android:listSelector="@color/white"
Mobile Application Development (22617)
android:numColumns="3"
android:padding="20dp"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
tools:context=".MainActivity" />
MainActivity.java
package com.example.exp14_3;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.GridView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GridView gridview = (GridView) findViewById(R.id.activity_grid);
gridview.setAdapter(new ButtonAdapter(this));
}
}
ButtonAdapter.java
package com.example.exp14_3;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.Toast;
public class ButtonAdapter extends BaseAdapter
{
private Context mContext;
private int btn_id;
private int total_btns = 15;
Maharashtra State Board of Technical Education 103
Mobile Application Development (22617)
4) Ans:
XML File:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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"
tools:context=".Exp_14_3">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:text="Scroll down"
android:textSize="20dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="1000dp"
android:text="You have scrolled too far..."
android:textSize="20dp"/>
</RelativeLayout>
</ScrollView>
Java File:
package com.example.exp14_4;
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);
}
}
Maharashtra State Board of Technical Education 105
Practical No. 17: Develop a program to create an activity
I. Practical Significance
An activity represents a single screen with a user interface. For example, an email
application might have one activity that shows a list of new emails, another activity to
compose an email, and one for reading emails.
Ans 1:
Ans 2: All graphics, strings, layouts, and other resource files are stored in the resource
file hierarchy under the res directory.
Ans 3:
Once onStop() is called then onRestart() can be called. onDestroy() is last in the order after
onStop(). onDestory() is called just before an activity is destroyed and after that it is gone it is not
possible to resurrect this.
onPause() is called when the activity is still in the screen, once the method execution is completed
then the activity loses focus. So, onPause() is logically before onStop(). From onPause() it is
possible to call onResume() but it is not possible once onStop() is called.
X. Exercise
(Use blank space provide for answers or attached more pages if needed)
1. Write a program to create a HelloWorld Activity using all lifecycles methods to
display messages using Log.d.
Ans1:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/andro
id"
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">
</androidx.constraintlayout.widget.ConstraintLayout>
Java code
package com.example.exp_17_1;
import
androidx.appcompat.app.AppCompatActivity;
import android.util.Log;
import android.os.Bundle;
AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("lifecycle","onCreate invoked by meena
talele");
}
@Override
protected void onStart() {
super.onStart();
Log.i("lifecycle","onStart
invoked");
}
@Override
protected void onResume(){
super.onResume();
Log.v("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();
Log.d("lifecycle","onDestroy
invoked");
}
//DONE BY Heet Zatakia
Output:
1 Gaurang Jadhav
2 Shweta Gupta
3 Heet Zatakia
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(15) Related(10) (25)
Practical No.18: Develop a program to implement new activity using
explicit intent and implicit intent.
I. Practical Significance
Android Intent is the message that is passed between components such as activities,
content providers, broadcast receivers, services etc. It facilitates communication
between different android components
Ans 2:
Intent i = new Intent(Intent.ACTION_DIAL, u); Context.startActivity(i)
X. Exercise
(Solve any one of the following. Use blank space provide for answers or attached more pages if
needed)
1. Write a program to create a text field and a button “Navigate”. Whenyou enter
“www.google.com” and press navigate button it should open google page.
2. Write a program to create button “Start Dialer”. When u click on this button it
should open the phone dialer.
3. Write a program to create two screens. First screen will take one numberinput from
user. After click on Factorial button, second screen will openand it should display
factorial of the same number. Also specify which type of intent you will use in this
case.
btnNavigate=findViewById(R.id.btnNavigate);
btnNavigate.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
editText=findViewById(R.id.edittext);
text=editText.getText().toString().trim();
if(text.equals("www.youtube.com"))
{
go();
}
}
});
}
public void go()
{
Uri uri=Uri.parse("https://www.youtube.com"); Intent
intent=new Intent(Intent.ACTION_VIEW,uri);
startActivity(intent);
}
}
<EditText android:id="@+id/edittext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
Maharashtra State Board of Technical Education 11
Mobile Application Development (22617)
android:hint="Enter URL"
/>
<Button
android:id="@+id/btnNavigate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Navigate"
android:layout_below="@+id/edittext"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
/>
</RelativeLayout>
Output:
Ans 2:
<Button
android:id="@+id/btnOpenDialer" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="Open Dialer"
android:layout_centerInParent="true"
/>
</RelativeLayout>
Java
package com.example.exp18_2;
@Override
Intent((Intent.ACTION_DIAL));
startActivity(intent);
}
);
}
}
Ans 3) 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:id=”@+id/relativeLayout”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
tools:context=”.MainActivity”>
<EditText
android:id=”@+id/editText”
android:layout_width=”315dp”
android:layout_height=”53dp”
android:layout_centerHorizontal=”true”
android:layout_centerVertical=”true”
android:fontFamily=”@font/poppins_medium”
android:hint=”Enter a number”
android:inputType=”number”
android:textSize=”20sp”
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.371”/>
MainActivity.java
package com.example.exp18_2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity
{EditText editText;
Button btnFact;
int fact = 1;
int num=0;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
btnFact = findViewById(R.id.btnFact);
btnFact.setOnClickListener(new View.OnClickListener()
{@Override
public void onClick(View v)
{go();
}
});
}
public void go(){
num = Integer.parseInt(editText.getText().toString().trim());
for(int i = 1; i <= num; i++){
fact = fact * i;
}
navigate();
}
public void navigate(){
Intent intent = new Intent(MainActivity.this,EmptyActivity.class);
intent.putExtra(“Fact”,fact);
intent.putExtra(“Num”,num);
startActivity(intent);
}
}
EmptyActivity.java
package com.example.exp18_2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class EmptyActivity extends AppCompatActivity
{TextView textView1,textView2;
int num,fact;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_empty);
Intent intent = getIntent();
num = intent.getIntExtra(“Num”,0);
fact = intent.getIntExtra(“Fact”,0);
textView1 = findViewById(R.id.textview1);
textView2 = findViewById(R.id.textview2);
textView1.setText(“Number = “+ num);
textView2.setText(“Factorial = “+ fact);
}
Maharashtra State Board of Technical Education 136
Mobile Application Development (22617)
}
4 Gaurang Jadhav
5 Shweta Gupta
6 Heet Zatakia
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(15) Related(10) (25)
I. Practical Significance
Broadcast Receivers simply respond to broadcast messages from other applications or
from the system. For example, applications can also initiate broadcasts to let other
applications know that some data has been downloaded to the device and is available
for them to use, so this is broadcast receiver who will intercept this communication
and will initiate appropriate action.
Ans 1) Broadcasting Intents are different from the Intents used to start an Activity or a Service
(discussed in previous Android Tutorials). The intent used to start an Activity makes
changes to an operation the user is interacting with, so the user is aware of the process.
However, in case of broadcasting intent, the operation runs completely in the background,
and is therefore invisible to the user.
ActivityMain.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/a
pk/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">
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="97dp"
android:layout_marginTop="341dp"
android:text="Broadcasting button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.exp21;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@Override
protected void onDestroy()
{ super.onDestroy();
MainActivity.this.
unregisterReceiver(myReceiver);
}
}
MyReceiver.java
package com.example.exp21;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
@Override
public void onReceive(Context context, Intent intent)
{String intentAction = intent.getAction();
if(intentAction != null){
String toastMessage = "unknown intent action";
Maharashtra State Board of Technical Education 142
Mobile Application Development (22617)
switch(intentAction){
case Intent.ACTION_AIRPLANE_MODE_CHANGED:
boolean status = intent.getBooleanExtra("state",true);
if(status){
toastMessage = "Airoplane Mode turned on";
}else {
toastMessage = "Airoplane Mode turned off";
}
break;
}
Toast.makeText(context,toastMessage,Toast.LENGTH_SHORT).show();
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.broadcast_messages">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Exp21">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</application>
</manifest>
1 Gaurang Jadhav
2 Shweta Gupta
3 Heet Zatakia
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
Most of the android devices have built-in sensors that measure motion, orientation,
and various environmental condition. Android allows us to get the raw data from these
sensors and use it in our application.
The next thing you need to do is to instantiate the object of Sensor class by calling the
getDefaultSensor() method of the SensorManager class. Its syntax is given below:
Sensor light;
light = sMgr.getDefaultSensor(Sensor.TYPE_LIGHT);
Once that sensor is declared, you need to register its listener and override two methods
which are onAccuracyChanged and onSensorChanged. Its syntax is as follows:
sMgr.registerListener(this, light,SensorManager.SENSOR_DELAY_NORMAL);
public void onAccuracyChanged(Sensor sensor, int accuracy)
{}
public void onSensorChanged(SensorEvent event) { }
Methods:
1. getDefaultSensor(int type) :- This method get the default sensor for a given type.
Explain methods
2. getOrientation(float[] R, float[] values) :- This method returns a description of the
current primary clip on the clipboard but not a copy of its data.
3. getInclination(float[] I) :- This method computes the geomagnetic inclination angle
in radians from the inclination matrix.
4. registerListener(SensorListener listener, int sensors, int rate) :-This method
registers a listener for the sensor
5. unregisterListener(SensorEventListener listener, Sensor sensor) :-This method
unregisters a listener for the sensors with which it is registered.
6. getOrientation(float[] R, float[] values) :-This method computes the device's
orientation based on the rotation matrix.
7. getAltitude(float p0, float p) :-This method computes theAltitude in meters from
the atmospheric pressure and the pressure at sea-level.
i. Unregister sensor listeners: Always make sure to disable sensors you don’t need,
especially when your activity is paused.
ii. Don’t block the onSensorChanged() method: Sensor data can change at a high rate,
which means the system may call the onSensorChanged(SensorEvent) method quite often.
As a best practice, you should do as little as possible within the onSensorChanged
iii. Avoid using deprecated methods or sensor types: Several methods and constants
have been deprecated. In particular, the TYPE_ORIENTATION sensor type has been
deprecated.
iv. Verify sensors before you use them: Always verify that a sensor exists on a device
before you attempt to acquire data from it. Don't assume that a sensor exists
simply because it's a frequently-used sensor.
v. Choose sensor delays carefully: Sensors can provide data at very high rates.
Allowing the system to send extra data that you don't need wastes systemresources
and uses battery power.
You can get the instance of SensorManager by calling the method getSystemService() and
passing the SENSOR_SERVICE constant in it.
SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE);
Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
3. Write a program to changes the background color when device is shuffled.
4. Write a program to display the list of sensors supported by the mobile device.
Ans 4) actvity_main.xml
MainActivity.java
package com.example.exp22_1;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
public class MainActivity extends AppCompatActivity
{SensorManager smm;
List<Sensor> sensor;
ListView lv;
@RequiresApi(api = Build.VERSION_CODES.M)
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
smm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
lv = (ListView) findViewById (R.id.listView1);
sensor = smm.getSensorList(Sensor.TYPE_ALL);
lv.setAdapter(new ArrayAdapter<Sensor>(this,android.R.layout.simple_list_item_1,
sensor));
}
}
1 Gaurang Jadhav
2 Shweta Gupta
3 Heet Zatakia
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance:
The Android framework includes support for various cameras and camera features
available on devices, allowing you to capture pictures and videos in your application.
We will be using the camera API to integrate the camera in our application. First you
will need to initialize the camera object using the static method provided by the api
called Camera. Open. Its syntax is:
Camera object = null;
object = Camera.open();
Methods:
1. startActivityForResult(Intent intent, int requestCode, Bundle options) It starts an
activity, but can take extra bundle of options withit.
2. startActivityFromChild(Activity child, Intent intent, int requestCode) It launches
Ans 1) activity_main.xml
<LinearLayout 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”
android:orientation=”vertical”>
<ImageView
android:id=”@+id/imageView”
android:layout_width=”fill_parent”
android:layout_height=”403dp”
android:layout_centerHorizontal=”true” />
<Button
android:id=”@+id/button”
android:layout_width=”match_parent”
android:layout_height=”73dp”
android:fontFamily=”@font/poppins_medium”
android:text=”Click here to capture image using camera”/>
</LinearLayout>
MainActivity.java
package com.example.exp23;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
Ans 2) activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
xmlns:android="http://schemas.android.com/apk/res/android"
tools:context=".MainActivity"
android:orientation="vertical">
<Button
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="Capture Video"
android:onClick="captureVideo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="150dp"
/>
<Button
android:layout_width="250dp"
android:layout_height="wrap_content"
android:text="Play Video"
android:onClick="playVideo"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
/>
</LinearLayout>
MainActivty.java
package com.example.exp23_2;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
public class MainActivity extends AppCompatActivity
{private static int VIDEO_REQUEST = 101;
private Uri videoUri = null;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void captureVideo(View view) {
Intent videoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
if(videoIntent.resolveActivity(getPackageManager())!=null)
{ startActivityForResult(videoIntent,VIDEO_REQUEST);
}
}
public void playVideo(View view) {
Intent playIntent = new Intent(this,VideoPlayActivity.class);
playIntent.putExtra("videoUri", videoUri.toString());
startActivity(playIntent);
Maharashtra State Board of Technical Education 158
Mobile Application Development (22617)
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{super.onActivityResult(requestCode, resultCode, data);
if (requestCode == VIDEO_REQUEST && resultCode == RESULT_OK)
{videoUri = data.getData();
}
}
}
activity_play_video.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=".VideoPlayActivity">
<VideoView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="35dp"
android:id="@+id/videoView"
/>
</RelativeLayout>
VideoPlayActivity.java
package com.example.exp23_2;
import androidx.appcompat.app.AppCompatActivity;
import android.net.Uri;
import android.os.Bundle;
import android.widget.VideoView;
public class VideoPlayActivity extends AppCompatActivity
{private VideoView mVideoView;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_play);
mVideoView = findViewById(R.id.videoView);
Uri videoUri = Uri.parse(getIntent().getExtras().getString("videoUri"));
mVideoView.setVideoURI(videoUri);
mVideoView.start();
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.exp23_2">
<uses-feature
android:name="android.hardware.camera2"
android:required="true" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
Maharashtra State Board of Technical Education 159
Mobile Application Development (22617)
android:supportsRtl="true"
android:theme="@style/Theme.Exp23_2">
<activity android:name=".VideoPlayActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
1 Gaurang Jadhav
2 Shweta Gupta
3 Heet Zatakia
I. Practical Significance
Bluetooth is a way to send or receive data between two different devices. Android
platform includes support for the Bluetooth framework that allows a device to
wirelessly exchange data with other Bluetooth devices.
In order to enable the Bluetooth of your device, call the intent with the following
Bluetooth constant ACTION_REQUEST_ENABLE. Its syntax is.
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
Once you enable the Bluetooth, you can get a list of paired devices by calling
getBondedDevices() method. It returns a set of Bluetooth devices. Its syntax is.
private
Set<BluetoothDevice>pairedDevi
ces; pairedDevices =
BA.getBondedDevices();
Ans 1) enable() and disable() methods are used to enable and disable Bluetooth adapters.
Ans 2) ACTION_REQUEST_DISCOVERABLE constant is used for turn on discovery of
bluetooth.
Ans 3) T he setName() method provided by java. lang. Thread class is used to change the name of
the thread and setName assigns a name to an object.
X. Exercise
Note: Faculty must ensure that every group of students use different input value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to turn on, get visible, list devices and turnoff
Bluetooth with the help of following GUI.
Activity_main.xml
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="56dp"
android:layout_marginTop="72dp"
android:text="Bluetooth_example"
android:textSize="35dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="54dp"
android:text="Turn On"
app:layout_constraintEnd_toStartOf="@+id/button2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView"
android:clickable="true"
android:onClick="on"
/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="54dp"
android:text="ListDevices"
app:layout_constraintEnd_toStartOf="@+id/button3"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/textView"
android:onClick="list"/>
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
Maharashtra State Board of Technical Education 164
Mobile Application Development (22617)
android:layout_marginTop="54dp"
android:text="Turn Off"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/button2"
app:layout_constraintTop_toBottomOf="@+id/textView"
android:onClick="off"/>
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="136dp"
android:layout_marginTop="40dp"
android:text="Get Visisble"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2"
android:onClick="visible"/>
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="84dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button4" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="11dp"
android:layout_marginTop="27dp"
android:text="Paired Device"
android:textColor="#ff34ff06"
android:textSize="25dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button4" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.exp24;
import androidx.appcompat.app.AppCompatActivity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
Maharashtra State Board of Technical Education 165
Mobile Application Development (22617)
public class MainActivity extends AppCompatActivity
{Button b1,b2,b3,b4;
private BluetoothAdapter BA;
private Set<BluetoothDevice>pairedDevices;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState)
{super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = findViewById(R.id.button);
b2 = findViewById(R.id.button2);
b3 = findViewById(R.id.button3);
b4 = findViewById(R.id.button4);
BA = BluetoothAdapter.getDefaultAdapter();
lv = findViewById(R.id.listView);
}
public void on(View
v){if(!BA.isEnabled()
){
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn,0);
Toast.makeText(getApplicationContext(),"Turned On", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(getApplicationContext(),"Already On", Toast.LENGTH_LONG).show();
}
}
public void off(View
v){BA.disable();
Toast.makeText(getApplicationContext(),"Turned Off", Toast.LENGTH_LONG).show();
}
public void visible(View v){
Intent getVisible = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(getVisible,0);
}
public void list(View
v){ pairedDevices =
BA.getBondedDevices();ArrayList list =
new ArrayList();
for(BluetoothDevicebt : pairedDevices) list.add(bt.getName());
Toast.makeText(getApplicationContext(),"Show Paired Devices",
Toast.LENGTH_LONG).show();
final ArrayAdapter adapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
}
}
Android_Manifest.xml
1 Gaurang Jadhav
2 Shweta Gupta
3 Heet Zatakia
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
I. Practical Significance
Bluetooth is a way to send or receive data between two different devices. Android
platform includes support for the Bluetooth framework that allows a device to wirelessly
exchange data with other Bluetooth devices.
In order to enable the Bluetooth of your device, call the intent with the following Bluetooth
constant ACTION_REQUEST_ENABLE. Its syntax is.
Intent turnOn = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
Once you enable the Bluetooth, you can get a list of paired devices by calling
getBondedDevices() method. It returns a set of Bluetooth devices. Its syntax is.
private
Set<BluetoothDevice>pairedDevi
ces; pairedDevices =
BA.getBondedDevices();
Ans 3) The setName() method provided by java. lang. Thread class is used to
change the name of the thread and setName assigns a name to an object.
X. Exercise
Note: Faculty must ensure that every group of students use different input
value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to turn on, get visible, list devices and turn off
Bluetooth with the help of following GUI.
android:id="@+id/relativeLayout">
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="Bluetooth Example"
android:textSize="35dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="28dp"
android:layout_toStartOf="@+id/imageView"
android:layout_toLeftOf="@+id/imageView"
android:clickable="true"
android:onClick="on"
android:text="Turn On"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textview"
android:layout_alignBottom="@+id/button"
android:layout_centerHorizontal="true"
android:layout_marginStart="144dp"
android:layout_marginLeft="144dp"
android:layout_marginTop="24dp"
android:onClick="visible"
android:text="Get visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button3" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="136dp"
android:layout_marginLeft="136dp"
android:layout_marginTop="28dp"
android:onClick="list"
android:text="List devices"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_marginTop="28dp"
android:layout_marginEnd="16dp"
android:layout_marginRight="16dp"
android:onClick="off"
android:text="turn off"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textview" />
<ListView
android:id="@+id/listView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_alignStart="@+id/button"
android:layout_alignLeft="@+id/button"
android:layout_alignParentBottom="true"
app:layout_constraintStart_toStartOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/textView2" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/button4"
android:layout_alignStart="@+id/listView"
android:layout_alignLeft="@+id/listView"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginTop="24dp"
android:text="Paired devices:"
android:textColor="#ff34ff06"
android:textSize="25dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button2" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.exp24;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
public class MainActivity extends Activity {
Button b1,b2,b3,b4;
private BluetoothAdapter BA;
private Set<BluetoothDevice>pairedDevices;
ListView lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.button);
b2=(Button)findViewById(R.id.button2);
b3=(Button)findViewById(R.id.button3);
b4=(Button)findViewById(R.id.button4);
BA = BluetoothAdapter.getDefaultAdapter();
lv = (ListView)findViewById(R.id.listView);
}
public void on(View v){
if (!BA.isEnabled()) {
Intent turnOn = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
Toast.makeText(getApplicationContext(), "Turned
on",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Already on",
Toast.LENGTH_LONG).show();
}
}
public void off(View v){
BA.disable();
Toast.makeText(getApplicationContext(), "Turned off"
,Toast.LENGTH_LONG).show();
}
public void visible(View v){
Intent getVisible = new
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(getVisible, 0);
}
public void list(View v){
pairedDevices = BA.getBondedDevices();
ArrayList list = new ArrayList();
for(BluetoothDevice bt : pairedDevices) list.add(bt.getName());
Toast.makeText(getApplicationContext(), "Showing Paired
Devices",Toast.LENGTH_SHORT).show();
final ArrayAdapter adapter = new
ArrayAdapter(this,android.R.layout.simple_list_item_1, list);
lv.setAdapter(adapter);
}
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.exp24">
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Exp24">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
XI. References / Suggestions for further Reading
1. https://www.tutorialspoint.com/android
2. https://stuff.mit.edu
3. https://www.tutorialspoint.com/android/android_advanced_tutorial.pdf
4. https://developer.android.com
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 26: Perform Async task using SQLite.
I. Practical Significance
Android AsyncTask is an abstract class provided by Android which gives us the liberty
to perform heavy tasks in the background and keep the UI thread light thus making the
application more responsive.
Ans 2) In some cases it is possible to accomplish the same task with either an
AsyncTask or a Service however usually one is better suited to a task than the other.
AsyncTasks are designed for once-off time-consuming tasks that cannot be run on the
UI thread. A common example is fetching/processing data when a button is pressed.
Services are designed to be continually running in the background. In the example
above of fetching data when a button is pressed, you could start a service, let it fetch
the data, and then stop it, but this is inefficient. It is far faster to use an AsyncTask
that will run once, return the data, and be done.
If you need to be continually doing something in the background, though, a Service
is your best bet. Examples of this include playing music, continually checking for new
data, etc.
Ans 3) AsyncTasks should ideally be used for short operations (a few seconds at the
most.) If you need to keep threads running for long periods of time, it is highly
recommended you use the various APIs provided by the java.util.concurrent package
such as Executor, ThreadPoolExecutor and FutureTask.
X. Exercise
Note: Faculty must ensure that every group of students use different input values.
(Use blank space for answers or attach more pages if needed)
1. Write a program to insert data in SQLite database using AsyncTask
Ans1) 1. activity_main.xml
xmlns:app="http://schemas.android.com/a android:layout_below="@+id/editTextRec
pk/res-auto" ordNum"
xmlns:tools="http://schemas.android.com/t android:layout_alignLeft="@+id/editText
ools" RecordNum"
android:layout_width="match_parent" android:layout_marginStart="44dp"
android:layout_height="match_parent" android:layout_marginLeft="44dp"
tools:context=".MainActivity"> android:layout_marginTop="44dp"
<EditText
android:fontFamily="@font/poppins_medi
android:id="@+id/editTextRecordNum" um"
android:layout_width="318dp" android:text="Normal Insert"
android:layout_height="50dp"
app:layout_constraintStart_toStartOf="par
android:layout_alignParentLeft="true" ent"
android:layout_alignParentTop="true" app:layout_constraintTop_toBottomOf="
android:layout_marginStart="44dp" @+id/editTextRecordNum" />
android:layout_marginLeft="44dp" <Button
android:layout_marginTop="124dp" android:id="@+id/buttonFastInsert"
android:ems="10"
android:layout_width="wrap_content"
android:fontFamily="@font/poppins_medi
um" android:layout_height="wrap_content"
android:inputType="number"
android:singleLine="true" android:layout_alignBaseline="@+id/butt
android:textColor="#FFFFFF" onNormalInsert"
app:layout_constraintStart_toStartOf="par android:layout_alignBottom="@+id/butto
ent" nNormalInsert"
android:layout_marginTop="44dp"
app:layout_constraintTop_toTopOf="pare android:layout_marginEnd="48dp"
nt" android:layout_marginRight="48dp"
tools:ignore="MissingConstraints" />
<Button android:layout_toRightOf="@+id/buttonN
ormalInsert" android:layout_alignLeft="@+id/buttonNo
rmalInsert"
android:fontFamily="@font/poppins_medi android:layout_marginStart="16dp"
um" android:layout_marginLeft="16dp"
android:text="Fast Insert" android:layout_marginTop="36dp"
app:layout_constraintEnd_toEndOf="pare android:fontFamily="@font/poppins_medi
nt" um"
android:padding="10dp"
app:layout_constraintTop_toBottomOf=" android:text="Status"
@+id/editTextRecordNum" /> android:textColor="#FFFFFF"
<TextView android:textSize="18sp"
android:id="@+id/textViewStatus"
app:layout_constraintStart_toStartOf="par
android:layout_width="wrap_content" ent"
android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="
@+id/buttonNormalInsert" />
android:layout_below="@+id/buttonNorm </androidx.constraintlayout.widget.Constr
alInsert" aintLayout>
2. MainActivity.java
3. DatabaseHandler.java
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 28: Create login application where you will have to validate
username and password till the username and password
is not validated, login button should remain disabled.
I. Practical Significance
Today Login and Registration form in Android are part of every application out there.
So, when we are programming, we work with many registration forms. Forms can be
very different from a simple login or registration to a complex ordering form for any
application.
Ans 2) Various GUI components used to design the login form with validation are as
follows:
1. Add the first EditText for the first name.
a. Name it "firstName" (use the id attribute to name the component).
b. Set text to "".
c. Set the hint to "First name".
d. This one should have 3 constraints; one links to the top of the screen, second
to left border and third to the right border.
2. Add EditText for the last name.
a. Name it "lastName".
b. Set text to "".
c. Set the hint to "First name".
d. This one should have 3 constraints; one linked to the bottom of "First name",
second to left border and third to the right border.
3. Add EditText for postal address.
a. Name it "address".
b. Set text to "".
Ans 3) EditText is used for user input. TextView is used to display text and is not
editable by the user. TextView is the widget used when you want the user to View
the Text (such as a label, etc) and EditText used when you want the user to be able to
edit the text.
X. Exercise
Note: Faculty must ensure that every group of students use different input
values.
(Use blank space for answers or attach more pages if needed)
1. Write a program to create the login form with necessary validations like length of
username and password, empty text fields, count of unsuccessful login attempts.
Display the login successful/Unsuccessful toastmessage.
android:layout_alignParentLeft="true" android:layout_below="@+id/User_passw
ord"
android:layout_alignParentEnd="true"
android:layout_centerHorizontal="true"
android:layout_alignParentRight="true" android:layout_marginTop="25dp"
android:layout_marginStart="49dp" android:text="Login" />
android:layout_marginLeft="49dp" <EditText
android:layout_marginTop="25dp" android:id="@+id/User_email"
android:layout_marginEnd="53dp" android:layout_width="310dp"
android:layout_marginRight="53dp"
android:ems="10" android:layout_height="wrap_content"
android:hint="Password:"
android:inputType="textPassword" android:layout_below="@+id/User_Text"
android:padding="10dp" />
<TextView
android:id="@+id/User_Text" android:layout_alignParentStart="true"
android:layout_width="wrap_content" android:layout_alignParentLeft="true"
android:layout_height="wrap_content" android:layout_alignParentEnd="true"
android:layout_alignParentTop="true" android:layout_alignParentRight="true"
android:layout_marginStart="49dp"
android:layout_alignParentEnd="true" android:layout_marginLeft="49dp"
android:layout_marginTop="80dp"
android:layout_alignParentRight="true" android:layout_marginEnd="52dp"
android:layout_marginTop="113dp" android:layout_marginRight="52dp"
android:layout_marginEnd="106dp" android:hint="Email:"
android:layout_marginRight="106dp"
android:inputType="textEmailAddress"
android:fontFamily="@font/poppins_semi android:padding="10dp" />
bold" </RelativeLayout>
android:text="User Login"
2. MainActivity.java
3. activity_main2.xml
5. MainActivity2.java
package com.example.coexp28;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}}
5. AndroidMainfest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.COEXP28">
<activity android:name=".MainActivity2"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
XI. References / Suggestions for further Reading
1. https://www.tutorialspoint.com/android
2. https://stuff.mit.edu
3. https://www.tutorialspoint.com/android/android_advanced_tutorial.pdf
4. https://developer.android.com
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 29: Develop a program to: a) Send SMS b) Receive SMS
I. Practical Significance
Android devices can send and receive messages to or from any other phone that supports
Short Message Service (SMS). Android offers the Messenger application that can send
and receive SMS messages.
Ans1) 1. activity_main.xml
android:background="@color/cardview_s <Button
hadow_start_color"/> android:id="@+id/bt_send"
<EditText android:layout_width="wrap_content"
android:id="@+id/et_message"
android:layout_height="wrap_content"
android:layout_width="match_parent" android:text="Send SMS"
android:layout_marginTop="32dp"/>
android:layout_height="wrap_content"
android:hint="Enter Message" </LinearLayout>
2. MainActivity.java
package com.example.coexp29;
import androidx.annotation.NonNull; EditText etPhone, etMessage;
import Button btSend;
androidx.appcompat.app.AppCompatActiv
ity; @Override
import androidx.core.app.ActivityCompat; protected void onCreate(Bundle
import savedInstanceState) {
androidx.core.content.ContextCompat; super.onCreate(savedInstanceState);
sendMessage(); @Override
}else{ public void
onRequestPermissionsResult(int
ActivityCompat.requestPermissions(Main requestCode, @NonNull
Activity.this, new @org.jetbrains.annotations.NotNull
String[]{Manifest.permission.SEND_SMS
String[] permissions, @NonNull
}, 100);
@org.jetbrains.annotations.NotNull int[]
}
grantResults) {
}
});
super.onRequestPermissionsResult(request
}
Code, permissions, grantResults);
private void sendMessage() {
if (requestCode == 100 &&
String sPhone =
grantResults.length > 0 &&
etPhone.getText().toString().trim();
grantResults[0]
String sMessage =
==
etMessage.getText().toString().trim();
PackageManager.PERMISSION_GRANTE
D){
if (!sPhone.equals("") &&
!sMessage.equals("")){ sendMessage();
SmsManager smsManager = }else{
SmsManager.getDefault();
Toast.makeText(getApplicationContext(),
smsManager.sendTextMessage(sPhone, "Permission Denied!",
null, sMessage, null, null); Toast.LENGTH_SHORT).show();
}
}
Toast.makeText(getApplicationContext(), }
"SMS sent successfully!",
3. AndroidManifest.xml
android:roundIcon="@mipmap/ic_launcher_ro
und"
android:supportsRtl="true"
android:theme="@style/Theme.COEXP29">
<activity android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUN
CHER" />
</intent-filter>
</activity>
</application>
</manifest>
XI. References / Suggestions for further Reading
1. https://www.tutorialspoint.com/android
2. https://stuff.mit.edu
3. https://www.tutorialspoint.com/android/android_advanced_tutorial.pdf
4. https://developer.android.com
XII. Assessment Scheme
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 30: Develop a program to send and receive e-mail.
I. Practical Significance
To send email from your Android application, you have to write an Activity that needs
to launch an email client and send an email using your Android device. This practice
focuses on integrating the existing email clients in the new applications.
Ans 1) Before starting Email Activity, You must know Email functionality with
intent, Intent is carrying data from one component to another component with-in the
application or outside the application.
To send an email from your application, you don’t have to implement an email client
from the beginning, but you can use an existing one like the default Email app
provided from Android, Gmail, Outlook, K-9 Mail etc. For this purpose, we need to
write an Activity that launches an email client, using an implicit Intent with the right
action and data. In this example, we are going to send an email from our app by using
an Intent object that launches existing email clients.
Ans 2) Extra fields that can be used in an application to send emails are as follows:
EXTRA_EMAIL - It’s an array of email addresses
EXTRA_SUBJECT - The subject of the email that we want to send
EXTRA_TEXT - The body of the email
X. Exercise
Note: Faculty must ensure that every group of students use different input
value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to send email.
Ans1) 1. Activity_main.xml
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="To:"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<EditText
android:id="@+id/edit_text_to"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Subject:"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<EditText
android:id="@+id/edit_text_subject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailSubject" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Message:"
android:textAppearance="@style/TextAppearance.AppCompat.Large" />
<EditText
android:id="@+id/edit_text_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start|top"
android:lines="10" />
<Button
android:id="@+id/button_send"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="send" />
</LinearLayout>
2. MainActivity.java
package com.example.coexp30;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
mEditTextTo = findViewById(R.id.edit_text_to);
mEditTextSubject = findViewById(R.id.edit_text_subject);
mEditTextMessage = findViewById(R.id.edit_text_message);
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 31: Deploy map-based application. Part I
I. Practical Significance
Android allows us to integrate google maps in our application. You can show any
location on the map, or can show different routes on the map. You can also customize
the map according to your choices.
Ans 1) The following map types are supported in Google Maps API:
1. ROADMAP (normal, default 2D map)
2. SATELLITE (photographic map)
3. HYBRID (photographic map + roads and city names)
4. TERRAIN (map with mountains, rivers, etc.)
The map type is specified either within the Map properties object, with the
mapTypeId property:
var mapOptions = {
center:new google.maps.LatLng(51.508742,-0.120850),
zoom:7,
mapTypeId: google.maps.MapTypeId.HYBRID
};
Or by calling the map's setMapTypeId() method:
map.setMapTypeId(google.maps.MapTypeId.HYBRID);
Ans 2) To enable or disable all interactive features, we use the interactivity() method.
Set true or false to the method depending if you'd like to enable the map interactivity
or disable it.
X. Exercise
Note: Faculty must ensure that every group of students use different input values.
(Use blank space for answers or attach more pages if needed)
1. Write a program to locate the user's current location.
Ans1) 1. activity_main.xml
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/google_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
/>
</RelativeLayout>
2. build.gradle (:app)
plugins { buildTypes {
id 'com.android.application' release {
} minifyEnabled false
proguardFiles
android { getDefaultProguardFile('proguard-android-
compileSdkVersion 30 optimize.txt'), 'proguard-rules.pro'
buildToolsVersion "30.0.3" }
}
defaultConfig { compileOptions {
applicationId "com.example.coexp31" sourceCompatibility
minSdkVersion 17 JavaVersion.VERSION_1_8
targetSdkVersion 30 targetCompatibility
JavaVersion.VERSION_1_8
versionCode 1 }
versionName "1.0" }
testInstrumentationRunner dependencies {
"androidx.test.runner.AndroidJUnitRunner"
} implementation
'androidx.appcompat:appcompat:1.3.0' implementation
implementation 'com.google.android.gms:play-services-
'com.google.android.material:material:1.3.0' location:18.0.0'
implementation testImplementation 'junit:junit:4.+'
'androidx.constraintlayout:constraintlayout:2.0. androidTestImplementation
4' 'androidx.test.ext:junit:1.1.2'
implementation androidTestImplementation
'com.google.android.gms:play-services- 'androidx.test.espresso:espresso-core:3.3.0'
maps:17.0.1' }
3. strings.xml
<resources>
<string name="app_name">COEXP31</string>
<string name="map_key"
translatable="false">AIzaSyB_qsP8AOP_P0MdlPz-48TDaJYjTP3vbjo</string>
</resources>
4. MainActivity.java
5. AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.COEXP31">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="@string/map_key"/>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</manifest>
ianistan Islamabad JAMMU AND
KASHMIR
Lahore,°
°UNJA9
Pakistan UTTARAKHAND
HAR’7ANA
GUJARA+ Ahmedabad
India
Ur
Mumbai / AHARASHTFA
*ELANGANA
Hyderabad
ANOHRA
KAPNATAkA PRADESD
Bengaluru
KEPALA
Sri Lan
19.043085172.8572711
Google Google
XI. References / Suggestions for further Reading
1. https://www.tutorialspoint.com/android
2. https://stuff.mit.edu
3. https://www.tutorialspoint.com/android/android_advanced_tutorial.pdf
4. https://developer.android.com
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)
Practical No. 32: Deploy map-based application. Part II
I. Practical Significance
Android allows us to integrate google maps in our application. You can show any
location on the map, or can show different routes on the map. You can also customize
the map according to your choices.
Ans 2) The Maps API provides a compass graphic which appears in the top left corner
of the map under certain circumstances. The compass will only ever appear when the
camera is oriented such that it has a non-zero bearing or non-zero tilt. When the user
clicks on the compass, the camera animates back to a position with bearing and tilt of
zero (the default orientation) and the compass fades away shortly afterwards. You can
disable the compass appearing altogether by calling
UiSettings.setCompassEnabled(boolean). However, you cannot force the compass
to always be shown.
X. Exercise
Note: Faculty must ensure that every group of students use different input
value.
(Use blank space for answers or attach more pages if needed)
1. Write a program to draw a route between two locations.
2. MainActivity.java
package com.example.coexp32;
import androidx.appcompat.app.AppCompatActivity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText etSource,etDestination;
Button btTrack;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etSource = findViewById(R.id.et_source);
etDestination = findViewById(R.id.et_destination);
btTrack = findViewById(R.id.bt_track);
btTrack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sSource = etSource.getText().toString().trim();
String sDestination = etDestination.getText().toString().trim();
if(sSource.equals("") && sDestination.equals("")){
Toast.makeText(MainActivity.this, "Enter both location",
Toast.LENGTH_SHORT).show();
}else{
DisplayTrack(sSource,sDestination); }}}); }
private void DisplayTrack(String sSource, String sDestination) {
try{
Dated signature of
Marks Obtained
Teacher
Process Product Total
Related(10) Related(15) (25)