Androidlab Manual Upto16
Androidlab Manual Upto16
EXPERIMENT NO:1
Tools Required
• Android Studio
• Android SDK
Steps
• Open Android Studio and select "Start a new Android Studio project".
• Click Next.
Configure your project:
• Name: HelloWorldApp
• Minimum API Level: Select API 21: Android 5.0 (Lollipop) or later.
• Click Finish.
CODE:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:textSize="24sp"
android:textColor="@android:color/black" />
</LinearLayout>
• This file already contains the code for setting up the main activity. Since our goal is simple, no
modifications are required to this file.
CODE2:
package com.example.helloworldapp
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
5. Running the Application
• Choose your device from the list, and the application will be installed and launched.
• Android Studio
• Android SDK
o Name: ToastMessageApp
o Language: Kotlin
4. Click Finish:
1. Open activity_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/button_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show Toast"
android:layout_centerInParent="true" />
</RelativeLayout>
1. Open MainActivity.kt:
CODE2:
package com.example.toastmessageapp
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
buttonToast.setOnClickListener {
o Click the green "Run" button (or Shift + F10) in Android Studio.
o Once the app is installed and running on the device/emulator, click the Show Toast
button.
o A toast message saying "This a simple toast message" should appear on the screen.
EXPERIMENT NO:3
AIM: Create an Android app to accept a number in textfield and display the factorial of it in a Tou
message on clicking a button.
• Start a new Android Studio project and choose the Empty Activity template.
2. Update activity_main.xml:
Xml:
<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">
<EditText
android:id="@+id/inputNumber"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Enter a number"
android:inputType="number"
android:layout_marginTop="32dp"
android:layout_marginHorizontal="16dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<Button
android:id="@+id/calculateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate Factorial"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@id/inputNumber"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
3. MainActivity Code:
Java:
package com.example.factorialapp;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
EditText inputNumber;
Button calculateButton;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inputNumber = findViewById(R.id.inputNumber);
calculateButton = findViewById(R.id.calculateButton);
calculateButton.setOnClickListener(new View.OnClickListener() {
@Override
if (!TextUtils.isEmpty(input)) {
} else {
});
long factorial = 1;
factorial *= i;
}
return factorial;
Kotlin (MainActivity.kt):
package com.example.factorialapp
import android.os.Bundle
import android.text.TextUtils
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
inputNumber = findViewById(R.id.inputNumber)
calculateButton = findViewById(R.id.calculateButton)
calculateButton.setOnClickListener {
if (!TextUtils.isEmpty(input)) {
} else {
for (i in 2..num) {
factorial *= i
return factorial
4. Explanation:
• The factorial calculation is done in the calculateFactorial() function, which multiplies the
numbers from 1 up to the input number.
• Enter a number, click the button, and the factorial result will be displayed in a Toast message.
EXPERIMENT NO:4
• Android Studio
• Android SDK
App Components:
Step-by-Step Procedure:
2. Update activity_main.xml:
In the layout XML file, we will design the UI to contain multiple CheckBox widgets and a Button.
Xml:
<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/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_marginTop="30dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<CheckBox
android:id="@+id/checkBoxReading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reading"
app:layout_constraintTop_toBottomOf="@id/tvTitle"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"/>
<CheckBox
android:id="@+id/checkBoxTraveling"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Traveling"
app:layout_constraintTop_toBottomOf="@id/checkBoxReading"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"/>
<CheckBox
android:id="@+id/checkBoxGaming"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gaming"
app:layout_constraintTop_toBottomOf="@id/checkBoxTraveling"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="20dp"
android:layout_marginStart="20dp"/>
<Button
android:id="@+id/btnSubmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
app:layout_constraintTop_toBottomOf="@id/checkBoxGaming"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="40dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
3. MainActivity Code:
Next, handle the logic for checking the selected checkboxes and displaying the result using a Toast
message.
MainActivity.java (Java):
package com.example.checkboxapp;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
Button btnSubmit;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBoxReading = findViewById(R.id.checkBoxReading);
checkBoxTraveling = findViewById(R.id.checkBoxTraveling);
checkBoxGaming = findViewById(R.id.checkBoxGaming);
btnSubmit = findViewById(R.id.btnSubmit);
btnSubmit.setOnClickListener(new View.OnClickListener() {
@Override
if (checkBoxReading.isChecked()) {
result.append("Reading\n");
if (checkBoxTraveling.isChecked()) {
result.append("Traveling\n");
if (checkBoxGaming.isChecked()) {
result.append("Gaming\n");
}
Toast.makeText(MainActivity.this, result.toString(), Toast.LENGTH_LONG).show();
});
MainActivity.kt (Kotlin):
package com.example.checkboxapp
import android.os.Bundle
import android.widget.Button
import android.widget.CheckBox
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
checkBoxReading = findViewById(R.id.checkBoxReading)
checkBoxTraveling = findViewById(R.id.checkBoxTraveling)
checkBoxGaming = findViewById(R.id.checkBoxGaming)
btnSubmit = findViewById(R.id.btnSubmit)
btnSubmit.setOnClickListener {
if (checkBoxReading.isChecked) result.append("Reading\n")
if (checkBoxTraveling.isChecked) result.append("Traveling\n")
if (checkBoxGaming.isChecked) result.append("Gaming\n")
4. Explanation of Code:
• CheckBox Widgets: These are UI elements that let users select multiple options.
• The user will see the checkboxes and can select options. After clicking "Submit", the selected
hobbies will be shown in a Toast message.
EXPERIMENT NO:5
o Set Package Name, Save Location, Language (Java or Kotlin), and Minimum API
Level.
1. Open res/layout/activity_main.xml.
<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">
<Spinner
android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="50dp" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@+id/spinner"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:text="Selected Item"
android:textSize="18sp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
1. Open res/values/strings.xml.
<resources>
<string name="app_name">SpinnerApp</string>
<string-array name="items_array">
<item>Item 1</item>
<item>Item 2</item>
<item>Item 3</item>
<item>Item 4</item>
</string-array>
</resources>
For Java:
1. Open MainActivity.java.
2. Add the following code to populate the Spinner and handle selection events:
package com.example.spinnerapp;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
R.array.items_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
@Override
});
For Kotlin:
1. Open MainActivity.kt.
2. Add the following code to populate the Spinner and handle selection events:
package com.example.spinnerapp
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// Reference to Spinner and TextView
ArrayAdapter.createFromResource(
this,
R.array.items_array,
android.R.layout.simple_spinner_item
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
spinner.adapter = adapter
override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
}
Step 5: Build and Run the Application
1. Build the Project: Go to Build > Make Project to ensure the code compiles without errors.
2. Run the Application: Connect an Android device or launch an emulator, and click the Run
button to deploy the app.
Output:
EXPERIMENT NO:6
AIM: Create an Android app to illustrate the use of Datepickerwidget and Timepickerwidget.
o Set the Minimum API Level (e.g., API 21: Android 5.0 Lollipop).
o Click Finish.
Step 2: Modify the Layout XML to Add DatePicker and TimePicker Widgets
1. Open res/layout/activity_main.xml.
2. Update the XML code to include DatePicker, TimePicker, and TextView widgets:
xml
Copy code
<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">
<DatePicker
android:id="@+id/datePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="50dp" />
<TimePicker
android:id="@+id/timePicker"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/datePicker"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="50dp" />
<TextView
android:id="@+id/resultTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
app:layout_constraintTop_toBottomOf="@+id/timePicker"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:textSize="18sp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
For Java:
1. Open MainActivity.java.
java
Copy code
package com.example.datetimepickerapp;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import androidx.appcompat.app.AppCompatActivity;
import java.util.Calendar;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.resultTextView);
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH);
day = calendar.get(Calendar.DAY_OF_MONTH);
hour = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);
timePicker.setIs24HourView(true);
// DatePicker listener
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
MainActivity.this.year = year;
MainActivity.this.month = monthOfYear;
MainActivity.this.day = dayOfMonth;
updateResult();
});
// TimePicker listener
timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {
@Override
MainActivity.this.hour = hourOfDay;
MainActivity.this.minute = minute;
updateResult();
});
For Kotlin:
1. Open MainActivity.kt.
kotlin
Copy code
package com.example.datetimepickerapp
import android.os.Bundle
import android.widget.DatePicker
import android.widget.TextView
import android.widget.TimePicker
import androidx.appcompat.app.AppCompatActivity
import java.util.*
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
resultTextView = findViewById(R.id.resultTextView)
year = calendar.get(Calendar.YEAR)
month = calendar.get(Calendar.MONTH)
day = calendar.get(Calendar.DAY_OF_MONTH)
hour = calendar.get(Calendar.HOUR_OF_DAY)
minute = calendar.get(Calendar.MINUTE)
timePicker.is24HourView = true
// DatePicker listener
year = y
month = m
day = d
updateResult()
// TimePicker listener
timePicker.setOnTimeChangedListener { _, h, m ->
hour = h
minute = m
updateResult()
1. Build the Project: Go to Build > Make Project to ensure there are no compilation errors.
2. Run the Application: Connect an Android device or use an emulator, and click the Run
button to deploy the app.
Output:
EXPERIMENT NO:7
AIM: Create an Android app that uses multiple UI controls like EditText, CheckBox, Spinner and
Buttons
6. Click Finish.
In this step, you will create a layout that includes an EditText, CheckBox, Spinner, and Button.
CODE1:
<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">
<EditText
android:id="@+id/editTextName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<CheckBox
android:id="@+id/checkBoxSubscribe"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Subscribe to newsletter"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/editTextName"
app:layout_constraintLeft_toLeftOf="parent" />
<Spinner
android:id="@+id/spinnerOptions"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/checkBoxSubscribe"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:id="@+id/buttonSubmit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Submit"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/spinnerOptions"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<TextView
android:id="@+id/textViewResult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
app:layout_constraintTop_toBottomOf="@+id/buttonSubmit"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Now, initialize these UI controls and handle the user input in Java/Kotlin.
MainActivity (Java):
package com.example.multipleuicontrolsapp;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
CheckBox checkBoxSubscribe;
Spinner spinnerOptions;
Button buttonSubmit;
TextView textViewResult;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Initialize UI components
editTextName = findViewById(R.id.editTextName);
checkBoxSubscribe = findViewById(R.id.checkBoxSubscribe);
spinnerOptions = findViewById(R.id.spinnerOptions);
buttonSubmit = findViewById(R.id.buttonSubmit);
textViewResult = findViewById(R.id.textViewResult);
buttonSubmit.setOnClickListener(new View.OnClickListener() {
@Override
String result = "Name: " + name + "\nSubscription: " + subscribe + "\nOption: " + option;
textViewResult.setText(result);
});
}
}
To populate the Spinner with options, add an array to the strings.xml file.
<resources>
<string-array name="spinner_options">
<item>Option 1</item>
<item>Option 2</item>
<item>Option 3</item>
</string-array>
</resources>
Now, go back to the MainActivity.java file and set up an adapter to bind this array to the Spinner:
R.array.spinner_options, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerOptions.setAdapter(adapter);
3. Input data in the EditText, select/deselect the CheckBox, choose an option from the Spinner,
and click the Button to see the results.
EXPERIMENT NO:8
AIM: Create an Android app to shift from one activity to another activity using a button.
• Open res/layout/activity_main.xml.
CODE 1:
<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">
<Button
android:id="@+id/buttonShift"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
• Open res/layout/activity_second.xml.
CODE2:
<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=".SecondActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonShift.setOnClickListener(new View.OnClickListener() {
@Override
startActivity(intent);
});
package com.example.myapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class SecondActivity extends AppCompatActivity {
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
• Declare the SecondActivity in the AndroidManifest.xml file. This ensures Android knows
about the new activity.
<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.MyApp">
<activity android:name=".SecondActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
</intent-filter>
</activity>
</application>
Expected Output:
• On clicking the button, the app transitions to SecondActivity and displays a simple text
message.
EXPERIMENT 9:
o Add Button elements for selecting an image and applying effects (e.g., Grayscale,
Sepia, Blur).
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="400dp"
android:scaleType="centerCrop"
android:layout_centerHorizontal="true"
android:layout_marginTop="16dp"/>
<Button
android:id="@+id/btnSelectImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Select Image"
android:layout_below="@id/imageView"
android:layout_centerHorizontal="true"/>
<Button
android:id="@+id/btnApplyGrayscale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Grayscale"
android:layout_below="@id/btnSelectImage"
android:layout_marginTop="8dp"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
// MainActivity.java
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
btnApplyGrayscale.setOnClickListener(view -> {
if (originalBitmap != null) {
processedBitmap = applyGrayscaleEffect(originalBitmap);
imageView.setImageBitmap(processedBitmap);
});
startActivityForResult(intent, PICK_IMAGE);
@Override
try {
originalBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),
imageUri);
imageView.setImageBitmap(originalBitmap);
} catch (IOException e) {
e.printStackTrace();
}
1. Add methods to apply different effects like Grayscale, Sepia, Blur, etc.
// Grayscale Effect
return grayscaleBitmap;
// Sepia Effect
return sepiaBitmap;
2. Select an image from the gallery and apply the effects using the buttons.
EXPERIMENT 10:
CODE1:
<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">
<ImageSwitcher
android:id="@+id/imageSwitcher"
android:layout_width="match_parent"
android:layout_height="300dp"
android:layout_marginTop="50dp"
android:layout_gravity="center"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:inAnimation="@android:anim/fade_in"
android:outAnimation="@android:anim/fade_out"
/>
<Button
android:id="@+id/btnNext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Next Image"
android:layout_marginTop="20dp"
app:layout_constraintTop_toBottomOf="@+id/imageSwitcher"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
1. Add some sample images to the res/drawable folder. These will be the images that are
switched using the ImageSwitcher.
CODE2:
package com.example.imageswitcherapp;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.ViewSwitcher;
import androidx.appcompat.app.AppCompatActivity;
ImageSwitcher imageSwitcher;
Button btnNext;
int currentIndex = 0;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageSwitcher = findViewById(R.id.imageSwitcher);
btnNext = findViewById(R.id.btnNext);
imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
@Override
imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
return imageView;
});
imageSwitcher.setImageResource(imageIds[currentIndex]);
// Set button click listener to switch images
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
currentIndex++;
currentIndex = 0;
imageSwitcher.setImageResource(imageIds[currentIndex]);
});
3. Click the Next Image button to switch to the next image in the sequence.
CODE1:
<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">
<Button
android:id="@+id/btnShowDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Show AlertDialog"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
2. Implement the code to display the AlertDialog when the button is clicked.
CODE2:
package com.example.alertdialogapp;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
Button btnShowDialog;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnShowDialog = findViewById(R.id.btnShowDialog);
btnShowDialog.setOnClickListener(new View.OnClickListener() {
@Override
});
builder.setTitle("Alert Dialog");
@Override
});
@Override
dialog.dismiss();
});
dialog.show();
3. A dialog will appear with the message "Are you sure you want to proceed?" and two
buttons: Yes and No.
4. Clicking Yes will display a toast message saying "You clicked Yes".
5. Clicking No will close the dialog and display a toast message saying "You clicked No".
EXPERIMENT 12:
o Click "Finish."
1. Open the build.gradle file for your app module (usually located in app/build.gradle).
implementation 'com.google.android.gms:play-services-maps:18.0.0'
o Select "API key." Restrict the API key for use with your application as needed.
2. Add the following permissions and metadata within the <manifest> tag:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<application
...>
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
<activity android:name=".MapsActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
// MapsActivity.java
package com.example.mapintegrationapp;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
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.maps.model.LatLngBounds;
import com.google.android.gms.maps.model.CameraPosition;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
@Override
mMap = googleMap;
mMap.moveCamera(CameraUpdateFactory.newLatLng(location));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, 12.0f));
2. Ensure you have an internet connection and that location permissions are granted.
EXPERIMENT 13:
o Click "Finish."
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
1. Open res/layout/activity_main.xml and design your layout. Add an EditText for the phone
number, another EditText for the message, and a Button to send the SMS:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<EditText
android:id="@+id/phoneNumberEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Phone Number"
android:inputType="phone"/>
<EditText
android:id="@+id/messageEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Message"
android:layout_below="@id/phoneNumberEditText"
android:layout_marginTop="16dp"
android:inputType="textMultiLine"/>
<Button
android:id="@+id/sendSmsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send SMS"
android:layout_below="@id/messageEditText"
android:layout_marginTop="16dp"/>
</RelativeLayout>
1. Open MainActivity.java or MainActivity.kt and add the logic to send an SMS message:
// MainActivity.java
package com.example.smssenderapp;
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;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendSmsButton.setOnClickListener(new View.OnClickListener() {
@Override
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
} else {
sendSMS(phoneNumber, message);
});
}
private void sendSMS(String phoneNumber, String message) {
try {
} catch (Exception e) {
e.printStackTrace();
@Override
if (requestCode == SMS_PERMISSION_CODE) {
sendSMS(((EditText) findViewById(R.id.phoneNumberEditText)).getText().toString(),
((EditText) findViewById(R.id.messageEditText)).getText().toString());
} else {
2. Enter a phone number and message and click the "Send SMS" button to send an SMS.
EXPERIMENT 14:
o Click "Finish."
<uses-permission android:name="android.permission.CALL_PHONE"/>
1. Open res/layout/activity_main.xml and design your layout. Add an EditText for the phone
number and a Button to initiate the call:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<EditText
android:id="@+id/phoneNumberEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Phone Number"
android:inputType="phone"/>
<Button
android:id="@+id/callButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Call"
android:layout_below="@id/phoneNumberEditText"
android:layout_marginTop="16dp"/>
</RelativeLayout>
// MainActivity.java
package com.example.callapp;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText phoneNumberEditText = findViewById(R.id.phoneNumberEditText);
callButton.setOnClickListener(new View.OnClickListener() {
@Override
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this,
} else {
makeCall(phoneNumber);
});
callIntent.setData(Uri.parse("tel:" + phoneNumber));
startActivity(callIntent);
@Override
if (requestCode == CALL_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
makeCall(phoneNumber);
} else {
2. Enter a phone number and click the "Call" button to initiate a call.
EXPERIMENT 15:
o Click "Finish."
1. Open res/layout/activity_main.xml and design your layout. Add EditText fields for the
recipient email, subject, and message body, and a Button to send the email:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<EditText
android:id="@+id/recipientEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Recipient Email"
android:inputType="textEmailAddress"/>
<EditText
android:id="@+id/subjectEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Subject"
android:layout_below="@id/recipientEditText"
android:layout_marginTop="16dp"/>
<EditText
android:id="@+id/messageEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Message"
android:layout_below="@id/subjectEditText"
android:layout_marginTop="16dp"
android:inputType="textMultiLine"
android:lines="5"
android:scrollbars="vertical"/>
<Button
android:id="@+id/sendEmailButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send Email"
android:layout_below="@id/messageEditText"
android:layout_marginTop="16dp"/>
</RelativeLayout>
1. Open MainActivity.java or MainActivity.kt and add the logic to handle the email sending
intent:
// MainActivity.java
package com.example.emailsenderapp;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendEmailButton.setOnClickListener(new View.OnClickListener() {
@Override
return;
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_TEXT, message);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
});
2. Enter recipient email, subject, and message and click the "Send Email" button to initiate the
email.
EXPERIMENT 16:
o Click "Finish."
o Java: DatabaseHelper.java
package com.example.databaseapp;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
@Override
db.execSQL(TABLE_CREATE);
@Override
onCreate(db);
o Java: DatabaseDAO.java
package com.example.databaseapp;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
this.database = openHelper.getWritableDatabase();
if (database != null) {
database.close();
values.put("name", name);
values.put("name", name);
1. Open res/layout/activity_main.xml and design your layout with EditText fields, Button
elements, and a ListView to display database records:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="16dp">
<EditText
android:id="@+id/nameEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Enter Name"/>
<Button
android:id="@+id/addButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
android:layout_below="@id/nameEditText"
android:layout_marginTop="16dp"/>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/addButton"
android:layout_marginTop="16dp"/>
</RelativeLayout>
1. Open MainActivity.java or MainActivity.kt and add the logic to handle user interactions and
database operations:
o Java: MainActivity.java
package com.example.databaseapp;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
@Override
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nameEditText = findViewById(R.id.nameEditText);
addButton = findViewById(R.id.addButton);
listView = findViewById(R.id.listView);
databaseDAO.open();
listView.setAdapter(adapter);
loadRecords();
addButton.setOnClickListener(new View.OnClickListener() {
@Override
if (name.isEmpty()) {
return;
long id = databaseDAO.insert(name);
if (id > 0) {
loadRecords();
} else {
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
});
adapter.clear();
if (cursor.moveToFirst()) {
do {
adapter.add(name);
} while (cursor.moveToNext());
cursor.close();
@Override
super.onDestroy();
databaseDAO.close();
2. Use the UI to add records, view them in the ListView, and interact with them.