Practical No 22
1. Write a program to changes the background color when device is shuffled.
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:id="@+id/background"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
/>
</LinearLayout>
MainActivity.java
package com.example.q1;
import static android.hardware.SensorManager.SENSOR_DELAY_NORMAL;
import static android.hardware.SensorManager.getOrientation;
import static android.hardware.SensorManager.getRotationMatrix;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity implements SensorEventListener
{
SensorManager sensorManager;
static int val = 0;
float[] rotationMatrix = new float[9];
float[] inclinationMatrix = new float[9];
float[] accelerometerValues = new float[3];
float[] magnetometerValues = new float[3];
LinearLayout mLinearLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLinearLayout = findViewById(R.id.background);
sensorManager =(SensorManager) getSystemService(SENSOR_SERVICE);
Sensor mAccelerometerSensor =
sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
Sensor mMagnetometerSensor =
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
sensorManager.registerListener(this,mAccelerometerSensor,SENSOR_DELAY_NORMAL);
sensorManager.registerListener(this,mMagnetometerSensor,
SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType())
{
case Sensor.TYPE_ACCELEROMETER:
for(int i=0; i<3; i++) {
accelerometerValues[i] = event.values[i];
}
val++;
break;
case Sensor.TYPE_MAGNETIC_FIELD:
for(int i=0; i<3; i++) {
magnetometerValues[i] = event.values[i];
}
val++;
break;
}
if(val%2 == 0) {
boolean success = getRotationMatrix(rotationMatrix,
inclinationMatrix, accelerometerValues, magnetometerValues);
if (success) {
float[] orientation = new float[3];
getOrientation(rotationMatrix, orientation);
if (orientation[1] > 0) {
mLinearLayout.setBackgroundColor(Color.GREEN);
}
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
Output
2. Write a program to display the list of sensors supported by the mobile device.
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"
tools:context=".MainActivity">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sensorList"/>
</LinearLayout>
MainActivity.java
package com.example.q2;
import androidx.appcompat.app.AppCompatActivity;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView listView = findViewById(R.id.sensorList);
SensorManager sensorManager = (SensorManager)
getSystemService(SENSOR_SERVICE);
List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
ArrayAdapter<Sensor> adapter = new ArrayAdapter<>(getApplicationContext(),
android.R.layout.simple_list_item_1,sensors);
listView.setAdapter(adapter);
}
}
Output:-