delphi android 实例,Delphi Android实例-红外线操作(XE10.2+小米5)

unit Unit1;

interface

uses

System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,

FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,

FMX.Controls.Presentation, FMX.StdCtrls,

Androidapi.Helpers,//需要引入

AndroidAPI.jni.OS,//需要引入

Androidapi.JNIBridge,//需要引入

Androidapi.JNI.GraphicsContentViewText,//需要引入

Androidapi.JNI.JavaTypes,//需要引入

FMX.Helpers.Android;//需要引入

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

//外国大神写的

type

JConsumerIrManager_CarrierFrequencyRange = interface;

JConsumerIrManager_CarrierFrequencyRangeClass = interface(JObjectClass)

['{191A7F08-B93B-40D4-9B6E-3D908B37578E}']

{class} function init(min, max: Integer): JConsumerIrManager_CarrierFrequencyRange; cdecl;

end;

[JavaSignature('android/hardware/ConsumerIrManager$CarrierFrequencyRange')]

JConsumerIrManager_CarrierFrequencyRange = interface(JObject)

['{5AC0C73D-9DA2-49B0-A072-55EA03FE3B78}']

function getMaxFrequency: Integer; cdecl;

function getMinFrequency: Integer; cdecl;

end;

TJConsumerIrManager_CarrierFrequencyRange = class(TJavaGenericImport) end;

JConsumerIrManagerClass = interface(JObjectClass)

['{C8AB7EEA-046F-429C-8585-EF69EBB53718}']

end;

[JavaSignature('android/hardware/ConsumerIrManager')]

JConsumerIrManager = interface(JObject)

['{FF469731-5B57-46AB-9C83-4FB51CA6F2BA}']

function getCarrierFrequencies: TJavaArray; cdecl;

function hasIrEmitter: Boolean; cdecl;

procedure transmit(carrierFrequency: Integer; pattern: TJavaArray); cdecl;

end;

TJConsumerIrManager = class(TJavaGenericImport) end;

var

Form1: TForm1;

implementation

{$R *.fmx}

function MakeJavaIntArray(arr: array of Integer): TJavaArray;

var

I: Integer;

begin

Result := TJavaArray.Create(Length(arr));

for I := Low(arr) to High(arr) do

Result.Items[I] := arr[I];

end;

procedure TForm1.Button1Click(Sender: TObject);

var

mCIR: JConsumerIrManager;

mRanges: TJavaArray;

mRange: JConsumerIrManager_CarrierFrequencyRange;

I, DesiredFrequency: Integer;

HasDesiredFrequency: Boolean;

begin

//得到红外服务

mCIR := TJConsumerIrManager.Wrap((SharedActivityContext.getSystemService(TJContext.JavaClass.CONSUMER_IR_SERVICE)

as ILocalObject).GetObjectID);

//查看手机是否支持红外功能

if mCIR.hasIrEmitter then

begin

//根据需要使用红外线

DesiredFrequency := 3800;//一般的遥控板都是38KHz

HasDesiredFrequency := False;

//mRanges := mCIR.getCarrierFrequencies;//获得支持的Hz范围(不知道为什么我得到一个范围,取里面的值时出错了,我只能注掉)

//for I := 0 to mRanges.Length-1 do

//begin

//mRange := mRanges.Items[I];

//if (DesiredFrequency >= mRange.getMinFrequency) and (DesiredFrequency <= mRange.getMaxFrequency) then

//begin

//HasDesiredFrequency := True;

//Break;

//end;

//end;

//

//if HasDesiredFrequency then

//发送红外信号内容

mCIR.transmit(DesiredFrequency, MakeJavaIntArray([8950,4350,650,500,600,500,550,600,550,550,600,500,550,550,600,550,600,500,550,1650,600,1600,650,1600,550,1700,600,1600,600,1600,600,1650,600,1600,650,1600,550,1650,650,1600,600,550,550,550,550,550,550,550,600,500,600,550,550,550,550,550,550,1650,650,1600,600,1600,600,1650,600,1600,600])); //pattern values here

end;

end;

end.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种编程语言和开发环境,XE10.2是其中的一个版本。TCP(传输控制协议)是一种在计算机网络中常用的协议,用于在不同设备之间传输数据。 Delphi XE10.2支持使用TCP进行网络通信。它提供了一组用于创建TCP客户端和服务器的组件和类。使用这些组件,我们可以轻松地建立TCP连接并进行数据传输。 在Delphi XE10.2中创建TCP客户端很简单。我们可以使用TIdTCPClient组件来建立与服务器的连接,并使用Write和Read方法发送和接收数据。通过设置Host和Port属性,我们可以指定要连接的服务器的主机和端口号。 创建TCP服务器同样简单。我们可以使用TIdTCPServer组件来创建一个监听特定端口的服务器,并使用OnExecute事件处理传入的连接。在OnExecute事件中,我们可以接收客户端发送的数据,并对其进行相应的处理。 Delphi XE10.2还提供了其他一些相关的组件和类,用于处理TCP连接和数据传输中的各种问题。例如,TIdTCPConnection类可以作为TCP连接的基类,提供了更多高级的方法和属性。TIdTCPStream类可以用于读写TCP连接的数据流。 总之,Delphi XE10.2是一种功能强大的开发环境,提供了丰富的组件和类,方便我们使用TCP在不同设备之间进行数据传输。无论是创建TCP客户端,还是建立TCP服务器,Delphi XE10.2都能够满足我们的需求,并提供了各种方法和工具来简化开发过程。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值