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

解決


ガオー  2020-12-03 11:30:53  No: 149444

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

Delphi Berlin Enterprise
Windows 10 PRO 64bit  


HFUKUSHI  2020-12-03 13:10:32  No: 149445

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

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


ガオー  2020-12-04 11:51:10  No: 149447

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 12:47:55  No: 149448

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


ガオー  2020-12-04 13:49:47  No: 149449

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

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


HFUKUSHI  2020-12-04 14:23:29  No: 149450

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


ガオー  2020-12-04 17:32:51  No: 149451

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 18:36:00  No: 149452

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


ガオー  2020-12-04 21:08:27  No: 149454

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


HFUKUSHI  2020-12-05 11:50:05  No: 149456

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


ガオー  2020-12-05 12:28:21  No: 149457

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


HFUKUSHI  2020-12-05 14:38:01  No: 149458

ちなみに誤解のないように確認しておきますが、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 17:18:34  No: 149459

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


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加