2016-04-05 59 views
1

Bir Firemonkey projesinde GPS hizmetini etkinleştirirseniz dolaşıyordum? Yerleşkeni etkinleştirmiyor. GPS etkinse veya bir ağ konumunuz varsa, yalnızca GPS koordinatlarını alabilir.Firemonkey, Android için GPS hizmetini etkinleştirin

Bazı diğer Android uygulamalarında, GPS'i etkinleştirmek isteyip istemediğinizi sorar ve eğer kabul ederseniz, bu uygulama için GPS'i etkinleştirir. Ben de bunu yapmak istiyorum.

Android için GPS servisinin etkin olup olmadığını nasıl kontrol edeceğimi biliyorum, ancak nasıl etkinleştirileceğini bilmiyorum. Aşağıda

Kod GPS etkin olup olmadığını kontrol için yapılması gerekenler: Eğer Java bunu programlamak misin diye aynı şeyi denedim

uses 
    Androidapi.JNI.Location, 
    Androidapi.JNIBridge, 
    FMX.Helpers.Android, 
    Androidapi.JNI.GraphicsContentViewText; 

{$R *.fmx} 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    locationManager : JLocationManager; 
begin 
    locationManager := TJLocationManager.Wrap(((SharedActivity.getSystemService(TJContext.JavaClass.LOCATION_SERVICE)) as ILocalObject).GetObjectID); 

    if locationManager.isProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER) then 
    ; //do something 

    if locationManager.isProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER) then 
    ; //do something else 
end; 

. Bu linke gibi: https://stackoverflow.com/a/5305835/2728408

procedure TForm1.Button1Click(Sender: TObject); 
{$IFDEF ANDROID} 
var 
    Intent: JIntent; 
{$ENDIF} 
begin 
{$IFDEF ANDROID} 
    Intent := TJIntent.Create; 
    Intent.addCategory(TJIntent.JavaClass.CATEGORY_ALTERNATIVE); 
    Intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('3'))); 
    Intent.setClassName(StringToJString('com.android.settings'), StringToJString('com.android.settings.widget.SettingsAppWidgetProvider')); 
    try 
    //For Delphi 10 Seattle 
    TAndroidHelper.Activity.sendBroadcast(Intent); 
    //For older versions of Delphi 
    //SharedActivity.sendBroadcast(Intent); 
    except 
    on e: exception do 
    begin 
     ShowMessage('Error: ' + e.Message); 
    end; 
    end; 
{$ENDIF} 
end; 

herhangi bir hata alamadım ama benim GPS da açık almaz.

GÜNCELLEME: Android 4.0 ve üstü için GPS'i etkinleştirmek için devre dışı bırakılmış görünüyor.

+0

Nitekim, sadece devam etmek kullanıcı girişi gerektiren edebilmek için bu yeteneği filtre yapmak. Şüphesiz, bunun etrafında bir kırılma olmalı. –

cevap

2

Sen GPS'i etkinleştirmek olamaz, ama bunu yapmak için kullanıcı sorabilirsiniz:

procedure TForm1.GPSSettings; 
{$IFDEF ANDROID} 
var 
    Intent: JIntent; 
{$ENDIF} 
begin 
{$IFDEF ANDROID} 
    Intent := TJIntent.Create; 
    Intent :=  TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS); 
    TAndroidHelper.Activity.startActivity(Intent); 
{$ENDIF} 
end;