Add option to rotate aprs map with compass

master 1.44
sh123 2022-08-28 16:45:55 +03:00
rodzic 09b38e65f7
commit 50450ac0af
3 zmienionych plików z 30 dodań i 1 usunięć

Wyświetl plik

@ -8,8 +8,11 @@ import android.graphics.Color;
import android.graphics.Paint; import android.graphics.Paint;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.os.Bundle; import android.os.Bundle;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -57,6 +60,7 @@ public class MapActivity extends AppCompatActivity {
private AprsSymbolTable _aprsSymbolTable; private AprsSymbolTable _aprsSymbolTable;
private String _mySymbolCode; private String _mySymbolCode;
private boolean _rotateMap = false;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -84,7 +88,16 @@ public class MapActivity extends AppCompatActivity {
_mapController.zoomTo(5.0); _mapController.zoomTo(5.0);
// compass // 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(); _compassOverlay.enableCompass();
_map.getOverlays().add(_compassOverlay); _map.getOverlays().add(_compassOverlay);
@ -209,6 +222,16 @@ public class MapActivity extends AppCompatActivity {
} else if (itemId == R.id.map_menu_clear_cache) { } else if (itemId == R.id.map_menu_clear_cache) {
_map.getTileProvider().clearTileCache(); _map.getTileProvider().clearTileCache();
return true; 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); return super.onOptionsItemSelected(item);

Wyświetl plik

@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/map_menu_rotate_map"
android:title="@string/map_menu_rotate_map"
android:checkable="true"
android:checked="false"/>
<item <item
android:id="@+id/map_menu_clear_cache" android:id="@+id/map_menu_clear_cache"
android:title="@string/map_menu_clear_cache_title" /> android:title="@string/map_menu_clear_cache_title" />

Wyświetl plik

@ -363,4 +363,5 @@
<string name="log_view_menu_clear_7d">Older than 7 days</string> <string name="log_view_menu_clear_7d">Older than 7 days</string>
<string name="log_view_menu_clear_all">Clear all</string> <string name="log_view_menu_clear_all">Clear all</string>
<string name="log_item_activity_delete_hours_title">This will remove everything older than %d hours. Are you sure?</string> <string name="log_item_activity_delete_hours_title">This will remove everything older than %d hours. Are you sure?</string>
<string name="map_menu_rotate_map">Rotate map with compass</string>
</resources> </resources>