2016-04-05 21 views
1

FiremonkeyプロジェクトでGPSサービスを有効にすることができますか? ロケーションセンサーで有効にしていません。 GPSが有効になっている場合やネットワークの場所がある場合にのみGPS座標を取得できます。FiremonkeyでAndroid用のGPSサービスを有効にする

他のいくつかのAndroidアプリでは、GPSを有効にするかどうかを尋ねるメッセージが表示されます。同意すると、そのアプリのGPSが有効になります。私もこれをやりたい

GPSサービスがAndroid用に有効になっているかどうかを確認する方法は既に知っていますが、それを有効にする方法はわかりません。以下

コードは、GPSが有効になっているかどうかを確認する方法です:あなたはJavaでそれをプログラムする場合、私は同じことをしようとした

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; 

。このリンクのように: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; 

私のGPSもオンにならない。

更新日: Android 4.0以降のGPSを有効にすると無効になっているようです。

+0

確かに、彼らは唯一の続行するためにユーザーの入力を要求することができるように、この能力をフィルタしません。確かにそれのまわりでハックがなければならない。 –

答えて

2

あなたはGPSを有効にすることはできませんが、それを行うには、ユーザーに尋ねることができます。

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; 
関連する問題