delphi android动态权限,DELPHI安卓动态权限申请

DELPHI安卓动态权限申请

安卓8.0以前的版本,只需要给静态权限就可以了,但安卓8.0及以后的版本,还需要运行期用代码动态申请权限。

下面以《蓝牙权限》为例,其他权限类似。

Delphi 10.3 社区版,提供的 Sample 里面有一个例子程序在:

C:\Users\Public\Documents\Embarcadero\Studio\20.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Bluetooth\BLEScanner

这个例子程序提供了打开 BLE 的时候的动态权限验证的例子代码。

首先,在 IDE 的 Project - Options 菜单弹出来的窗口里面,找到左边树结构的: Application -- Uses Permissions 项目,则右边会出来一堆权限让你打勾。这里要勾选上 Bluetooth 和 Bluetooth admin 两项。

老的安卓版本,勾选这两项就可以了。

新的安卓版本,还需要运行期用代码动态申请权限。

代码里面:

首先要实现一个函数:

procedure RequestPermissionsResult(Sender: TObject; const APermissions: TArray; const AGrantResults: TArray);

这个函数是一个动态申请权限的结果的回调函数。

在启动 BLE 的时候,通过以下代码申请权限:

PermissionsService.RequestPermissions([FLocationPermission], RequestPermissionsResult, DisplayRationale);

上述的代码的 PermissionsService 是声明在 System.Permissions 里面的。

上述代码里面的 RequestPermissionsResult 就是前面的那个回调函数。它在这里被调用,而且还被填入参数。

上述代码里面的 FLocationPermission: string; 它来自:

procedure TForm6.FormCreate(Sender: TObject);

begin

{$IFDEF ANDROID}

FLocationPermission := JStringToString(TJManifest_permission.JavaClass.ACCESS_COARSE_LOCATION);

{$ENDIF}

end;

上述代码里面用到的 JStringToString 要 Uses Androidapi.Helpers;

上述代码中还有一个 DisplayRationale 也是一个函数:

procedure TForm6.DisplayRationale(Sender: TObject; const APermissions: TArray; const APostRationaleProc: TProc);

begin

TDialogService.ShowMessage(‘We need to be given permission to discover BLE devices‘,

procedure(const AResult: TModalResult)

begin

APostRationaleProc;

end)

end;

在 RequestPermissionsResult 这个函数里面,判断是否通过权限,如果通过,才去调用蓝牙的方法。

procedure TForm6.RequestPermissionsResult(Sender: TObject; const APermissions: TArray; const AGrantResults: TArray);

begin

// 1 permissions involved: ACCESS_COARSE_LOCATION

if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then

StartBLEDiscovery

else

TDialogService.ShowMessage(‘Cannot start BLE scan as the permission has not been granted‘);

end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Delphi是一个广泛用于开发软件应用程序的集成开发环境(IDE),在使用Delphi进行Android应用程序开发时,可以实现流媒体的播放和传输。 在Delphi中,可以使用一些库和组件来实现Android的流媒体传输和播放功能。其中最常用的是FMX(FireMonkey)框架,它提供了一套跨平台的用户界面和多媒体功能,可以轻松开发出具有良好用户体验的应用程序。 要实现Android的流媒体传输,首先需要使用Delphi提供的网络编程组件,例如Indy TCP客户端/服务器组件。通过这些组件,可以建立与服务器之间的网络连接,并实现数据的传输。 针对Android上的流媒体播放,Delphi提供了一个功能强大的多媒体播放器组件——TMediaPlayer。TMediaPlayer可以支持多种流媒体格式的播放,例如MP3、MP4和MPEG等。通过TMediaPlayer,可以实现对远程服务器上的流媒体资源的获取和播放。 开发者可以通过在Delphi中创建一个新的Android项目,并使用FMX框架、Indy组件和TMediaPlayer组件来实现Android的流媒体传输和播放功能。通过编写相应的代码,可以实现连接服务器、获取流媒体数据以及在Android设备上播放音频或视频内容。 总之,DelphiAndroid开发中提供了一些强大的组件和工具,可以帮助开发者实现流媒体的传输和播放功能。使用Delphi进行Android流媒体开发,可以更加高效和便捷地创建出功能丰富的应用程序。 ### 回答2: Delphi是一种编程语言和集成开发环境(IDE),用于开发跨平台应用程序。在Delphi中,可以使用Firemonkey框架来开发Android应用程序。 Android Streaming是指在Android设备上使用流媒体技术来传输和播放音频或视频。流媒体是一种实时传输的媒体数据,可以边下载边播放,而不需要等待整个文件完全下载。 在Delphi中,开发者可以利用Firemonkey框架提供的功能实现Android Streaming。Firemonkey框架提供了TMediaPlayer组件,可用于从网络或本地文件流媒体源播放音视频。 首先,开发者需要创建一个Delphi Android项目。然后,将TMediaPlayer组件放置在设计界面上,并设置其相应属性,如FileName或URL,以指定要播放的流媒体源。 接下来,在Delphi代码中,可以使用TMediaPlayer组件的方法来控制流媒体的播放,如Play、Pause、Stop等。还可以使用TMediaPlayer组件的事件来处理播放的状态变化,如OnStart、OnStop、OnProgress等。 另外,为了实现更高级的功能,例如设置播放位置、音量调节、获取音视频时长等,开发者可以使用TMediaPlayer组件提供的属性和方法。 需要注意的是,Android Streaming的实现可能涉及网络连接和资源获取,因此开发者需要确保设备具有网络连接并具备权限访问网络资源。 总结起来,Delphi中可以使用Firemonkey框架提供的TMediaPlayer组件来实现Android Streaming。通过设置属性、调用方法以及处理事件来控制流媒体的播放。这为开发者提供了在Delphi中开发Android应用程序时使用流媒体技术的便利。 ### 回答3: Delphi是一种跨平台的集成开发环境(IDE),开发人员可以使用Delphi IDE来开发应用程序,并将其部署到不同的平台上,包括Windows、macOS、iOS和Android。 在Delphi中,可以使用FireMonkey框架来开发Android应用程序。FireMonkey框架提供了许多组件和功能,可以轻松实现音视频的流媒体播放。 对于Android流媒体播放,Delphi提供了TMediaPlayer组件和TFMXPlayer组件,它们都是FireMonkey框架的一部分。 TMediaPlayer组件是一个通用的多媒体播放器组件,可以用于播放各种格式的音频和视频文件。您可以使用TMediaPlayer组件在Delphi中实现音视频流媒体播放。您可以通过设置TMediaPlayer的FileName属性来指定要播放的媒体文件,并通过调用TMediaPlayer的Play方法来开始播放。 TFMXPlayer组件是一个专门用于FireMonkey框架的多媒体播放器组件,它支持音频和视频的流媒体播放。您可以使用TFMXPlayer组件在Delphi中实现Android流媒体播放。TFMXPlayer提供了一些特殊的属性和方法,用于控制播放器的行为,如Volume属性用于设置音量,Position属性用于设置播放位置,Play方法用于开始播放等等。 使用Delphi进行Android流媒体播放时,您需要将相关媒体文件添加到Android应用程序的资产(Assets)文件夹中,并在代码中指定媒体文件的路径或URI。然后,您可以通过调用相应的播放器组件的方法开始播放流媒体。 总的来说,Delphi提供了丰富的组件和功能,可以方便地在Android平台上实现流媒体播放。开发人员可以根据自己的需求选择合适的组件和方法来实现高效的流媒体播放应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值