Hi to all, i post the work around or fix to AppGameKit Location to get location without Google API and Fused.
Enjoy!!
package com.thegamecreators.agk_player;
import static android.content.Context.LOCATION_SERVICE;
import static com.thegamecreators.agk_player.AGKHelper.g_pAct;
import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Looper;
import android.util.Log;
import androidx.core.app.ActivityCompat;
class G_Listener implements LocationListener {
public static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 0;
public static LocationManager G_Loc_Manager;
public static final long MIN_TIME_BW_UPDATES = 1000;
public void Launch(Activity act) {
G_Loc_Manager = (LocationManager)act.getSystemService(LOCATION_SERVICE);
if(ActivityCompat.checkSelfPermission(act, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(act, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
if(G_Loc_Manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
G_Loc_Manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, (float) MIN_DISTANCE_CHANGE_FOR_UPDATES, this, Looper.getMainLooper());
Location location = G_Loc_Manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null){
LocationSDK.m_fGPSLatitude = (float) location.getLatitude();
LocationSDK.m_fGPSLongitude = (float) location.getLongitude();
}
}
if(G_Loc_Manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
G_Loc_Manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, (float) MIN_DISTANCE_CHANGE_FOR_UPDATES, this, Looper.getMainLooper());
Location location = G_Loc_Manager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if(location != null){
LocationSDK.m_fGPSLatitude = (float) location.getLatitude();
LocationSDK.m_fGPSLongitude = (float) location.getLongitude();
}
}
}
public void Stop(){
G_Loc_Manager.removeUpdates(this);
}
@Override public void onLocationChanged(Location location) {
LocationSDK.m_fGPSLatitude = (float) location.getLatitude();
LocationSDK.m_fGPSLongitude = (float) location.getLongitude();
LocationSDK.m_fGPSAltitude = (float) location.getAltitude();
G_Loc_Manager.removeUpdates(this);
//Log.i("GEKKO", "Updated" + m_fGPSLatitude);
}
}
public class LocationSDK {
static float m_fGPSLatitude = 0;
static float m_fGPSLongitude = 0;
static float m_fGPSAltitude = 0;
public static G_Listener Gekko_Listener;
public static int GetGPSExists(Activity act){
LocationManager _temp = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
return _temp.isProviderEnabled(LocationManager.GPS_PROVIDER) ? 1 : 0;
}
public static void StartGPSTracking(Activity act){
G_Listener Gekko_Listener = new G_Listener();
Gekko_Listener.Launch(act);
}
public static void StopGPSTracking(){
if(Gekko_Listener != null) Gekko_Listener.Stop();
}
public static float GetGPSLatitude(){
return m_fGPSLatitude;
}
public static float GetGPSLongitude(){
return m_fGPSLongitude;
}
public static float GetGPSAltitude(){
return m_fGPSAltitude;
}
}