Android Open Source - rcdroid Battery Sensor






From Project

Back to project page rcdroid.

License

The source code is released under:

Copyright (c) 2013, Jamie Furness (jamie@jamierf.co.uk) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following...

If you think the Android project rcdroid 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 com.jamierf.rcdroid.input.sensor;
//w w w. j av a 2  s  .co m
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import com.google.common.base.Optional;
import com.jamierf.rcdroid.input.api.BatteryStatus;
import org.jboss.netty.util.internal.ExecutorUtil;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class BatterySensor extends AbstractSensor<BatteryStatus> implements Runnable {

    private static final long POLLING_FREQUENCY = 5; // minutes

    private final Context context;
    private final ScheduledExecutorService executor;

    private BatteryStatus battery;

    public BatterySensor(Context context) {
        this.context = context;

        executor = Executors.newSingleThreadScheduledExecutor();
        executor.scheduleWithFixedDelay(this, 0, POLLING_FREQUENCY, TimeUnit.MINUTES);
    }

    @Override
    public Optional<BatteryStatus> getValue() {
        return Optional.fromNullable(battery);
    }

    @Override
    public void forceUpdate() {
        executor.execute(this);
    }

    @Override
    public void run() {
        final IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        final Intent battery = context.registerReceiver(null, filter);

        final int status = battery.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
        final boolean charging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;

        final int voltage = battery.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
        final int temperature = battery.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);

        final float level = battery.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
        final float scale = battery.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

        this.battery = new BatteryStatus(charging, voltage / 1000F, temperature / 10F, level / scale);
        this.setValueChanged(System.currentTimeMillis());
    }

    @Override
    public void close() {
        ExecutorUtil.terminate(executor);
    }
}




Java Source Code List

com.jamierf.rcdroid.CarActivity.java
com.jamierf.rcdroid.CarService.java
com.jamierf.rcdroid.config.CarConfig.java
com.jamierf.rcdroid.config.ServoConfig.java
com.jamierf.rcdroid.config.WebUIConfig.java
com.jamierf.rcdroid.http.Packet.java
com.jamierf.rcdroid.http.WebController.java
com.jamierf.rcdroid.http.handler.AssetResourceHandler.java
com.jamierf.rcdroid.http.handler.ControlProtocolHandler.java
com.jamierf.rcdroid.http.handler.JsonPOJOHandler.java
com.jamierf.rcdroid.http.listener.ClientListener.java
com.jamierf.rcdroid.http.listener.PacketListener.java
com.jamierf.rcdroid.input.SensorController.java
com.jamierf.rcdroid.input.api.BatteryStatus.java
com.jamierf.rcdroid.input.api.Coordinate.java
com.jamierf.rcdroid.input.sensor.AbstractSensor.java
com.jamierf.rcdroid.input.sensor.AccelerationSensor.java
com.jamierf.rcdroid.input.sensor.BatterySensor.java
com.jamierf.rcdroid.input.sensor.LocationSensor.java
com.jamierf.rcdroid.input.sensor.RotationSensor.java
com.jamierf.rcdroid.input.sensor.listener.SensorListener.java
com.jamierf.rcdroid.logic.CarEngine.java
com.jamierf.rcdroid.logic.packets.AbstractServoHandler.java
com.jamierf.rcdroid.logic.packets.PlayAlarmRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetRotationRequestHandler.java
com.jamierf.rcdroid.logic.packets.SetSpeedRequestHandler.java
com.jamierf.rcdroid.logic.sensors.AccelerationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.BatterySensorHandler.java
com.jamierf.rcdroid.logic.sensors.LocationSensorHandler.java
com.jamierf.rcdroid.logic.sensors.RotationSensorHandler.java