Compare commits

...

5 Commits

Author SHA1 Message Date
Peter Cai c56c69a5a7 Update .gitignore for Android Studio build outputs 2022-06-02 22:59:22 -04:00
Peter Cai 0e9fce1ffd app: Add ACCESS_BACKGROUND_LOCATION permission
Needed for binding to backends when we are in the background.
2022-06-02 22:58:41 -04:00
Peter Cai 0bb25e70ec app: Fix build 2022-06-02 21:49:31 -04:00
Peter Cai 1274a311d8 Revert "Add force enabled backends array"
This reverts commit 4f3db06db5.
2022-06-02 21:12:49 -04:00
Erfan Abdi 4f3db06db5 Add force enabled backends array
* For easy use on adding default backends as overlay or rro
2022-06-02 20:52:10 -04:00
5 changed files with 26 additions and 22 deletions

1
.gitignore vendored
View File

@ -10,3 +10,4 @@ user.gradle
local.properties local.properties
.idea/ .idea/
BuildConfig.java BuildConfig.java
app/UnifiedNlp

View File

@ -45,6 +45,7 @@ android {
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
main.java.srcDirs += 'src/main/java'
} }
flavorDimensions 'default' flavorDimensions 'default'
@ -64,6 +65,10 @@ android {
} }
} }
android.applicationVariants.all { variant ->
variant.resValue 'string', 'application_id', variant.applicationId
}
compileOptions { compileOptions {
sourceCompatibility = 1.8 sourceCompatibility = 1.8
targetCompatibility = 1.8 targetCompatibility = 1.8
@ -78,8 +83,6 @@ android {
} }
} }
apply from: "../gradle/androidJars.gradle"
dependencies { dependencies {
implementation project(':api') implementation project(':api')
implementation project(':geocode-v1') implementation project(':geocode-v1')
@ -103,9 +106,3 @@ dependencies {
implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion" implementation "androidx.navigation:navigation-fragment-ktx:$navigationVersion"
implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion" implementation "androidx.navigation:navigation-ui-ktx:$navigationVersion"
} }
afterEvaluate {
android.applicationVariants.all { variant ->
variant.resValue 'string', 'application_id', variant.applicationId
}
}

View File

@ -18,6 +18,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
package="org.microg.nlp.app"> package="org.microg.nlp.app">
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application <application

View File

@ -23,19 +23,19 @@ import android.location.LocationManager;
import android.os.Bundle; import android.os.Bundle;
import android.text.TextUtils; import android.text.TextUtils;
import androidx.lifecycle.LifecycleOwner;
import org.microg.nlp.app.R; import org.microg.nlp.app.R;
import org.microg.nlp.client.UnifiedLocationClient; import org.microg.nlp.client.LocationClient;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
import static android.content.Context.LOCATION_SERVICE; import static android.content.Context.LOCATION_SERVICE;
import static android.location.LocationManager.NETWORK_PROVIDER; import static android.location.LocationManager.NETWORK_PROVIDER;
import static org.microg.nlp.api.Constants.LOCATION_EXTRA_BACKEND_COMPONENT; import static org.microg.nlp.api.Constants.LOCATION_EXTRA_BACKEND_COMPONENT;
import static org.microg.nlp.app.tools.selfcheck.SelfCheckGroup.Result.Negative; import org.microg.nlp.app.tools.selfcheck.SelfCheckGroup.Result;
import static org.microg.nlp.app.tools.selfcheck.SelfCheckGroup.Result.Positive;
import static org.microg.nlp.app.tools.selfcheck.SelfCheckGroup.Result.Unknown;
public class NlpStatusChecks implements SelfCheckGroup { public class NlpStatusChecks implements org.microg.nlp.app.tools.selfcheck.SelfCheckGroup {
@Override @Override
public String getGroupName(Context context) { public String getGroupName(Context context) {
return context.getString(R.string.self_check_cat_nlp_status); return context.getString(R.string.self_check_cat_nlp_status);
@ -50,17 +50,21 @@ public class NlpStatusChecks implements SelfCheckGroup {
} }
} }
private LocationClient getLocationClient(Context context) {
return new LocationClient(context, ((LifecycleOwner) context).getLifecycle());
}
private boolean providerWasBound(Context context, ResultCollector collector) { private boolean providerWasBound(Context context, ResultCollector collector) {
collector.addResult(context.getString(R.string.self_check_name_nlp_bound), collector.addResult(context.getString(R.string.self_check_name_nlp_bound),
UnifiedLocationClient.get(context).isAvailable() ? Positive : Negative, context.getString(R.string.self_check_resolution_nlp_bound)); getLocationClient(context).isAvailable() ? Result.Positive : Result.Negative, context.getString(R.string.self_check_resolution_nlp_bound));
return UnifiedLocationClient.get(context).isAvailable(); return getLocationClient(context).isAvailable();
} }
private boolean isNetworkLocationEnabled(Context context, ResultCollector collector) { private boolean isNetworkLocationEnabled(Context context, ResultCollector collector) {
LocationManager locationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE); LocationManager locationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
boolean networkEnabled = locationManager.getProviders(true).contains(NETWORK_PROVIDER); boolean networkEnabled = locationManager.getProviders(true).contains(NETWORK_PROVIDER);
collector.addResult(context.getString(R.string.self_check_name_network_enabled), collector.addResult(context.getString(R.string.self_check_name_network_enabled),
networkEnabled ? Positive : Negative, context.getString(R.string.self_check_resolution_network_enabled)); networkEnabled ? Result.Positive : Result.Negative, context.getString(R.string.self_check_resolution_network_enabled));
return networkEnabled; return networkEnabled;
} }
@ -71,10 +75,10 @@ public class NlpStatusChecks implements SelfCheckGroup {
boolean hasKnown = location != null && location.getExtras() != null && boolean hasKnown = location != null && location.getExtras() != null &&
location.getExtras().containsKey(LOCATION_EXTRA_BACKEND_COMPONENT); location.getExtras().containsKey(LOCATION_EXTRA_BACKEND_COMPONENT);
collector.addResult(context.getString(R.string.self_check_name_last_location), collector.addResult(context.getString(R.string.self_check_name_last_location),
hasKnown ? Positive : Unknown, context.getString(R.string.self_check_resolution_last_location)); hasKnown ? Result.Positive : Result.Unknown, context.getString(R.string.self_check_resolution_last_location));
return hasKnown; return hasKnown;
} catch (SecurityException e) { } catch (SecurityException e) {
collector.addResult(context.getString(R.string.self_check_name_last_location), Unknown, context.getString(R.string.self_check_loc_perm_missing)); collector.addResult(context.getString(R.string.self_check_name_last_location), Result.Unknown, context.getString(R.string.self_check_loc_perm_missing));
return false; return false;
} }
} }
@ -91,7 +95,7 @@ public class NlpStatusChecks implements SelfCheckGroup {
} catch (InterruptedException e) { } catch (InterruptedException e) {
} }
collector.addResult(context.getString(R.string.self_check_name_nlp_is_providing), collector.addResult(context.getString(R.string.self_check_name_nlp_is_providing),
result.get() ? Positive : Unknown, context.getString(R.string.self_check_resolution_nlp_is_providing)); result.get() ? Result.Positive : Result.Unknown, context.getString(R.string.self_check_resolution_nlp_is_providing));
} }
} }
}).start(); }).start();
@ -119,7 +123,7 @@ public class NlpStatusChecks implements SelfCheckGroup {
} }
}, null); }, null);
} catch (SecurityException e) { } catch (SecurityException e) {
collector.addResult(context.getString(R.string.self_check_name_last_location), Unknown, context.getString(R.string.self_check_loc_perm_missing)); collector.addResult(context.getString(R.string.self_check_name_last_location), Result.Unknown, context.getString(R.string.self_check_loc_perm_missing));
} }
} }
} }

