やったこと
先日、Delphi XE6で作成したBluetoothを使用するAndroidアプリケーションをDelphi XE7から導入されたBluetooth APIを使用するように修正しました。
そのときに感じたことを書きます。
(BluetoothはBluetooth LEではなく、クラシックBluetoothです。)
修正前のアプリケーション
- 開発環境…Delphi XE6
- Bluetooth…AndroidのBluetooth API
修正後のアプリケーション
- 開発環境…Delphi XE7
- Bluetooth…DelphiのBluetooth API
DelphiのBluetooth APIはAndroidのBluetooth APIに似ている
DelphiのBluetooth APIはAndroidのBluetooth APIに似ていると感じました。
AndroidのBluetooth APIを参考にして、DelphiのBluetooth APIを設計したのかもしれません。
知っているAPIによく似ていたので、DelphiのBluetooth APIの使い方はすぐにわかりました。
学習コストは低いと思いました。
DelphiのBluetooth APIに書き換えてソースコードが見やすくなった
AndroidのAPIを使用するときは、Delphiのデータ型とJavaのデータ型を変換する処理が必要になります。
Delphiのデータ型からJavaのデータ型に変換してAndroid APIに引数として渡します。
Android APIの返値はJavaのデータ型ですから、Delphiのデータ型に戻します。
このような変換作業が何度もソースコード上に現れます。
DelphiのBluetooth APIに書き換えることによって、Javaのデータ型とDelphiのデータ型を変換する必要がなくなりました。
ソースコードはずっと見やすくなりました。
足りない機能はAndroid APIを呼び出す
DelphiのBluetooth APIはAndroidのBluetooth APIのすべての機能をサポートしているわけではありません。
実装されていない機能もありました。
たとえば、デバイスがBluetoothを使用できるかを調べたり、Bluetoothが有効になっているかを取得する機能はDelpphiのBluetooth APIにはありませんでした。
DelphiのBluetooth APIに実装されていない機能は、AndroidのBluetooth APIを呼び出すことで対応しました。
ネイティブのAPIを簡単に呼び出せるので、DelphiのAPIがサポートしていなくても大きな問題にはなりませんでした。
Windowsでも動く
DelphiのBluetooth APIに変更する作業が終わった後、試しにターゲットデバイスをWindowsにして実行してみたところ、アプリケーションがそのまま動作しました。
これには驚きました。
開発中はAndroidデバイスにアプリケーションを転送して動作を確認していましたが、転送には時間がかかります。
はじめからWindows上で動作を確認していれば、もっと早く開発できたと思います。
まとめ
特に大きな問題もなく、AndroidのBluetooth APIからDelphiのBluetooth APIに移行することができました。
WindowsでもBluetoothが使えることにもっと早く気がついていれば、開発がもっとスムーズにできたと思います。