福彩幸运武林开奖 ?
歡迎來到DIVCSS5查找CSS資料與學習DIV CSS布局技術!
您的位置:DIVCSS5首頁 > DIV+CSS基礎 > 時時彩 >

輝煌國際網址:Delphi在Android下使用Java庫的方法

 
 本文將以Android的USB串口通訊庫為例,介紹Delphi如何在Android中使用Java的庫。
 
  USB串口通訊庫地址:
 
   https://github.com/felHR85/UsbSerial
 
一、Java庫編譯
 
  1.安裝Android Studio
 
  2.在Android Studio中將SDK路徑指向Delphi的SDK路徑(避免重復安裝SDK)
 
  3.下載UsbSerial,用Android Studio打開,
 
  3.1Android Studio設置(File->Settings)
 
  gradle設置
 
  3.2設置工程屬性:
 
  選擇SDK版本:
 
 
 
4.編譯UsbSerial(Build-》Make Project)
 
  編譯過程可能需要下載Gradle相關文件。
 
  編譯完成后將生成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 配置環境變量:路徑是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
 
繼續在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管理服務接口
 
function GetUsbManager: JUsbManager;
 
var UsbManagerService: JObject;
 
begin
 
 UsbManagerService := SharedActivity.getSystemService(TJContext.JavaClass.USB_SERVICE);
 
 Result := TJUsbManager.Wrap((UsbManagerService as ILocalObject).GetObjectID);
 
end;
 
 獲取USB設備列表
 
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設備,返回USB連接接口 
 
function GetUsbConnection(Device: JUsbDevice): JUsbDeviceConnection;
var UsbManager: JUsbManager;
begin
 UsbManager := GetUsbManager;
 if UsbManager <> nil then
  Result := UsbManager.openDevice(Device);
end; 
 
//創建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; 
//串口設置
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發布
 
1.權限設置,引用的Java類庫需要的權限,需要在Delphi工程設置工添加上去。
 
2.將新生成的dex文件發布到遠程路徑classes\中,同時java庫需要的文件也同時添加

如需轉載,請注明文章出處和來源網址:http://www.mcowk.com.cn/rumen/sscc/s51199.shtml

我要分享到:

必備CSS教程 Essential CSS Tutorials

必備HTML基礎教程 Essential HTML Tutorials

如對文章有任何疑問請提交到DIV CSS論壇,或有任何網頁制作CSS問題立即到CSS論壇發貼求解 或 直接DIVCSS5網頁頂部搜索遇到DIVCSS疑問。
CSS教程文章修訂日期:2018-11-15 10:51 原創:DIVCSS5
本文www.mcowk.com.cn DIVCSS5版權所有。

福彩幸运武林开奖