View File

@ -9,7 +9,8 @@ import android.os.Bundle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import androidx.preference.Preference import androidx.preference.Preference
import org.microg.nlp.client.UnifiedLocationClient import org.microg.nlp.client.LocationClient
import org.microg.nlp.client.GeocodeClient
import org.microg.nlp.app.tools.ui.ResourceSettingsFragment import org.microg.nlp.app.tools.ui.ResourceSettingsFragment
import org.microg.nlp.ui.navigate import org.microg.nlp.ui.navigate
@ -35,7 +36,7 @@ class SettingsFragment : ResourceSettingsFragment() {
} }
private suspend fun updateDetails() { private suspend fun updateDetails() {
val backendCount = UnifiedLocationClient[requireContext()].getLocationBackends().size + UnifiedLocationClient[requireContext()].getGeocoderBackends().size val backendCount = LocationClient(requireContext(), lifecycle).getLocationBackends().size + GeocodeClient(requireContext(), lifecycle).getGeocodeBackends().size
findPreference<Preference>(PREF_UNIFIEDNLP)!!.summary = resources.getQuantityString(R.plurals.pref_unifiednlp_summary, backendCount, backendCount); findPreference<Preference>(PREF_UNIFIEDNLP)!!.summary = resources.getQuantityString(R.plurals.pref_unifiednlp_summary, backendCount, backendCount);
} }