C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Android Sensor TutorialSensors can be used to monitor the three-dimensional device movement or change in the environment of the device. Android provides sensor api to work with different types of sensors. Types of SensorsAndroid supports three types of sensors: 1) Motion SensorsThese are used to measure acceleration forces and rotational forces along with three axes. 2) Position SensorsThese are used to measure the physical position of device. 3) Environmental SensorsThese are used to measure the environmental changes such as temperature, humidity etc. Android Sensor APIAndroid sensor api provides many classes and interface. The important classes and interfaces of sensor api are as follows: 1) SensorManager classThe android.hardware.SensorManager class provides methods :
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 classThe 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 classIts instance is created by the system. It provides information about the sensor. 4) SensorEventListener interfaceIt provides two call back methods to get information when sensor values (x,y and z) change or sensor accuracy changes.
Android simple sensor app exampleLet's see the two sensor examples.
activity_main.xmlThere is only one textview in this file. File: activity_main.xml
<RelativeLayout xmlns:androclass="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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="92dp" android:layout_marginTop="114dp" android:text="TextView" /> </RelativeLayout> Activity classLet's write the code that prints values of x axis, y axis and z axis. File: MainActivity.java
package com.example.sensorsimple; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; import android.hardware.SensorManager; import android.hardware.SensorEventListener; import android.hardware.SensorEvent; import android.hardware.Sensor; import java.util.List; public class MainActivity extends Activity { SensorManager sm = null; TextView textView1 = null; List list; SensorEventListener sel = new SensorEventListener(){ public void onAccuracyChanged(Sensor sensor, int accuracy) {} public void onSensorChanged(SensorEvent event) { float[] values = event.values; textView1.setText("x: "+values[0]+"\ny: "+values[1]+"\nz: "+values[2]); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /* Get a SensorManager instance */ sm = (SensorManager)getSystemService(SENSOR_SERVICE); textView1 = (TextView)findViewById(R.id.textView1); list = sm.getSensorList(Sensor.TYPE_ACCELEROMETER); if(list.size()>0){ sm.registerListener(sel, (Sensor) list.get(0), SensorManager.SENSOR_DELAY_NORMAL); }else{ Toast.makeText(getBaseContext(), "Error: No Accelerometer.", Toast.LENGTH_LONG).show(); } } @Override protected void onStop() { if(list.size()>0){ sm.unregisterListener(sel); } super.onStop(); } } Output:What is next?Click for changing background color of activity sensor example
Next TopicAndroid Simple Graphics Example
|