欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Delphi在Android下使用Java庫的方法

 更新時間:2018年11月14日 14:59:18   作者:子航  
這篇文章主要介紹了Delphi在Android下使用Java庫的方法,本文以Android的USB串口通訊庫為例,給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下

 本文將以Android的USB串口通訊庫為例,介紹Delphi如何在Android中使用Java的庫。

  USB串口通訊庫地址:

   https://github.com/felHR85/UsbSerial

一、Java庫編譯

  1.安裝Android Studio

  2.在Android Studio中將SDK路徑指向Delphi的SDK路徑(避免重復(fù)安裝SDK)

  3.下載UsbSerial,用Android Studio打開,

  3.1Android Studio設(shè)置(File->Settings)

  gradle設(shè)置

  3.2設(shè)置工程屬性:

  選擇SDK版本:

 

4.編譯UsbSerial(Build-》Make Project)

  編譯過程可能需要下載Gradle相關(guān)文件。

  編譯完成后將生成classes.jar

5. 生成DEX文件

5.1生成dex需要用到一個 dx.bat,具體目錄是在%Android%\build-tools\28.0.3(%Android%為Android SDK目錄,28.0.3不特指,每個tools下都有的,%Android%使用的不一定是C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows)

5.2進入cmd.exe 配置環(huán)境變量:路徑是dx.bat下的目錄

set ANDROID_HOME=\C:\Users\Public\Documents\Embarcadero\Studio\19.0\PlatformSDKs\android-sdk-windows

set path="C:\Program Files (x86)\Java\jdk1.8.0_144\bin";%PATH%

dx --dex --output=C:\DelphiComps\UsbSerial\bin\usbserial.dexC:\DelphiComps\UsbSerial\bin\classes.jar

這樣就生成了usbserial.dex

二、合并dex文件

生成的dex文件需要與Delphi自帶的dex文件進行合并。

Delphi自帶的dex文件分為Debug版本,和Release版本,路徑分別在%BDS%\lib\android\Debug,%BDS%\lib\android\Release

繼續(xù)在cmd.exe中:

set BDS=C:\Program Files (x86)\Embarcadero\Studio\19.0

set path="C:\Program Files (x86)\Java\jdk1.8.0_144\bin";%PATH%

java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger debug_classes.dex %BDS%\lib\android\Debug\classes.dex .\usbserial.dex

java -cp %DX_LIB%\dx.jar com.android.dx.merge.DexMerger release_classes.dex %BDS%\lib\android\Release\classes.dex .\usbserial.dex

如果是Debug模式:

copy debug_classes classes.dex

如果是Release模式:

copy Release_classes classes.dex

三、生成Delphi訪問接口

Delphi 10.1以上自帶的Java2OP工具,能夠自動生成java類的接口文件。

在Cmd.exe中

set BDS=C:\Program Files (x86)\Embarcadero\Studio\19.0

set path="C:\Program Files (x86)\Java\jdk1.8.0_144\bin";%PATH%
set path=%BDS%\bin\converters\java2op";%PATH%
java2op -jar classes.jar Android.JNI.UsbSerial.pas

此處的classes.jar即為usbserial編譯后的java類庫,生成Delphi的接口文件Android.JNI.UsbSerial.pas

五.使用Java類庫

在Delphi工程中引用Android.JNI.UsbSerial.pas

獲取USB管理服務(wù)接口

function GetUsbManager: JUsbManager;

var UsbManagerService: JObject;

begin

 UsbManagerService := SharedActivity.getSystemService(TJContext.JavaClass.USB_SERVICE);

 Result := TJUsbManager.Wrap((UsbManagerService as ILocalObject).GetObjectID);

end;

 獲取USB設(shè)備列表

function GetUsbDevices: TArray<JUsbDevice>;
var
 UsbManager: JUsbManager;
 UsbDeviceList: JHashMap;
 UsbDeviceListIterator: JIterator;
 I: Integer;
begin
 UsbManager := GetUsbManager;
 if UsbManager <> nil then
 begin
  UsbDeviceList := UsbManager.getDeviceList;
  SetLength(Result, UsbDeviceList.size);
 
  UsbDeviceListIterator := UsbDeviceList.values.iterator;
  for I := 0 to Length(Result) - 1 do
   Result[I] := TJUsbDevice.Wrap((UsbDeviceListIterator.next as ILocalObject).GetObjectID);
 end;
end;

 打開USB設(shè)備,返回USB連接接口 

function GetUsbConnection(Device: JUsbDevice): JUsbDeviceConnection;
var UsbManager: JUsbManager;
begin
 UsbManager := GetUsbManager;
 if UsbManager <> nil then
  Result := UsbManager.openDevice(Device);
end; 
 
