質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NFC

無線通信

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4531閲覧

Android端末のIMEIを読み取りたい

Majespy

総合スコア22

NFC

無線通信

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/28 02:31

前提・実現したいこと

Android端末側(Kotlin)
①Androidアプリを起動
②IMEIを取得
③IMEIを発信

PC側(Python2.7)
④カードリーダ(PaSoRi)で読取
⑤IMEIをprint出力

発生している問題

Android端末を使用せず学生証やAimeといったICカード(TypeA)のIDmの読み取り、出力はできましたが、Android端末から発信されたIMEIを読み取る方法がわかりません。

補足情報(FW/ツールのバージョンなど)

Androidアプリ(Kotlin)
PC(Python2.7)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

私の方でご質問の意図を取り違えているのかもしれませんが、用語がごっちゃになっているように思います。

IMEIは携帯電話であるAndroid端末自体についている番号なので、外部のICカードリーダーライターでは読み出せません。これをAndroidのプログラムで取得するには、APIのgetDeviceIdメソッドを使うことになると思います。
[getDeviceId]((https://developer.android.com/reference/android/telephony/TelephonyManager#getDeviceId())
ただし、This method was deprecated in API level 26.とあるようにAPIレベルによっては推奨されないAPIになっているので注意してください。

Android端末を使用せず学生証やAimeといったICカード(TypeA)のIDmの読み取り、出力はできましたが、Android端末から発信されたIMEIを読み取る方法がわかりません。

この場合、IMEIはNFCとは関係ありません。Type-A(Mifare Ultralight等)やFeliCaはパソリで読むことはできますが、これらは非接触型のICカードです。もし、IMEIではなく、SIMカードが持っているIMSIを読みたいというのであれば、PCで使う場合は接触型、それもSIMカードを差し込んで読めるタイプのICカードリーダーライターを使うことになります。

ですので、質問のタイトルどおりに「Android端末のIMEIを読み取りたい」と言うのであれば、Android端末上のプログラムで前述のAPIgetDeviceIdを使うことになるかと思います。PCでは読み出すことはできません。


コメントをいただいての追記です。[2018/11/28 15:07]

PaSoRiでは、Android端末によって発信された情報は読み取れないということでしょうか。

要望と端末の条件によってはできる場合もあります。

まず、理解の為の前提知識として、SONYのパソリ(PaSoRi)のような非接触型のICカードリーダーが何をしているかと言うと、リーダーライター側から電波を発し、電磁誘導で電力を起こしてICカード側のCPU/カードOSを起動し、その磁場の中でリーダーライターとICカードが各種のデータ送受信をしています。ですので、パソリの相手はあくまで非接触型のICカードです。

で、対パソリとしてAndroid端末を使う場合、Android端末自身をICカードとして振舞わせる「カードエミュレーション」機能で要求を満たせる場合があります。
Host-based card emulation overview
※「Android Card Emulation Mode」などと検索すると色々とヒットしますので見てみてください。

ですがそのAndroid端末がNFC対応であっても、Androidのバージョン、更にはMifareやFeliCa等、ICカードの種類にも影響することが多いです。また、Type-AのMifareで言うUIDや、FeliCaのIDmのようなカード固有のIDを自由に変えることはできないと思います。

ですので、最終的にやりたいことが

Androidアプリで学生証をスマートフォンに登録し、そこで得た学生証のIDmをスマートフォンから発信したい

だけなのであれば、Androidアプリで学生証のID(UIDかIDm?)やその他のデータを読み、別の方法、例えばWiFiやLTEを利用してソケット通信などでデータを送信する方が簡単だと思います。

投稿2018/11/28 03:19

編集2018/11/28 06:07
dodox86

総合スコア9183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Majespy

2018/11/28 05:08

ご回答ありがとうございます。 ご指摘の通り用語を理解出来ていませんでした。 Androidアプリで学生証をスマートフォンに登録し、そこで得た学生証のIDmをスマートフォンから発信しカードリーダーで受信したかったのですが難しそうであったため、代替案として今回の内容で開発しようとしました。 PaSoRiでは、Android端末によって発信された情報は読み取れないということでしょうか。
dodox86

2018/11/28 06:08

追記しましたのでご覧ください。
Majespy

2018/11/28 10:20

基本となる知識から丁寧に説明していただきありがとうございました。 とても勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問