Android端末を識別するためのユニークIDを取得する方法

開発者によっては、Android端末を識別するためにユニークIDが必要になる場合があります。

例えば、

  • ゲームスコアをサーバー上に保存するために Android ユーザーを識別したい場合
  • アプリのインストール状況を把握する場合
  • コピー防止用DRMを生成したい場合などです。

いくつかのソリューションが存在しますが、どれも完璧ではありません。 このチュートリアルでは、5 つのソリューションを検証し、そのデメリットを紹介します:

1. 一意のテレフォニー番号 (IMEI、MEID、ESN、IMSI)

スマートフォンだけを対象とする場合、デバイスがテレフォニー サービスを備えているという事実を利用することができます。

  • IMEI (International Mobile Equipment Identity) : GSM、WCDMA、および一部の衛星電話を識別するための固有番号
  • MEID (Mobile Equipment IDentifier) : CDMA移動局装置の物理部分を識別するグローバルな固有番号、ESN (Electronic Serial Number) に代わるものとして作成された MEID
  • ESN (Electronic Serial Number) : CDMA 携帯電話を識別するための一意の番号
  • IMSI (International Mobile Subscriber Identity) : すべての GSM および UMTS ネットワーク携帯電話ユーザーに関連付けられた一意の識別

あなたのデバイスに関連付けられた固有の ID を取得するには、次のコードを使用できます:

This solution needs to request for android.さらに、タブレットには電話サービスがないため、このソリューションはスマートフォンに限定されます。 2.MAC アドレス

また、Wi-Fi または Bluetooth ハードウェアを持つデバイスから MAC アドレスを取得することもできます。 しかし、すべてのデバイスがWi-Fi接続されているわけではないので、この方法は推奨されません。 Wi-Fi接続がある場合でも、データを取得するためにWi-Fiをオンにする必要があります。

3 シリアル番号

タブレットなどの電話サービスのないデバイスは、Android 2.3 Gingerbread以降android.os.Build.SERIALを介して利用できる固有のデバイスIDを報告する必要があります。 電話サービスを持つ一部の電話機は、シリアル番号を定義することもできます。 すべての Android デバイスにシリアル番号があるわけではないので、このソリューションは信頼できません。

4.Secure Android ID

デバイスの初回起動時に、ランダムに値が生成されて保存されます。 この値は、設定.Secure.ANDROID_IDで利用可能です。 この値は64ビットの数値で、デバイスの寿命が尽きるまで一定である必要があります。 ANDROID_IDは、スマートフォンやタブレットで利用できるため、一意のデバイス識別子として適しているようです。 この値を取得するには、次のコードを使用します:

String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);

ただし、デバイスで工場出荷時リセットを実行すると、値が変更される場合があります。 また、某メーカーの人気端末では、すべてのインスタンスが同じANDROID_IDを持つというバグも知られています。

5.明らかに、この解決策は100%信頼できるものではありません。 UUIDを使用する

ほとんどのアプリケーションの要件は、物理デバイスではなく特定のインストールを識別することなので、UUIDクラスを使用すると、ユーザーの一意のIDを得るための良い解決策になります。 次のソリューションは、Google の Reto Meier が Google I/O のプレゼンテーションで発表したものです。

UUID.randomUUID() メソッドは、特定のインストールに対する一意の識別子を生成します。 その値を保存するだけで、アプリケーションの次の起動時にユーザーが識別されます。 また、このソリューションを Android Backup サービスと関連付けて、ユーザーが別のデバイスにアプリケーションをインストールした場合でも、情報を利用できるようにすることもできます。

結論

Android で特定のデバイスを識別することは簡単なことではありません。 それを避けるべき正当な理由がたくさんあります。 最良の解決策は、おそらく UUID ソリューションを使用して特定のインストールを識別することです。 しかし、物理的に特定のデバイスを確実に識別したい場合は、ANDROID_ID ソリューションを使用することができます。 100%信頼できるわけではありませんが、他のソリューションよりは優れています。

コメントを残す

メールアドレスが公開されることはありません。