【问题标题】:How to redirect the app to location sensor settings in android using delphi如何使用delphi将应用程序重定向到android中的位置传感器设置
【发布时间】:2016-09-14 19:04:37
【问题描述】:

我正在使用 Delphi 10.1 Berlin 开发 android 移动应用程序。并且我需要检查位置传感器是否未打开,然后我需要重定向到 android mobile 中的位置传感器设置。我怎样才能使用 Delphi 来实现?我见过使用JAVA 的示例,但没有找到用于Delphi 的示例。并提前致谢。

【问题讨论】:

    标签: android delphi firemonkey delphi-10.1-berlin


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 2017-02-10
      • 2015-02-11
      • 2011-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多