zoukankan      html  css  js  c++  java
  • xe5 android 控制蓝牙[转]

    用以下代码中的接口实现控制蓝牙的开、关及详细信息

    unit Androidapi.JNI.BluetoothAdapter;

    // (c) RedTitan Technology 2013
    // JNI BLUETOOTH import demo
    // Note - REQUIRES - PROJECT OPTIONS - USES PERMISSIONS - BLUETOOTH

    interface

    uses
    Androidapi.JNIBridge,
    Androidapi.JNI.JavaTypes, Classes;

    type
    /////////////////////////// BluetoothDevice //////////////////////////////////
    JBluetoothDevice = interface;
    JBluetoothDeviceClass = interface(JObjectClass)
    ['{FB8F9E83-CF98-4737-B7B0-64EFB07EBE2A}']
    end;

    [JavaSignature('android/bluetooth/BluetoothDevice')]
    JBluetoothDevice = interface(JObject)
    ['{F2560E3D-D26E-4DD8-B384-43070B02FF04}']
    function getName:JString; cdecl;
    function getAddress:JString; cdecl;
    end;

    TJBluetoothDevice = class(TJavaGenericImport<JBluetoothDeviceClass, JBluetoothDevice>) end;

    /////////////////////////// BluetoothAdapter /////////////////////////////////

    JBluetoothAdapter = interface;

    JBluetoothAdapterClass = interface(JObjectClass)
    ['{05CE5465-2953-4CC3-9D9B-01D71E90F412}']
    function getDefaultAdapter: JBluetoothAdapter; cdecl;
    end;

    [JavaSignature('android/bluetooth/BluetoothAdapter')]
    JBluetoothAdapter = interface(JObject)
    ['{D5C8CAD6-E717-4B95-89F1-A6FD0861B7DB}']

    function isEnabled:Boolean; cdecl;
    function getName:JString; cdecl;
    function cancelDiscovery:Boolean;
    function checkBluetoothAddress(Address:JString):Boolean; cdecl;
    function disable:Boolean; cdecl;
    function enable:Boolean; cdecl;
    function getAddress:JString; cdecl;
    procedure closeProfileProxy(profile:Integer;BluetoothProfile:Jobject); cdecl;
    function getBondedDevices:JSet; cdecl;
    end;

    TJBluetoothAdapter = class(TJavaGenericImport<JBluetoothAdapterClass, JBluetoothAdapter>) end;

    // get local Bluetooth device name and check if it is enabled
    function checkBluetooth:string;

    // List bonded devices
    function getBonded:TStringList;

    implementation

    uses
    FMX.Helpers.Android;

    function checkBluetooth:string;
    var
    x:JBluetoothAdapter;
    s:String;
    addr:string;
    begin
    x:=TJBluetoothAdapter.JavaClass.getDefaultAdapter;
    s:=jstringtostring(x.getName);
    if x.isEnabled then result:=s+'(enabled) '+jstringtostring(x.getAddress)
    else result:=s+'(disabled)';
    end;

    function getBonded:TStringList;
    var
    x:JBluetoothAdapter;
    externalDevices:JSet;
    bonded:Tjavaobjectarray<Jobject>;
    it:Jiterator;
    o:JBluetoothDevice;
    begin
    result:=TStringlist.Create;
    x:=TJBluetoothAdapter.JavaClass.getDefaultAdapter;
    externalDevices:=x.getBondedDevices;

    it:=externalDevices.iterator;

    while it.hasNext do
    begin
    o:=TJBluetoothDevice.Wrap((it.next as ILocalObject).GetObjectID);
    result.Add(jstringtostring(o.getName)+','+jstringtostring(o.getAddress))
    end;

    end;

    end.

    蓝牙接口单元代码

    procedure TForm1.Button1Click(Sender: TObject);

    var
    x:JBluetoothAdapter;
    s:String;
    addr:string;
    begin
    x:=TJBluetoothAdapter.JavaClass.getDefaultAdapter;
    s:=jstringtostring(x.getName);
    if x.isEnabled then showmessage(s+'(enabled) '+jstringtostring(x.getAddress))
    else showmessage('(disabled)');
    end;

    测试代码

    当然你需要在project->option里给蓝牙的权限

    效果图:

        

     http://pan.baidu.com/s/1pBciU

  • 相关阅读:
    CCF 小明放学 201812-2(简单模拟)
    CSP 小明上学 201812-1 (水题)
    201903-4 消息传递接口(队列模拟)
    Betsy's Tour 漫游小镇(dfs)
    Checker Challenge跳棋的挑战(n皇后问题)
    Money Systems 货币系统(母函数)
    中国剩余定理(模板+详解)
    Biorhythms(中国剩余定理(模板题))
    输入输出外挂(纯数字型)
    欧几里德(转)
  • 原文地址:https://www.cnblogs.com/key-ok/p/3341119.html
Copyright © 2011-2022 走看看