Android Open Source - SensorsWebLogger Handle Sensors






From Project

Back to project page SensorsWebLogger.

License

The source code is released under:

GNU General Public License

If you think the Android project SensorsWebLogger listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package org.kost.android.sensorsweblogger;
/*w w w.  j  ava2 s  .c  o m*/
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class HandleSensors {
    Sensor sensorSingle = null;
    List<Class<?>> sensorClasses = new ArrayList<Class<?>>();

    public HandleSensors (Context context, TextView txtView) {
        SensorManager sensorManager = null;

        if (txtView != null) txtView.append("Detecting Sensors\n");

        sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);

        List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);
        for (Sensor sensor : sensors) {
            if (txtView != null) txtView.append("Sensor: " + sensor.getName() + "\n");
        }

        sensorSingle = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
        if (sensorSingle != null) {
            sensorClasses.add(SensorLight.class);
        } else {
            if (txtView != null) txtView.append("No light sensor!\n");
        }

        sensorSingle = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
        if (sensorSingle != null) {
            sensorClasses.add(SensorAmbientTemperature.class);
        } else {
            if (txtView != null) txtView.append("No ambient temperature sensor!\n");
        }

        sensorSingle = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
        if (sensorSingle != null) {
            sensorClasses.add(SensorPressure.class);
        } else {
            if (txtView != null) txtView.append("No pressure sensor!\n");
        }

        sensorSingle = sensorManager.getDefaultSensor(Sensor.TYPE_RELATIVE_HUMIDITY);
        if (sensorSingle != null) {
            sensorClasses.add(SensorRelativeHumidity.class);
        } else {
            if (txtView != null) txtView.append("No relative humidity sensor!\n");
        }

    }

    public long getInterval (Context context) {
        // getDefaultSharedPreferences(this); cannot be used since it is private
        // SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences sharedPrefs = context.getSharedPreferences(context.getPackageName() + "_preferences",Context.MODE_PRIVATE);

        Integer freqint = Integer.getInteger(sharedPrefs.getString("sync_frequency","15"),15);
        long interval;

        switch(freqint) {
            case 15:
                interval= AlarmManager.INTERVAL_FIFTEEN_MINUTES;
                break;
            case 30:
                interval=AlarmManager.INTERVAL_HALF_HOUR;
                break;
            case 60:
                interval=AlarmManager.INTERVAL_HOUR;
                break;
            case 1440:
                interval=AlarmManager.INTERVAL_DAY;
                break;
            default:
                interval=AlarmManager.INTERVAL_FIFTEEN_MINUTES;
        }
        return(interval);

    }

    public void StartServiceHandlers (Context context) {
        for (Class<?> sensorSingle : sensorClasses) {
            AlarmManager scheduler = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(context.getApplicationContext(), sensorSingle);
            PendingIntent scheduledIntent = PendingIntent.getService(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            scheduler.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), getInterval(context), scheduledIntent);
        }
    }

    public void StopServiceHandlers (Context context) {
        for( Class<?> sensorSingle: sensorClasses ) {
            AlarmManager scheduler = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(context.getApplicationContext(), sensorSingle);
            PendingIntent scheduledIntent = PendingIntent.getService(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            scheduler.cancel(scheduledIntent);
            context.stopService(intent);
        }
    }
}




Java Source Code List

org.kost.android.sensorsweblogger.ApplicationTest.java
org.kost.android.sensorsweblogger.BestLastLocation.java
org.kost.android.sensorsweblogger.HandleSensors.java
org.kost.android.sensorsweblogger.MainActivity.java
org.kost.android.sensorsweblogger.MainService.java
org.kost.android.sensorsweblogger.MyReceiver.java
org.kost.android.sensorsweblogger.SendSensorData.java
org.kost.android.sensorsweblogger.SensorAmbientTemperature.java
org.kost.android.sensorsweblogger.SensorLight.java
org.kost.android.sensorsweblogger.SensorPressure.java
org.kost.android.sensorsweblogger.SensorRelativeHumidity.java
org.kost.android.sensorsweblogger.SettingsActivity.java
org.kost.android.sensorsweblogger.TemplateSensor.java