2011年7月2日土曜日

Android detecting devices

デバイスを検出する方法が Google I/O 2011 の

"Android Protips: Advanced Topics for Expert Android App Developers"

で紹介されていたので、メモしておきます。

---

なぜデバイスを検出するのか?

  • デバイスが通話機能をサポートしていない場合、TelephonyManager.getDeviceId() は null を返す。
  • Bluetooth や WiFi が見つからない(もしくはオフの)場合、MAC アドレスは使えないことがある
  • デバイスがワイプされたときに変わらないので、新しいユーザーでも同じデバイス ID になってしまう。
  • Settings.Secure.ANDROID_ID はワイプ時にリセットされるが、Android 2.2 以前では信頼性がない。


UUID.randomUUID().toString()

を使う


private static String uniqueID = null;
private static final String PREF_UNIQUE_ID = "PREF_UNIQUE_ID";

public synchronized static String id(Context context) {
if (uniqueID == null) {
SharedPreferences sp = context.getSharedPreferences(PREF_UNIQUE_ID,
Context.MODE_PRIVATE);
uniqueID = sp.getString(PREF_UNIQUE_ID, null);

if(uniqueID == null) {
uniqueID = UUID.randomUUID().toString();
Editor editor = sp.edit();
editor.putString(PREF_UNIQUE_ID, uniqueID);
editor.commit();
}
}
return uniqueID;
}



 

0 件のコメント:

コメントを投稿