tech

【kotlin / osmdroid】タップ位置の緯度経度取得と緯度経度による地図検索

前回の記事でOsmdroidの機能を使い、自位置を地図に反映させました。 今回は緯度経度による地図の検索と画面のタップによる緯度経度の表示機能を追加したいと思います。 blog.misatowater.com 緯度経度の表示 Androdid端末の画面(地図)をタップしたときに…

【kotlin】Androidの複数のパーミッションを取得する

以前記載した地図アプリケーションの作成において、取得するパーミッションは''ACCESS_FINE_LOCATION"の一つだけでした。 地図ダウンロードで別のパーミッションが複数必要になった場合に、パーミッションをどう取得するか疑問に思ったところもあったので改…

【kotlin / osmdroid】GPS測位位置を地図上に表示する(ライブラリ使用)

前回の記事ではFusedLocationProviderClientを利用して、GPS測位位置を地図上に反映させました。しかしOsmdroidのサンプルをよく見ると、ライブラリの機能だけで現在位置を反映できるようです。 blog.misatowater.com Osmdroidのライブラリの活用 Osmdroidの…

【kotlin / osmdroid】GPS測位位置を地図の中心にする

前回の記事では国土地理院地図を表示しましたが、最初に表示される地図のセンター位置は固定(東京タワー)としていました。 blog.misatowater.com 今回は地図の中心をGPSで測位した位置にするよう改修を加えます。 FusedLocationProviderClientを利用した現…

【kotlin / osmdroid】Androidスマートフォンに国土地理院地図を表示する

各地の里山のような知名度のない山に登る際、登山地図は発売されておらず、またGoogle Mapでは徒歩道の情報がありません(いつか徒歩道も含まれるような気はします)。 徒歩道の把握のためには国土地理院地図が必携なので、電子地図の勉強も兼ねて国土地理院…

Android GNSS statusの取得 Kotlin

AndroidからGNSS衛星情報を取り出す もともとはRTCMの動作確認をするうえでGNSSアンテナとレシーバを自費で購入するわけにもいかず(そこまで興味はない)、android端末で代わりにならないかと考えたことが発端です。 rawデータを取得する前段階として、andr…

なんとか解決: Android StudioとAMD製CPU

AMD製CPUとAndroid Studioの問題 以前、AMD製CPUでAndroid Studioの標準エミュレータを起動するとクラッシュするという記事を書き、クラッシュを回避するためにはWindows Insider programで新しいwindowsのbuildを導入する必要があるというところで終わって…

Android StudioとAMD製CPU

Android Emulator Android Studioに付属している公式のエミュレータは仮想化にHAXM(Hardware Accelerated Execution Manager)を利用しており、HAXMはIntel製CPUしかサポートしていませんでした。 AMDユーザはAndroid Emulatorを利用できない状態でしたが、…

JavaFX TextFlowのオートスクロール

TextAreaとTextFlow JavaFXで複数行のテキストを出力する場合、TextAreaもしくはTextFlowを利用します。 TextAreaはなにもしなくともスクロールしてくれるので問題はありませんが、リッチテキストを利用できるTextFlowでは表示範囲より行数が多くなったとき…

Akka streamを利用したストリームクライアント

Akka stream misatowater.hatenablog.com 以前の記事でAkka Httpを利用したストリームクライアントを作成し、NTRIP特有のICYやSOURCETABLEというプロトコルに玉砕しました。 HTTPではないプロトコルに対応するため、Akka streamを利用してクライアントを作成…

Scala 正規表現のパターンマッチ match case式による直接処理

Scala パターンマッチ Scalaでは文字列をマッチングさせる場合、match式で処理を書くことができます。 "abcdef" match { case "abcdef" => println("match") case _ => println("not match") } 上記のような直接比較では問題ないのですが、正規表現を使う場…

Akka HTTPを利用したストリームクライアント

ストリームクライアント NtripプロトコルはHTTPライクなシーケンスの後、ストリームでRTCMが送信されます。 新たに学び始めたscalaで、本シーケンスをシミュレートするクライアントを作成していきたいと思います。 Akka streaming / HTTP scalaにはHTTPスタ…

バイト配列の一部bit列を数値に変換 : java

bit列で数値を抜き出す必要性 一部のプロトコルではデータがbyteやinteger単位ではなく、bit単位で設定されています。 特定bit列を数値に変換するには先頭bitから最終bitまでシフトしつつ足していくことで取得することができますが、バイト単位にキャストし…

RTCM3 メッセージタイプ

本題のGNSSデータ NtripのRequest/Response、RTCM3フォーマットの解析まできてようやくGNSSデータにたどり着きます。 RTCM3のデータ部分は最初の12bitsがメッセージタイプとなり、メッセージタイプの一覧は以下のページで参照できます。 SNIP Knowledge Base…

クライアントから見たRTCM3

RTCM3 メッセージ フォーマットがRTCM 3.xとなっているmountpointにRequestを送信すると、"ICY 200 OK"を受信したのちGNSSデータ(RTCMメッセージ)がストリーミングで送られてきます。 ストリーミングなので1パケットにひとつのRTCMメッセージが含まれてい…

Ntrip version 1.0 sourcetable フォーマット

SOURCETABLE ストリーミング(STR)フォーマット 英語でのフォーマット説明はネットで見つかりますが、日本語版で。 各パラメータの区切り文字は ’:’(半角)です。 # パラメータ 意味 フォーマット 例 1 <type> = STR データストリームSTR(Data Stream) / CAS(Ca</type>…

NMEA checksum

Checksum NEMAフォーマットは$で始まり、で終わります(のあとにchecksumをつける)。 checksumは、最初の文字と次の文字の排他的論理和(xor)を最後の文字まで続けることにより得ることができます。 /** * @param data 計算対象文字列 * @param startPos …

Ntrip version 1.0 Basic

Ntrip(Networked Transport of RTCM via Internet Protocol)とは NtripはRTCM(Radio Technical Commission for Maritime Services)で規定されているインターネット上でGNSSデータを送信するためのプロトコルです。 GNSS単独測位ではメートル級の誤差が生…

byte配列の16進数ダンプ:Java

プロトコル実装の際、送受信データをバイナリとアスキーの両方で確認したいことが多々あります。 標準出力で確認できるようテキスト(String)に変換するサンプルプログラムを作成しました。 public String hexDump(final byte[] data, int length) { if(dat…