From 93f528aa49e978e20b2feb2a2bdd7c7e3db81a9a Mon Sep 17 00:00:00 2001 From: iso53 <102249575+ISO53@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:06:32 +0300 Subject: [PATCH 1/4] Add NorthType screen with animated demo Introduce a new NorthTypeActivity and corresponding UI to let users choose True vs Magnetic north. --- app/src/main/AndroidManifest.xml | 3 + .../nothingcompass/NorthTypeActivity.java | 79 ++++++++++ .../iso53/nothingcompass/OptionsActivity.java | 2 +- .../animator/anim_declination_rotation.xml | 10 ++ app/src/main/res/color/switch_thumb_color.xml | 7 + app/src/main/res/color/switch_track_color.xml | 7 + .../color/switch_track_decoration_color.xml | 6 + .../res/drawable/avd_north_comparison.xml | 6 + .../main/res/drawable/vd_compass_needles.xml | 54 +++++++ .../main/res/layout/activity_north_type.xml | 142 ++++++++++++++++++ 10 files changed, 315 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/io/github/iso53/nothingcompass/NorthTypeActivity.java create mode 100644 app/src/main/res/animator/anim_declination_rotation.xml create mode 100644 app/src/main/res/color/switch_thumb_color.xml create mode 100644 app/src/main/res/color/switch_track_color.xml create mode 100644 app/src/main/res/color/switch_track_decoration_color.xml create mode 100644 app/src/main/res/drawable/avd_north_comparison.xml create mode 100644 app/src/main/res/drawable/vd_compass_needles.xml create mode 100644 app/src/main/res/layout/activity_north_type.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b0e18b6..f41fe4a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,9 @@ + diff --git a/app/src/main/java/io/github/iso53/nothingcompass/NorthTypeActivity.java b/app/src/main/java/io/github/iso53/nothingcompass/NorthTypeActivity.java new file mode 100644 index 0000000..9a14605 --- /dev/null +++ b/app/src/main/java/io/github/iso53/nothingcompass/NorthTypeActivity.java @@ -0,0 +1,79 @@ +package io.github.iso53.nothingcompass; + +import android.content.SharedPreferences; +import android.graphics.drawable.AnimatedVectorDrawable; +import android.os.Bundle; +import android.view.View; +import android.widget.ImageView; + +import androidx.appcompat.app.AppCompatActivity; +import com.google.android.material.materialswitch.MaterialSwitch; +import androidx.appcompat.widget.Toolbar; +import androidx.preference.PreferenceManager; + +import io.github.iso53.nothingcompass.preference.PreferenceConstants; + +public class NorthTypeActivity extends AppCompatActivity { + + private ImageView northAnimation; + private MaterialSwitch switchTrueNorth; + private SharedPreferences prefs; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_north_type); + + setupToolbar(); + + northAnimation = findViewById(R.id.north_animation); + switchTrueNorth = findViewById(R.id.switch_true_north); + prefs = PreferenceManager.getDefaultSharedPreferences(this); + + boolean isTrueNorth = prefs.getBoolean(PreferenceConstants.TRUE_NORTH, false); + switchTrueNorth.setChecked(isTrueNorth); + + switchTrueNorth.setOnCheckedChangeListener((buttonView, isChecked) -> { + prefs.edit().putBoolean(PreferenceConstants.TRUE_NORTH, isChecked).apply(); + }); + } + + private void setupToolbar() { + Toolbar toolbar = findViewById(R.id.toolbar); + setSupportActionBar(toolbar); + if (getSupportActionBar() != null) { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + } + toolbar.setNavigationOnClickListener(v -> finish()); + + // Apply custom font to CollapsingToolbarLayout + com.google.android.material.appbar.CollapsingToolbarLayout collapsingToolbar = findViewById(R.id.collapseToolbar); + android.graphics.Typeface typeface = androidx.core.content.res.ResourcesCompat.getFont(this, R.font.ntype82headline); + if (typeface != null) { + collapsingToolbar.setExpandedTitleTypeface(typeface); + collapsingToolbar.setCollapsedTitleTypeface(typeface); + } + } + + @Override + protected void onResume() { + super.onResume(); + if (northAnimation.getDrawable() instanceof AnimatedVectorDrawable) { + ((AnimatedVectorDrawable) northAnimation.getDrawable()).start(); + } + } + + @Override + protected void onPause() { + super.onPause(); + if (northAnimation.getDrawable() instanceof AnimatedVectorDrawable) { + ((AnimatedVectorDrawable) northAnimation.getDrawable()).stop(); + } + } + + @Override + public boolean onSupportNavigateUp() { + finish(); + return true; + } +} diff --git a/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java b/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java index 7e277e5..e91b294 100644 --- a/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java +++ b/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java @@ -72,7 +72,7 @@ private void setupRecyclerView() { items.add(new OptionItem(getString(R.string.item_high_precision), null, R.drawable.precision, v -> showHighPrecisionSelectionDialog())); items.add(new OptionItem(getString(R.string.item_north_reference), null, - R.drawable.ic_compass, v -> showNorthReferenceSelectionDialog())); + R.drawable.ic_compass, v -> startActivity(new Intent(this, NorthTypeActivity.class)))); // Category: App items.add(new OptionItem(getString(R.string.category_app))); diff --git a/app/src/main/res/animator/anim_declination_rotation.xml b/app/src/main/res/animator/anim_declination_rotation.xml new file mode 100644 index 0000000..49861b1 --- /dev/null +++ b/app/src/main/res/animator/anim_declination_rotation.xml @@ -0,0 +1,10 @@ + diff --git a/app/src/main/res/color/switch_thumb_color.xml b/app/src/main/res/color/switch_thumb_color.xml new file mode 100644 index 0000000..c1a4372 --- /dev/null +++ b/app/src/main/res/color/switch_thumb_color.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/switch_track_color.xml b/app/src/main/res/color/switch_track_color.xml new file mode 100644 index 0000000..94697b5 --- /dev/null +++ b/app/src/main/res/color/switch_track_color.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/color/switch_track_decoration_color.xml b/app/src/main/res/color/switch_track_decoration_color.xml new file mode 100644 index 0000000..36b34e8 --- /dev/null +++ b/app/src/main/res/color/switch_track_decoration_color.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/avd_north_comparison.xml b/app/src/main/res/drawable/avd_north_comparison.xml new file mode 100644 index 0000000..b12055b --- /dev/null +++ b/app/src/main/res/drawable/avd_north_comparison.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/drawable/vd_compass_needles.xml b/app/src/main/res/drawable/vd_compass_needles.xml new file mode 100644 index 0000000..d325c16 --- /dev/null +++ b/app/src/main/res/drawable/vd_compass_needles.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_north_type.xml b/app/src/main/res/layout/activity_north_type.xml new file mode 100644 index 0000000..f211486 --- /dev/null +++ b/app/src/main/res/layout/activity_north_type.xml @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 39c4655708727c79855871a47f2f4af73f654f21 Mon Sep 17 00:00:00 2001 From: iso53 <102249575+ISO53@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:11:37 +0300 Subject: [PATCH 2/4] Add sensor and location info to diagnostics Append detailed sensor and location status to the device info used in OptionsActivity diagnostics. --- .../iso53/nothingcompass/OptionsActivity.java | 44 ++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java b/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java index e91b294..08f228c 100644 --- a/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java +++ b/app/src/main/java/io/github/iso53/nothingcompass/OptionsActivity.java @@ -1,9 +1,13 @@ package io.github.iso53.nothingcompass; import android.content.ActivityNotFoundException; +import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Typeface; +import android.hardware.Sensor; +import android.hardware.SensorManager; +import android.location.LocationManager; import android.net.Uri; import android.os.Bundle; @@ -206,7 +210,8 @@ private void sendFeedbackEmail() { + android.os.Build.VERSION.RELEASE + " (SDK " + android.os.Build.VERSION.SDK_INT + ")" + "\nManufacturer: " + android.os.Build.MANUFACTURER + "\nModel: " + android.os.Build.MODEL - + "\nProduct: " + android.os.Build.PRODUCT; + + "\nProduct: " + android.os.Build.PRODUCT + + getSensorInfo(); Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("mailto:")); @@ -222,6 +227,43 @@ private void sendFeedbackEmail() { } } + private String getSensorInfo() { + SensorManager sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); + StringBuilder sb = new StringBuilder(); + sb.append("\n\n--- Sensor Information ---"); + + if (sensorManager != null) { + List sensors = sensorManager.getSensorList(Sensor.TYPE_ALL); + sb.append("\nTotal Sensors: ").append(sensors.size()); + + // Focus on key sensors for a compass app + int[] keyTypes = {Sensor.TYPE_MAGNETIC_FIELD, Sensor.TYPE_ACCELEROMETER, + Sensor.TYPE_GYROSCOPE, Sensor.TYPE_ROTATION_VECTOR}; + String[] keyNames = {"Magnetometer", "Accelerometer", "Gyroscope", "Rotation Vector"}; + + for (int i = 0; i < keyTypes.length; i++) { + Sensor s = sensorManager.getDefaultSensor(keyTypes[i]); + sb.append("\n").append(keyNames[i]).append(": "); + if (s != null) { + sb.append(s.getName()).append(" (").append(s.getVendor()).append(")"); + } else { + sb.append("Not Available"); + } + } + } + + LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); + if (locationManager != null) { + sb.append("\n\n--- Location Status ---"); + boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); + boolean networkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); + sb.append("\nGPS Provider: ").append(gpsEnabled ? "Enabled" : "Disabled"); + sb.append("\nNetwork Provider: ").append(networkEnabled ? "Enabled" : "Disabled"); + } + + return sb.toString(); + } + private final androidx.activity.result.ActivityResultLauncher requestPermissionLauncher = registerForActivityResult( new androidx.activity.result.contract.ActivityResultContracts.RequestPermission(), isGranted -> { From a01fd76630594311355cf23acb2731a90bb9dba1 Mon Sep 17 00:00:00 2001 From: iso53 <102249575+ISO53@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:26:09 +0300 Subject: [PATCH 3/4] Use theme colors and update compass drawable --- app/src/main/res/color/switch_thumb_color.xml | 7 +++--- app/src/main/res/color/switch_track_color.xml | 7 +++--- .../color/switch_track_decoration_color.xml | 6 ++--- .../main/res/drawable/vd_compass_needles.xml | 25 +++++++++++-------- 4 files changed, 24 insertions(+), 21 deletions(-) diff --git a/app/src/main/res/color/switch_thumb_color.xml b/app/src/main/res/color/switch_thumb_color.xml index c1a4372..7b2907e 100644 --- a/app/src/main/res/color/switch_thumb_color.xml +++ b/app/src/main/res/color/switch_thumb_color.xml @@ -1,7 +1,6 @@ - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/color/switch_track_color.xml b/app/src/main/res/color/switch_track_color.xml index 94697b5..f24b2bc 100644 --- a/app/src/main/res/color/switch_track_color.xml +++ b/app/src/main/res/color/switch_track_color.xml @@ -1,7 +1,6 @@ - - - - + + + \ No newline at end of file diff --git a/app/src/main/res/color/switch_track_decoration_color.xml b/app/src/main/res/color/switch_track_decoration_color.xml index 36b34e8..0d0d9c2 100644 --- a/app/src/main/res/color/switch_track_decoration_color.xml +++ b/app/src/main/res/color/switch_track_decoration_color.xml @@ -1,6 +1,6 @@ - - - + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/vd_compass_needles.xml b/app/src/main/res/drawable/vd_compass_needles.xml index d325c16..09923f0 100644 --- a/app/src/main/res/drawable/vd_compass_needles.xml +++ b/app/src/main/res/drawable/vd_compass_needles.xml @@ -7,24 +7,24 @@ - + @@ -35,20 +35,25 @@ android:pivotY="100" android:rotation="0"> + + + From f0902cda4009ab2b6b84040d7672bad12a7fedca Mon Sep 17 00:00:00 2001 From: iso53 <102249575+ISO53@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:27:05 +0300 Subject: [PATCH 4/4] Bump app version to 1.3.1 (versionCode 4) --- app/build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 8220fc6..c4b541b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,8 +13,8 @@ android { applicationId = "io.github.iso53.nothingcompass" minSdk = 27 targetSdk = 36 - versionCode = 3 - versionName = "1.3.0" + versionCode = 4 + versionName = "1.3.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" }