Thursday, 26 February 2015

Proximity Sensor in Android Part-2

In my previous post, We have some basic understanding of Proximity sensor in android. You can go through that post if you have not seen yet.

http://androidconceptspp.blogspot.in/2015/02/proximity-sensor-in-android-part-1.html

In this post we will have some fun with proximity sensor. The sample application is something like below picture. When you put your finger near the proximity sensor, image will changed from icon launcher to heart shape and when you put away your finger launcher icon will be restored. Also a text will be displayed showing number of time this sensor has produced the value.



Now, let us create the required source code for the application.

MainActivity.java



import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements SensorEventListener {

SensorManager sManager;
Sensor proximity;
TextView counter;
ImageView imageView;
static int count=0;

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

sManager = (SensorManager) getSystemService(SENSOR_SERVICE);
counter = (TextView) findViewById(R.id.sensor_counter);
counter.setText("");

proximity = sManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
if (proximity == null) {
counter.setText("Proximity Sensor Not Available");
}
imageView = (ImageView)findViewById(R.id.imageView1);
}

@Override
protected void onResume() {
super.onResume();
sManager.registerListener(this, proximity,
SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onPause() {
super.onPause();
sManager.unregisterListener(this);
}

@Override
public void onSensorChanged(SensorEvent event) {
count++;
counter.setText("Count: "+count);
float approx = event.values[0];
if(approx<2.0){
imageView.setImageResource(R.drawable.ic_action_favorite);
}else{
imageView.setImageResource(R.drawable.ic_launcher);
}
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {

}
}

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/LinearLayout1"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   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="test.example.proximitysensoactivity.MainActivity" >

   <TextView
       android:id="@+id/textView1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:text="Proximity Sensor Fun"
       android:textSize="25sp"
       android:textStyle="bold"
       android:typeface="serif" />

   <TextView
       android:id="@+id/sensor_counter"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center_horizontal"
       android:layout_marginTop="30dp"
       android:text="Medium Text"
       android:textAppearance="?android:attr/textAppearanceMedium" />

   <ImageView
       android:id="@+id/imageView1"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_margin="50dp"
       android:layout_weight="1"
       android:src="@drawable/ic_launcher" />

</LinearLayout>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="test.example.proximitysensoactivity"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
       android:minSdkVersion="10"
       android:targetSdkVersion="19" />
   

   <application
       android:allowBackup="true"
       android:icon="@drawable/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>




No comments:

Post a Comment