Skip to content

Commit f5ad796

Browse files
committed
Location: Entire rewrite of the location subsystem
No modules anymore, they became unreliable in recent Android versions due to "energy savings".
1 parent 956e2ca commit f5ad796

File tree

141 files changed

+11420
-1946
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+11420
-1946
lines changed

build.gradle

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@
55

66
buildscript {
77
ext.cronetVersion = '102.5005.125'
8-
ext.nlpVersion = '2.0-alpha10'
9-
ext.safeParcelVersion = '1.7.0'
8+
ext.safeParcelVersion = '1.7.1'
109
ext.wearableVersion = '0.1.1'
1110

1211
ext.kotlinVersion = '1.7.10'
1312
ext.coroutineVersion = '1.6.4'
1413

1514
ext.annotationVersion = '1.5.0'
16-
ext.appcompatVersion = '1.4.2'
15+
ext.appcompatVersion = '1.6.1'
1716
ext.biometricVersion = '1.1.0'
18-
ext.coreVersion = '1.8.0'
19-
ext.fragmentVersion = '1.5.1'
17+
ext.coreVersion = '1.9.0'
18+
ext.fragmentVersion = '1.5.5'
2019
ext.lifecycleVersion = '2.5.1'
2120
ext.loaderVersion = '1.1.0'
2221
ext.mediarouterVersion = '1.3.1'
@@ -36,7 +35,7 @@ buildscript {
3635

3736
ext.androidMinSdk = 14
3837
ext.androidTargetSdk = 29
39-
ext.androidCompileSdk = 31
38+
ext.androidCompileSdk = 33
4039

4140
repositories {
4241
mavenCentral()

play-services-basement/src/main/java/com/google/android/gms/common/internal/GetServiceRequest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
public class GetServiceRequest extends AutoSafeParcelable {
3434
@Field(1)
35-
private int versionCode = 4;
35+
private int versionCode = 6;
3636
@Field(2)
3737
public final int serviceId;
3838
@Field(3)
@@ -48,6 +48,7 @@ public class GetServiceRequest extends AutoSafeParcelable {
4848
@Field(8)
4949
public Account account;
5050
@Field(9)
51+
@Deprecated
5152
private long field9;
5253
@Field(10)
5354
public Feature[] defaultFeatures;
@@ -60,7 +61,7 @@ public class GetServiceRequest extends AutoSafeParcelable {
6061
@Field(14)
6162
private boolean field14;
6263
@Field(15)
63-
private String field15;
64+
private String attributionTag;
6465

6566
private GetServiceRequest() {
6667
serviceId = -1;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2023 microG Project Team
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package org.microg.gms.common;
7+
8+
import java.lang.annotation.ElementType;
9+
import java.lang.annotation.Retention;
10+
import java.lang.annotation.RetentionPolicy;
11+
import java.lang.annotation.Target;
12+
13+
/**
14+
* Hide the class, method or field from the public API.
15+
*/
16+
@Retention(RetentionPolicy.SOURCE)
17+
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR})
18+
public @interface Hide {
19+
}

play-services-basement/src/main/java/org/microg/gms/common/PublicApi.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@
4343
* marked as public api.
4444
*
4545
* @return true if the method or field is not part of the public api
46+
* @deprecated use {@link Hide} instead
4647
*/
48+
@Deprecated
4749
boolean exclude() default false;
4850
}

play-services-core/build.gradle

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,6 @@ dependencies {
5454
implementation project(':play-services-safetynet')
5555
implementation project(':play-services-tasks-ktx')
5656

57-
runtimeOnly("org.microg.nlp:geocode-v1:$nlpVersion") {
58-
exclude group: 'org.microg', module: 'safe-parcel'
59-
}
60-
runtimeOnly("org.microg.nlp:location-v2:$nlpVersion") {
61-
exclude group: 'org.microg', module: 'safe-parcel'
62-
}
63-
runtimeOnly("org.microg.nlp:location-v3:$nlpVersion") {
64-
exclude group: 'org.microg', module: 'safe-parcel'
65-
}
66-
implementation("org.microg.nlp:ui:$nlpVersion") {
67-
exclude group: 'org.microg', module: 'safe-parcel'
68-
}
69-
7057
withMapboxImplementation project(':play-services-maps-core-mapbox')
7158
withVtmImplementation project(':play-services-maps-core-vtm')
7259

play-services-core/src/main/kotlin/org/microg/gms/ui/SettingsFragment.kt

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,6 @@ import org.microg.gms.checkin.CheckinPrefs
1515
import org.microg.gms.gcm.GcmDatabase
1616
import org.microg.gms.gcm.getGcmServiceInfo
1717
import org.microg.gms.safetynet.SafetyNetPreferences
18-
import org.microg.nlp.client.GeocodeClient
19-
import org.microg.nlp.client.LocationClient
20-
import org.microg.nlp.client.UnifiedLocationClient
2118
import org.microg.tools.ui.ResourceSettingsFragment
2219

2320
class SettingsFragment : ResourceSettingsFragment() {
@@ -36,8 +33,8 @@ class SettingsFragment : ResourceSettingsFragment() {
3633
findNavController().navigate(requireContext(), R.id.openSafetyNetSettings)
3734
true
3835
}
39-
findPreference<Preference>(PREF_UNIFIEDNLP)!!.onPreferenceClickListener = Preference.OnPreferenceClickListener {
40-
findNavController().navigate(requireContext(), R.id.openUnifiedNlpSettings)
36+
findPreference<Preference>(PREF_LOCATION)!!.onPreferenceClickListener = Preference.OnPreferenceClickListener {
37+
// TODO
4138
true
4239
}
4340
findPreference<Preference>(PREF_EXPOSURE)?.onPreferenceClickListener = Preference.OnPreferenceClickListener {
@@ -73,13 +70,6 @@ class SettingsFragment : ResourceSettingsFragment() {
7370
findPreference<Preference>(PREF_CHECKIN)!!.setSummary(if (CheckinPrefs.isEnabled(context)) R.string.service_status_enabled_short else R.string.service_status_disabled_short)
7471
findPreference<Preference>(PREF_SNET)!!.setSummary(if (SafetyNetPreferences.isEnabled(context)) R.string.service_status_enabled_short else R.string.service_status_disabled_short)
7572

76-
val backendCount = try {
77-
LocationClient(context, lifecycle).getLocationBackends().size + GeocodeClient(context, lifecycle).getGeocodeBackends().size
78-
} catch (e: Exception) {
79-
0
80-
}
81-
findPreference<Preference>(PREF_UNIFIEDNLP)!!.summary = context.resources.getQuantityString(R.plurals.pref_unifiednlp_summary, backendCount, backendCount)
82-
8373
findPreference<Preference>(PREF_EXPOSURE)?.isVisible = NearbyPreferencesIntegration.isAvailable
8474
findPreference<Preference>(PREF_EXPOSURE)?.icon = NearbyPreferencesIntegration.getIcon(context)
8575
findPreference<Preference>(PREF_EXPOSURE)?.summary = NearbyPreferencesIntegration.getExposurePreferenceSummary(context)
@@ -89,7 +79,7 @@ class SettingsFragment : ResourceSettingsFragment() {
8979
const val PREF_ABOUT = "pref_about"
9080
const val PREF_GCM = "pref_gcm"
9181
const val PREF_SNET = "pref_snet"
92-
const val PREF_UNIFIEDNLP = "pref_unifiednlp"
82+
const val PREF_LOCATION = "pref_location"
9383
const val PREF_CHECKIN = "pref_checkin"
9484
const val PREF_EXPOSURE = "pref_exposure"
9585
}

play-services-core/src/main/res/navigation/nav_settings.xml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@
1111
android:id="@+id/settingsFragment"
1212
android:name="org.microg.gms.ui.SettingsFragment"
1313
android:label="@string/gms_settings_name">
14-
<action
15-
android:id="@+id/openUnifiedNlpSettings"
16-
app:destination="@id/nav_unlp" />
1714
<action
1815
android:id="@+id/openSelfcheck"
1916
app:destination="@id/selfcheckFragment" />
@@ -154,6 +151,5 @@
154151

155152
<!-- Included -->
156153

157-
<include app:graph="@navigation/nav_unlp" />
158154
<include app:graph="@navigation/nav_nearby" />
159155
</navigation>

play-services-core/src/main/res/xml/preferences_start.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@
6060
<PreferenceCategory android:layout="@layout/preference_category_no_label">
6161
<Preference
6262
android:icon="@drawable/ic_map_marker"
63-
android:key="pref_unifiednlp"
64-
android:title="@string/nlp_backends_title" />
63+
android:key="pref_location"
64+
android:title="@string/prefcat_location_service"
65+
android:enabled="false"
66+
app:isPreferenceVisible="false"/>
6567
<Preference
6668
android:key="pref_exposure"
6769
android:title="@string/service_name_exposure"

play-services-location/core/build.gradle

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,18 @@ apply plugin: 'kotlin-android'
88

99
dependencies {
1010
api project(':play-services-location')
11+
compileOnly project(':play-services-location-system-api')
1112
implementation project(':play-services-base-core')
1213

13-
runtimeOnly("org.microg.nlp:service:$nlpVersion") {
14-
exclude group: 'org.microg', module: 'safe-parcel'
15-
}
16-
api("org.microg.nlp:client:$nlpVersion") {
17-
exclude group: 'org.microg', module: 'safe-parcel'
18-
}
19-
2014
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlinVersion"
2115
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion"
2216
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion"
2317
implementation "androidx.lifecycle:lifecycle-service:$lifecycleVersion"
2418
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycleVersion"
19+
20+
implementation "com.android.volley:volley:$volleyVersion"
21+
22+
implementation 'org.microg:address-formatter:0.3.1'
2523
}
2624

2725
android {
@@ -34,6 +32,10 @@ android {
3432
targetSdkVersion androidTargetSdk
3533
}
3634

35+
sourceSets {
36+
main.java.srcDirs += 'src/main/kotlin'
37+
}
38+
3739
compileOptions {
3840
sourceCompatibility = 1.8
3941
targetCompatibility = 1.8
Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,72 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<!--
3-
~ SPDX-FileCopyrightText: 2020, microG Project Team
3+
~ SPDX-FileCopyrightText: 2020 microG Project Team
44
~ SPDX-License-Identifier: Apache-2.0
55
-->
6-
<manifest package="org.microg.gms.location.core" xmlns:android="http://schemas.android.com/apk/res/android">
7-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
6+
<manifest xmlns:tools="http://schemas.android.com/tools"
7+
package="org.microg.gms.location.core"
8+
xmlns:android="http://schemas.android.com/apk/res/android">
9+
10+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
11+
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
12+
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
13+
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
14+
<uses-permission android:name="android.permission.BODY_SENSORS"/>
15+
16+
<uses-permission android:name="android.permission.LOCATION_HARDWARE"
17+
tools:ignore="ProtectedPermissions"/>
18+
<uses-permission android:name="android.permission.NETWORK_SCAN"
19+
tools:ignore="ProtectedPermissions"/>
20+
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE"
21+
tools:ignore="ProtectedPermissions"/>
22+
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"
23+
tools:ignore="ProtectedPermissions"/>
24+
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS"
25+
tools:ignore="ProtectedPermissions"/>
26+
<uses-permission android:name="android.permission.WATCH_APPOPS"
27+
tools:ignore="ProtectedPermissions"/>
828

929
<application>
30+
<uses-library android:name="com.android.location.provider" />
1031

11-
<service android:name="org.microg.gms.location.GoogleLocationManagerService">
32+
<service
33+
android:name="org.microg.gms.location.manager.LocationManagerService"
34+
android:exported="true">
1235
<intent-filter>
1336
<action android:name="com.google.android.location.internal.GoogleLocationManagerService.START"/>
1437
</intent-filter>
1538
</service>
16-
<service android:name="org.microg.gms.location.ReportingAndroidService">
39+
<service android:name="org.microg.gms.location.reporting.ReportingAndroidService"
40+
android:exported="true">
1741
<intent-filter>
1842
<action android:name="com.google.android.location.reporting.service.START"/>
1943
<action android:name="com.google.android.gms.location.reporting.service.START"/>
2044

2145
<category android:name="android.intent.category.DEFAULT"/>
2246
</intent-filter>
2347
</service>
48+
<service
49+
android:name="org.microg.gms.location.network.NetworkLocationService"
50+
android:exported="false"/>
51+
<service
52+
android:name="org.microg.gms.location.provider.NetworkLocationProviderService"
53+
android:exported="true"
54+
android:permission="android.permission.WRITE_SECURE_SETTINGS">
55+
<intent-filter>
56+
<action android:name="com.android.location.service.v2.NetworkLocationProvider"/>
57+
<action android:name="com.android.location.service.v3.NetworkLocationProvider"/>
58+
</intent-filter>
59+
<meta-data android:name="serviceVersion" android:value="2"/>
60+
</service>
61+
<service
62+
android:name="org.microg.gms.location.provider.GeocodeProviderService"
63+
android:exported="true"
64+
android:permission="android.permission.WRITE_SECURE_SETTINGS">
65+
<intent-filter>
66+
<action android:name="com.android.location.service.GeocodeProvider"/>
67+
<action android:name="com.google.android.location.GeocodeProvider"/>
68+
</intent-filter>
69+
<meta-data android:name="serviceVersion" android:value="2"/>
70+
</service>
2471
</application>
2572
</manifest>

0 commit comments

Comments
 (0)