From 50450ac0affba0fc47e9959678b88157e8bec7dc Mon Sep 17 00:00:00 2001 From: sh123 Date: Sun, 28 Aug 2022 16:45:55 +0300 Subject: [PATCH] Add option to rotate aprs map with compass --- .../radio/codec2talkie/maps/MapActivity.java | 25 ++++++++++++++++++- codec2talkie/src/main/res/menu/map_menu.xml | 5 ++++ codec2talkie/src/main/res/values/strings.xml | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/codec2talkie/src/main/java/com/radio/codec2talkie/maps/MapActivity.java b/codec2talkie/src/main/java/com/radio/codec2talkie/maps/MapActivity.java index 68ee809..d7b07e6 100644 --- a/codec2talkie/src/main/java/com/radio/codec2talkie/maps/MapActivity.java +++ b/codec2talkie/src/main/java/com/radio/codec2talkie/maps/MapActivity.java @@ -8,8 +8,11 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; +import android.hardware.Sensor; +import android.hardware.SensorEvent; import android.os.Bundle; import android.util.DisplayMetrics; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -57,6 +60,7 @@ public class MapActivity extends AppCompatActivity { private AprsSymbolTable _aprsSymbolTable; private String _mySymbolCode; + private boolean _rotateMap = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -84,7 +88,16 @@ public class MapActivity extends AppCompatActivity { _mapController.zoomTo(5.0); // compass - _compassOverlay = new CompassOverlay(context, new InternalCompassOrientationProvider(context), _map); + InternalCompassOrientationProvider compassOrientationProvider = new InternalCompassOrientationProvider(context) { + @Override + public void onSensorChanged(SensorEvent sensorEvent) { + if (_rotateMap) { + _map.setMapOrientation(-sensorEvent.values[0]); + } + super.onSensorChanged(sensorEvent); + } + }; + _compassOverlay = new CompassOverlay(context, compassOrientationProvider, _map); _compassOverlay.enableCompass(); _map.getOverlays().add(_compassOverlay); @@ -209,6 +222,16 @@ public class MapActivity extends AppCompatActivity { } else if (itemId == R.id.map_menu_clear_cache) { _map.getTileProvider().clearTileCache(); return true; + } else if (itemId == R.id.map_menu_rotate_map) { + if (item.isChecked()) { + item.setChecked(false); + _rotateMap = false; + _map.setMapOrientation(0); + } else { + item.setChecked(true); + _rotateMap = true; + } + return true; } return super.onOptionsItemSelected(item); diff --git a/codec2talkie/src/main/res/menu/map_menu.xml b/codec2talkie/src/main/res/menu/map_menu.xml index 08ddb3d..ad23042 100644 --- a/codec2talkie/src/main/res/menu/map_menu.xml +++ b/codec2talkie/src/main/res/menu/map_menu.xml @@ -1,5 +1,10 @@ + diff --git a/codec2talkie/src/main/res/values/strings.xml b/codec2talkie/src/main/res/values/strings.xml index 5bc74f3..8c62b83 100644 --- a/codec2talkie/src/main/res/values/strings.xml +++ b/codec2talkie/src/main/res/values/strings.xml @@ -363,4 +363,5 @@ Older than 7 days Clear all This will remove everything older than %d hours. Are you sure? + Rotate map with compass \ No newline at end of file