Saturday 21 December 2013

Android-Light-sensor-example

Light Sensor

Like other sensor Light Sensor is also and hardware sensor that sense light.
Today i am going to create an Tourch Application that sense light and on/off flash light.

Source code for javafile



package in.androidshivendra.tourchapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.MediaPlayer;
//import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
//import android.view.View;
//import android.widget.ImageButton;

public class MainActivity extends Activity implements SensorEventListener {

SensorManager smgr;
Sensor msensor;

    private Camera camera;
    private boolean isFlashOn;
    private boolean hasFlash;
    Parameters params;

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

        //code for sensor
     
        smgr = (SensorManager)getSystemService(SENSOR_SERVICE);
        msensor = smgr.getDefaultSensor(Sensor.TYPE_LIGHT);
     
     
     
     
 

   
        // First check if device is supporting flashlight or not      
        hasFlash = getApplicationContext().getPackageManager()
                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

        if (!hasFlash) {
            // device doesn't support flash
            // Show alert message and close the application
            AlertDialog alert = new AlertDialog.Builder(MainActivity.this)
                    .create();
            alert.setTitle("Error");
            alert.setMessage("Sorry, your device doesn't support flash light!");
            alert.setButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    // closing the application
                    finish();
                }
            });
            alert.show();
            return;
        }

        // get the camera
        getCamera();
       
   
    }

   
    // Get the camera
    private void getCamera() {
        if (camera == null) {
            try {
                camera = Camera.open();
                params = camera.getParameters();
            } catch (RuntimeException e) {
                Log.e("Camera Error. Failed to Open. Error: ", e.getMessage());
            }
        }
    }

   
     // Turning On flash
    private void turnOnFlash() {
        if (!isFlashOn) {
            if (camera == null || params == null) {
                return;
            }

           
            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_TORCH);
            camera.setParameters(params);
            camera.startPreview();
            isFlashOn = true;


        }

    }


    // Turning Off flash
    private void turnOffFlash() {
        if (isFlashOn) {
            if (camera == null || params == null) {
                return;
            }
     
           
            params = camera.getParameters();
            params.setFlashMode(Parameters.FLASH_MODE_OFF);
            camera.setParameters(params);
            camera.stopPreview();
            isFlashOn = false;
           
         
        }
    }
   

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    @Override
    protected void onPause() {
        super.onPause();
       
        // on pause turn off the flash
        smgr.unregisterListener(this);


    }

    @Override
    protected void onRestart() {
        super.onRestart();
    }

    @Override
    protected void onResume() {
        super.onResume();
       
        // on resume turn on the flash
        smgr.registerListener(this, msensor, SensorManager.SENSOR_DELAY_NORMAL);
 
    }

    @Override
    protected void onStart() {
        super.onStart();
       
        // on starting the app get the camera params
        getCamera();
    }

    @Override
    protected void onStop() {
        super.onStop();
       
        // on stop release the camera
        if (camera != null) {
            camera.release();
            camera = null;
        }
    }


@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub

}


@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub

if (event.values[0]<5 .0="" p=""> {


                 // turn on flash
                 turnOnFlash();
         
}
else
{
turnOffFlash();
}
}

}


Required Permission

uses-feature android:name="android.hardware.camera"
uses-permission android:name="android.permission.CAMERA"







Note:

This application only test on Real Device.


No comments:

Today's Pageviews