概要
クロスプラットフォームアプリケーション開発フレームワークについては、必要なものを作成するためのすべてのツールを入手し、そのフレームワークを形成し、フレームワーク自体を使用または拡張することにより、自分用の新しい開発ツールを作成できます。 たとえば、FireMonkeyフレームワークを見てみましょう。 サードパーティのAPIが利用できない場合は、それらをDelphiまたはC++Builderユニットに変換できます。 FireMonkeyは、拡張するために不可欠なヘルパーユニットを提供します。
変換プロセスを自動化するには、WINSOFTによるAndroidツール向けのJavaImportを利用できます。 このツールは商用ですが、使用可能なDelphiおよびC++Builderユニットに.jarファイルまたは.classファイルを変換できるトライアルバージョンがあります。 しかし、機能制限があります。Android APIをDelphiまたはC++Builder向けに変換する場合は、ライセンスを取得する必要があります。
動作仕様
- サポートOS: Android 32 および Android 64
- DelphiおよびC++Builderのバージョン 6 – 10.4で利用可能
使用方法について
1つのコマンドで.classファイルを.pasファイルに変換する方法を解説した、このツールに関するビデオをご覧になることをお勧めします。 また、実際のアプリケーションで生成されたファイルの内容も示します。
変換されたandroid.widget.Toast APIで使用方法を確認しましょう。 例として、android.widget.Toast.pasユニットがあります。 はじめに、モジュールを usesに追加する必要があります。
ご覧のとおり、すべてがObject Pascalコードに変換されています。
実装はこちらです:
1 2 3 4 5 6 7 8 9 10 11 12 |
procedure ShowToast(const Message: string); overload; begin {$if CompilerVersion < 32} CallInUiThread( procedure begin {$endif} TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(Message), TJToast_LENGTH_SHORT).show; {$if CompilerVersion < 32} end); {$endif} end; |
コードに注意すると、コンパイラーのバージョンが32未満、つまり、Sydney(10.4)、Rio(10.3)、Tokyo(10.2)ではない場合、CallInUiThreadプロシージャを使用してコードを実行するコンパイラー・レベルによる条件分岐があります。以前のバージョンでは起動アクティビティと結果の処理に不可欠な手順でしたが、新しいバージョンでは廃止されています。 新しいバージョンでは、すべてのコードが現在Java UIスレッドで実行されているため、スレッドを同期する必要はありません。
それから、ユニットをブリッジするJavaClassでTJToastを呼び出します。 また、変換時の型の種類にも常に注意を払う必要があります。
次に、ShowToastを利用して、FireMonkey Androidプロジェクトからバッテリーレベルを取得する方法を学びます。
1 2 3 4 5 6 7 8 9 10 11 12 |
procedure TFormMain.ButtonBatteryClick(Sender: TObject); var Filter: JIntentFilter; Battery: JIntent; Level, Scale: Integer; begin Filter := TJIntentFilter.JavaClass.init(TJIntent.JavaClass.ACTION_BATTERY_CHANGED); Battery := MainActivity.registerReceiver(nil, filter); Level := Battery.getIntExtra(TJBatteryManager.JavaClass.EXTRA_LEVEL, -1); Scale := battery.getIntExtra(TJBatteryManager.JavaClass.EXTRA_SCALE, -1); ShowToast('Battery level: ' + FloatToStr(100 * Level / Scale), TJGravity_CENTER_HORIZONTAL or TJGravity_CENTER_VERTICAL); end; |
- 最初に、TJIntentFilterインターフェイスでブリッジします。
- JFMXNativeActivityを使用してレシーバーを登録します。
- 次に、EXTRA_LEVELおよびEXTRA_SCALEプロパティを取得します。
- ShowToastを使用して、バッテリーレベルを表示します。
上記のデモビデオでご覧ください。
ぜひ、WINSOFT JavaImportツールのフル機能をご確認ください。
RAD Studio 10.4 ボーナスパックキャンペーン実施中!
Enterprise Component Packには、WinSoftのCSVライブラリをはじめとする、100を超えるさまざまなWinSoftコンポーネントが搭載されています。2020年9月25日までに、Delphi / C++Builder / RAD Studio 10.4 Sydney EnterpriseまたはArchitectを購入すれば、すべて購入すると140万円以上の価値があるEnterprise Component Packを追加費用なしで入手できます。今すぐRAD Studio 10.4にステップアップしましょう!
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition