AndroidスマホのIPアドレス取得について

解決


ガオー  2020-12-03 02:30:53  No: 149444  IP: 192.*.*.*

いつもお世話になります。
FMXでマルチデバイスを開発(Android)をしています。
Wi-Fi接続はスマホのIPアドレスを静的アドレスにしているのですが
そのIPアドレスを取得する方法はあるのでしょうか。

Delphi Berlin Enterprise
Windows 10 PRO 64bit  

編集 削除
HFUKUSHI  2020-12-03 04:10:32  No: 149445  IP: 192.*.*.*

なんかそのものズバリな記事がありましたが

Delphi XE7のAndroidアプリケーションでWi-Fiの情報を取得する | 山本隆の開発日誌
https://www.gesource.jp/weblog/?p=6875

編集 削除
ガオー  2020-12-04 02:51:10  No: 149447  IP: 192.*.*.*

HFUKUSHI さん、度々のご案内ありがとうございます。
昨日から試しているのですが
ご案内頂きました「山本隆の開発日誌」の書かれています
>Java2OPでWifiManagerクラスとWifiInfoクラスのブリッジファイルを作成します。
>Java2OP.exe -classes android.net.wifi.WifiManager android.net.wifi.WifiInfo -unit Androidapi.JNI.Wifi
の部分がどのようにコーディングするのか どうしてもわかりません。
Java2OP.exeをインストールするのでしょうか。

編集 削除
HFUKUSHI  2020-12-04 03:47:55  No: 149448  IP: 192.*.*.*

前回のMACアドレスの取得がうまくいったなら、同様にWifiInfo.getIpAddressで取れませんか?

編集 削除
ガオー  2020-12-04 04:49:47  No: 149449  IP: 192.*.*.*

HFUKUSHIさん、ご対応ありがとうござます。
「山本隆の開発日誌」様のサイトに記載されていますuses節の
Androidapi.JNI.Wifi,
でエラーが発生します。

因みに、
プロジェクトオプションの「使用する権限」で「Wi-Fi 状態へのアクセス」は「true」にしてあります。

編集 削除
HFUKUSHI  2020-12-04 05:23:29  No: 149450  IP: 192.*.*.*

山本さんの記事の手順ではAndroidapi.JNI.Wifi(.pas)はJava2OPで事前に生成しておくユニットなので、
この場合はいらない(usesする必要はない)んじゃないですか?
(必要な定義は基本的にAndroidapi.JNI.Netにありそう)

編集 削除
ガオー  2020-12-04 08:32:51  No: 149451  IP: 192.*.*.*

HFUKUSHIさn、お返事ありがとうございます。
ネット検索して以下のようにブリッジファイルを生成しようと思ったのですが
Java2OP.exe -classes android.net.wifi.WifiManager android.net.wifi.WifiInfo -unit Androidapi.JNI.Wifi
上のコードでエラーが発生しちゃいました。

参考URL
https://mam-mam.net/mytech/show.php?cd=335

エラー内容
Warning: error opening ReservedWordsOP.txt
Warning: error opening ReservedWordsC.txt
Parsing xml: C:\Program Files (x86)\Embarcadero\Studio\18.0\bin\converters\java2op\bootclasses.xml


編集 削除
HFUKUSHI  2020-12-04 09:36:00  No: 149452  IP: 192.*.*.*

いやJava2OPでAndroidapi.JNI.Wifi.pasの生成、いらないですよね?という話では?

編集 削除
ガオー  2020-12-04 12:08:27  No: 149454  IP: 192.*.*.*

HFUKUSHIさん、何度もすみません。
出ました。
ただ、出てきたIPアドレスが1645521088と表示されます。
本当のIPアドレスは192.168.20.98

編集 削除
HFUKUSHI  2020-12-05 02:50:05  No: 149456  IP: 192.*.*.*

1645521088(10) = 6214A8C0(16)
C0(16)=192(10)
A8(16)=168(10)
14(16)=20(10)
62(16)=98(10)
こういうことですかね

編集 削除
ガオー  2020-12-05 03:28:21  No: 149457  IP: 192.*.*.*

HFUKUSHIさん、ご回答ありがとうございます。
そういうことでしたか。
奥が深いですね。
やればやるほど 難問に当たり
気が重いですが頑張ります。
今後ともよろしくお願いします。

編集 削除
HFUKUSHI  2020-12-05 05:38:01  No: 149458  IP: 192.*.*.*

ちなみに誤解のないように確認しておきますが、IPv4のアドレスは本来32bitの符号なし整数、
つまり1645521088(10) = 6214A8C0(16)が本来の表現方法(ただし←これはエンディアンが逆)で、
ドットつきの表記はあくまで人が見てわかりやすくしているだけです。
IPアドレス - Wikipedia
https://ja.wikipedia.org/wiki/IP%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9

編集 削除
ガオー  2020-12-05 08:18:34  No: 149459  IP: 192.*.*.*

HFUKUSHIさん、ご丁寧な
解説ありがとうございます。
とっても勉強になりました。
今後ともよろしくお願いします。

編集 削除