Notes/Domino のクライアントソフトウェアには、ノーツクライアント以外に Nomad があります。現在 Nomad には、スマホやタブレット用の Nomad Mobile と WEB ブラウザで動作する Nomad WEB がありますが、今回は手持ちのデバイスで確認できる Nomad Mobile に関してです。
スマホやタブレットには、さまざまなセンサー類が付いていますが、Nomad では GPS にアクセスする機能が Notes 11 から追加されました。リリース当時、検証はしたのですが、先日久しぶりに開発しようとしたらすぐに思い出せず、ヘルプのお世話になりました。せっかくですからここでまとめておこうと思います。
GPS アクセスの概要
GPS にアクセスするためには Notes 11 で LotusScript に追加された次のクラスを使用します。
- NotesGPS
- NotesGPSPosition
- NotesGPSCoordinates
現在位置を取得する関数
GPS の座標は緯度(Latitude)と経度(Longitude)の 2 つの数値で示されます。デバイスの GPS にアクセスして現在位置の座標を返す GetGPSPos_Cur という関数を作成してみました(新規のスクリプトライブラリ lsGPS に作成)。
取得に成功した場合、戻り値が True となり、引数に座標をセットして返します。
Option Declare Public Function GetGPSPos_Cur(rdLatitude As Double, rdLongitude As Double) As Boolean Dim ns As New NotesSession Dim gps As NotesGPS Dim gpsp As NotesGPSPosition Dim gpsc As NotesGPSCoordinates On Error GoTo ErrProc Set gps = ns.CreateGPS() If gps.RequestAccess() Then Set gpsp = gps.GetCurrentPosition() Set gpsc = gpsp.Coordinates rdLatitude = gpsc.Latitude rdLongitude = gpsc.Longitude GetGPSPos_Cur = True End If ExitProc: Exit Function ErrProc: GetGPSPos_Cur = False Resume ExitProc End Function |
座標取得までの流れは次の通りです。
- NotesSession クラスの CreateGPS メソッドで NotesGPS クラスのオブジェクトを生成
- RequestAccess メソッドで GPS に対するアクセスを確認
- GetCurrentPosition メソッドで現在位置を NotesGPSPosition オブジェクトとして取得
- Coordinates プロパティから座標を管理する NotesGPSCoordinates オブジェクトを取得
- Latitude と Longitudeプロパティより座標を取得
デザイナーヘルプでは、Coordinates プロパティのように記載のない機能を使用していますが、これでコンパイルが通り、実行もできるので”よし”としましょう(12.0.2 で確認)。
なお、モバイルデバイスで Nomad に対して GPS のアクセスを禁止した場合や、GPS を持たない PC で実行した場合はエラーが発生します。そこで、エラーの場合は False を返すようにエラー処理を追加しています。
関数の組み込み
GPS から現在位置の座標を取得し、現在の文書にセットするエージェントを作成します。
Option Declare Use "lsGPS" Sub Initialize Dim ns As New NotesSession Dim nuiw As New NotesUIWorkspace Dim nuid As NotesUIDocument Dim nd As NotesDocument Dim dLat As Double Dim dLon As Double Set nuid = nuiw.Currentdocument Set nd = nuid.Document If GetGPSPos_Cur(dLat, dLon) Then nd.Latitude = dLat nd.Longitude = dLon Else MsgBox "GPS情報取得でエラーが発生しました。", 16 End If End Sub |
トリガーは「エージェントリストの選択」、対象は「なし」で設定しています。
続いて、テストフォームを作成します。
緯度と経度を表示するフィールドと作成したエージェントを実行するアクションボタン[GPS情報取得]を作成します。
0 件のコメント:
コメントを投稿