2016-09-14 13 views
0

私はアンドロイドモバイルアプリケーションを開発するためにDelphi 10.1 Berlinを使用しています。また、位置センサーがオンになっていないかどうかを確認する必要があるため、アンドロイドモバイルの位置センサー設定にリダイレクトする必要があります。 Delphiを使用して実装するにはどうすればよいですか?私はJAVAを使用している例を見ましたが、Delphiでは見つかりませんでした。そして事前に感謝します。デルファイを使用してアンドロイドでアプリケーションを位置センサーにリダイレクトする方法

答えて

1

次のようなコードを試すことができます。ここでヘルパーユニットです:

unit LocationU; 

interface 

function IsGPSProviderEnabled: Boolean; 

function IsNetworkProviderEnabled: Boolean; 

procedure LaunchLocationSettings; 

implementation 

uses 
    System.SysUtils, 
    Androidapi.Helpers, 
    Androidapi.JNI.JavaTypes, 
    Androidapi.JNI.GraphicsContentViewText, 
    Androidapi.JNI.Location, 
    Androidapi.JNI.Provider; 

function IsProviderEnabled(const Provider: JString): Boolean; 
var 
    LocationManagerObj: JObject; 
    LocationManager: JLocationManager; 
begin 
    LocationManagerObj := TAndroidHelper.Context.getSystemService(
    TJContext.JavaClass.LOCATION_SERVICE); 
    LocationManager := TJLocationManager.Wrap(LocationManagerObj); 
    Result := LocationManager.isProviderEnabled(Provider); 
end; 

function IsGPSProviderEnabled: Boolean; 
begin 
    Result := IsProviderEnabled(TJLocationManager.JavaClass.GPS_PROVIDER); 
end; 

function IsNetworkProviderEnabled: Boolean; 
begin 
    Result := IsProviderEnabled(TJLocationManager.JavaClass.NETWORK_PROVIDER); 
end; 

procedure LaunchLocationSettings; 
begin 
    TAndroidHelper.Activity.startActivity(
    TJIntent.JavaClass.init(TJSettings.JavaClass.ACTION_LOCATION_SOURCE_SETTINGS)); 
end; 

end. 

、ここではそれを呼び出すいくつかのコードです:

uses 
    FMX.Helpers.Android, 
    Androidapi.Helpers, 
    Androidapi.JNI.Widget, 
    LocationU; 

procedure TMainForm.FormCreate(Sender: TObject); 
begin 
    if not IsGPSProviderEnabled and not IsNetworkProviderEnabled then 
    begin 
    CallInUiThread(
     procedure 
     begin 
     TJToast.JavaClass.makeText(
      TAndroidHelper.Context, 
      StrToJCharSequence('Location services not enabled - launching settings'), 
      TJToast.JavaClass.LENGTH_SHORT).show 
     end); 
    LaunchLocationSettings; 
    end; 
end; 
関連する問題