Merge pull request #2532 from HattinkT/battery_widget
Add battery status map widget
BIN
OsmAnd/res/drawable-hdpi/ic_action_battery.png
Executable file
After Width: | Height: | Size: 3.1 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 3.5 KiB |
BIN
OsmAnd/res/drawable-hdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 3.5 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 4.6 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 4.5 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 4.2 KiB |
BIN
OsmAnd/res/drawable-large-hdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 4.2 KiB |
BIN
OsmAnd/res/drawable-large-xhdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
OsmAnd/res/drawable-large-xhdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
OsmAnd/res/drawable-large-xhdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 3.7 KiB |
BIN
OsmAnd/res/drawable-large-xhdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 3.7 KiB |
BIN
OsmAnd/res/drawable-large/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
BIN
OsmAnd/res/drawable-large/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 3.6 KiB |
BIN
OsmAnd/res/drawable-large/widget_battery_day.png
Executable file
After Width: | Height: | Size: 3.5 KiB |
BIN
OsmAnd/res/drawable-large/widget_battery_night.png
Executable file
After Width: | Height: | Size: 3.5 KiB |
BIN
OsmAnd/res/drawable-mdpi/ic_action_battery.png
Executable file
After Width: | Height: | Size: 3 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
BIN
OsmAnd/res/drawable-mdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 3.2 KiB |
BIN
OsmAnd/res/drawable-xhdpi/ic_action_battery.png
Executable file
After Width: | Height: | Size: 3.1 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 3.9 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 3.7 KiB |
BIN
OsmAnd/res/drawable-xhdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 3.7 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/ic_action_battery.png
Executable file
After Width: | Height: | Size: 3.3 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/widget_battery_charging_day.png
Executable file
After Width: | Height: | Size: 4.6 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/widget_battery_charging_night.png
Executable file
After Width: | Height: | Size: 4.5 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/widget_battery_day.png
Executable file
After Width: | Height: | Size: 4.2 KiB |
BIN
OsmAnd/res/drawable-xxhdpi/widget_battery_night.png
Executable file
After Width: | Height: | Size: 4.2 KiB |
|
@ -10,6 +10,7 @@
|
||||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
<string name="map_widget_battery">Battery state</string>
|
||||||
<string name="move_marker_bottom_sheet_title">Move the map to change marker\'s position</string>
|
<string name="move_marker_bottom_sheet_title">Move the map to change marker\'s position</string>
|
||||||
<string name="lat_lon_pattern">Lat: %1$.6f Lon: %2$.6f</string>
|
<string name="lat_lon_pattern">Lat: %1$.6f Lon: %2$.6f</string>
|
||||||
<string name="follow_us">Follow us</string>
|
<string name="follow_us">Follow us</string>
|
||||||
|
|
|
@ -152,6 +152,8 @@ public class MapInfoLayer extends OsmandMapLayer {
|
||||||
registerSideWidget(alt, R.drawable.ic_action_altitude, R.string.map_widget_altitude, "altitude", false, 20);
|
registerSideWidget(alt, R.drawable.ic_action_altitude, R.string.map_widget_altitude, "altitude", false, 20);
|
||||||
TextInfoWidget plainTime = ric.createPlainTimeControl(map);
|
TextInfoWidget plainTime = ric.createPlainTimeControl(map);
|
||||||
registerSideWidget(plainTime, R.drawable.ic_action_time, R.string.map_widget_plain_time, "plain_time", false, 25);
|
registerSideWidget(plainTime, R.drawable.ic_action_time, R.string.map_widget_plain_time, "plain_time", false, 25);
|
||||||
|
TextInfoWidget battery = ric.createBatteryControl(map);
|
||||||
|
registerSideWidget(battery, R.drawable.ic_action_battery, R.string.map_widget_battery, "battery", false, 26);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void recreateControls() {
|
public void recreateControls() {
|
||||||
|
|
|
@ -3,6 +3,8 @@ package net.osmand.plus.views.mapwidgets;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.BlurMaskFilter;
|
import android.graphics.BlurMaskFilter;
|
||||||
import android.graphics.BlurMaskFilter.Blur;
|
import android.graphics.BlurMaskFilter.Blur;
|
||||||
|
@ -17,6 +19,7 @@ import android.graphics.PorterDuff;
|
||||||
import android.graphics.PorterDuffColorFilter;
|
import android.graphics.PorterDuffColorFilter;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.hardware.GeomagneticField;
|
import android.hardware.GeomagneticField;
|
||||||
|
import android.os.BatteryManager;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
@ -330,7 +333,7 @@ public class RouteInfoWidgetsFactory {
|
||||||
if (DateFormat.is24HourFormat(ctx)) {
|
if (DateFormat.is24HourFormat(ctx)) {
|
||||||
setText(DateFormat.format("k:mm", time).toString(), null); //$NON-NLS-1$
|
setText(DateFormat.format("k:mm", time).toString(), null); //$NON-NLS-1$
|
||||||
} else {
|
} else {
|
||||||
setText(DateFormat.format("h:mm", time).toString(),
|
setText(DateFormat.format("h:mm", time).toString(),
|
||||||
DateFormat.format("aa", time).toString()); //$NON-NLS-1$
|
DateFormat.format("aa", time).toString()); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -341,8 +344,46 @@ public class RouteInfoWidgetsFactory {
|
||||||
plainTimeControl.setIcons(R.drawable.widget_time_day, R.drawable.widget_time_night);
|
plainTimeControl.setIcons(R.drawable.widget_time_day, R.drawable.widget_time_night);
|
||||||
return plainTimeControl;
|
return plainTimeControl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public TextInfoWidget createBatteryControl(final MapActivity map){
|
||||||
|
final int battery = R.drawable.widget_battery_day;
|
||||||
|
final int batteryN = R.drawable.widget_battery_night;
|
||||||
|
final int batteryCharging = R.drawable.widget_battery_charging_day;
|
||||||
|
final int batteryChargingN = R.drawable.widget_battery_charging_night;
|
||||||
|
final OsmandApplication ctx = map.getMyApplication();
|
||||||
|
final TextInfoWidget batteryControl = new TextInfoWidget(map) {
|
||||||
|
private long cachedLeftTime = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean updateInfo(DrawSettings drawSettings) {
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
if (time - cachedLeftTime > 1000) {
|
||||||
|
cachedLeftTime = time;
|
||||||
|
Intent batteryIntent = ctx.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||||
|
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||||
|
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||||
|
int status = batteryIntent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
|
||||||
|
|
||||||
|
if (level == -1 || scale == -1 || status == -1) {
|
||||||
|
setText("?", null);
|
||||||
|
setIcons(battery, batteryN);
|
||||||
|
} else {
|
||||||
|
boolean charging = ((status == BatteryManager.BATTERY_STATUS_CHARGING) ||
|
||||||
|
(status == BatteryManager.BATTERY_STATUS_FULL));
|
||||||
|
setText(String.format("%d%%", (level * 100) / scale), null );
|
||||||
|
setIcons(charging ? batteryCharging : battery, charging ? batteryChargingN : batteryN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
batteryControl.setText(null, null);
|
||||||
|
batteryControl.setIcons(battery, batteryN);
|
||||||
|
return batteryControl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public TextInfoWidget createMaxSpeedControl(final MapActivity map) {
|
public TextInfoWidget createMaxSpeedControl(final MapActivity map) {
|
||||||
final RoutingHelper rh = map.getMyApplication().getRoutingHelper();
|
final RoutingHelper rh = map.getMyApplication().getRoutingHelper();
|
||||||
final OsmAndLocationProvider locationProvider = map.getMyApplication().getLocationProvider();
|
final OsmAndLocationProvider locationProvider = map.getMyApplication().getLocationProvider();
|
||||||
|
|