//創(chuàng)建USB串口
 SerialDevice := TJUsbSerialDevice.JavaClass.createUsbSerialDevice(UsbDevice, UsbConnection);
 if SerialDevice = nil then
 begin
  raise Exceptioin.Create('Cannot create serial device');
  Exit;
 end;
//打開USB串口
 if not SerialDevice.syncOpen then
 begin
  raise Exception.Create('Cannot open serial device');
  SerialDevice := nil;
  UsbConnection.close;
  UsbConnection := nil;
  Exit;
 end; 
//串口設(shè)置
SerialDevice.setBaudRate(9600);
SerialDevice.setDataBits(TJUsbSerialInterface_DATA_BITS_8);
SerialDevice.setStopBits(TJUsbSerialInterface_STOP_BITS_1);
SerialDevice.setParity(TJUsbSerialInterface_PARITY_NONE);
SerialDevice.setFlowControl(TJUsbSerialInterface_FLOW_CONTROL_OFF); 
//讀串口:
if SerialDevice.syncRead(ReadBuffer, 50) >= 1 then
 Data := Data + TEncoding.UTF8.GetString(ToByteArray(ReadBuffer)); 
  
//寫串口
  SerialDevice.syncWrite(WriteBuffer, 1000); 
 

六、Delphi發(fā)布

1.權(quán)限設(shè)置,引用的Java類庫需要的權(quán)限,需要在Delphi工程設(shè)置工添加上去。

2.將新生成的dex文件發(fā)布到遠程路徑classes\中,同時java庫需要的文件也同時添加

總結(jié)

以上所述是小編給大家介紹的Delphi在Android下使用Java庫的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解Android中Handler的內(nèi)部實現(xiàn)原理

    詳解Android中Handler的內(nèi)部實現(xiàn)原理

    這篇文章主要介紹了Android中Handler的內(nèi)部實現(xiàn)原理,對Handler和消息循環(huán)的實現(xiàn)原理進行源碼分析,需要的朋友可以參考下
    2015-12-12
  • Android自定義RadioGroupX實現(xiàn)多行多列布局

    Android自定義RadioGroupX實現(xiàn)多行多列布局

    這篇文章主要為大家詳細介紹了Android自定義RadioGroupX實現(xiàn)多行多列布局,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Android仿微信實現(xiàn)評論功能

    Android仿微信實現(xiàn)評論功能

    這篇文章主要為大家詳細介紹了Android仿微信實現(xiàn)評論功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • Android圖片選擇器 豐富的配置選項

    Android圖片選擇器 豐富的配置選項

    這篇文章主要介紹了Android圖片選擇器,豐富的配置選項,極大程度的簡化使用,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Android數(shù)據(jù)持久化之ContentProvider機制詳解

    Android數(shù)據(jù)持久化之ContentProvider機制詳解

    這篇文章主要介紹了Android數(shù)據(jù)持久化之ContentProvider機制,結(jié)合實例形式分析了ContentProvider機制的原理與相關(guān)使用技巧,需要的朋友可以參考下
    2017-05-05
  • Android Studio打包H5網(wǎng)址頁面,封裝成APK

    Android Studio打包H5網(wǎng)址頁面,封裝成APK

    大家好,本篇文章主要講的是Android Studio打包H5網(wǎng)址頁面,封裝成APK,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android中Textview和圖片同行顯示(文字超出用省略號,圖片自動靠右邊)

    Android中Textview和圖片同行顯示(文字超出用省略號,圖片自動靠右邊)

    Android中Textview和圖片同行顯示,文字超出用省略號顯示,圖片自動靠右邊??吹竭@個問題本來認為是一個很正常的需求,看起來很簡單,但是做起來卻遇到了很蛋疼的問題,怎么搞的都不行,堵了很長時間,下面說一下解決的方案,希望遇到這樣問題的朋友可以使用。
    2016-12-12
  • Android如何給Textview添加菜單項詳解(Java)

    Android如何給Textview添加菜單項詳解(Java)

    TextView是android里面用的最多的控件,TextView類似一般UI中的Label,TextBlock等控件,只是為了單純的顯示一行或多行文本,下面這篇文章主要給大家介紹了關(guān)于Android如何給Textview添加菜單項的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 使用PackageManager獲得應(yīng)用信息實例方法

    使用PackageManager獲得應(yīng)用信息實例方法

    PackageManager是Android中一個很有用的類,能夠獲取已安裝的應(yīng)用(包)的信息,如應(yīng)用名稱、圖標、權(quán)限,安裝、刪除應(yīng)用(包)等
    2013-11-11
  • Android分享微信小程序技巧之圖片優(yōu)化

    Android分享微信小程序技巧之圖片優(yōu)化

    這篇文章主要給大家介紹了關(guān)于Android分享微信小程序技巧之圖片優(yōu)化的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11

最新評論