2012-02-11 20 views
1

Android搭載端末の年齢を問い合わせることはできますか?ユーザーがデバイスをどれくらい所有しているかを知りたい。バッテリの寿命が良い指標かもしれませんが、適切なAPIが見つかりません。 Optimumは、最初のデバイスのブート時のタイムスタンプです。何か案は?Androidデバイスの年齢

+0

(firstInstallTime> sGINGER_RELEASE_DATE)であれば、しかしもしあなたは、デバイスの年齢に近づけることができる携帯電話のモデルを持っていました。あなたはデバイスの時代に何を得ようとしていますか? – jcollum

+0

私はそれのための任意のAPIがあるとは思わない。 – kosa

+0

これは主に研究目的のものです。また、ユーザーに情報を提供するように依頼することもできますが、むしろ客観的な価値があると思います。 – phoku

答えて

0

あなたがここに検討する必要があるかもしれないいくつかの困難があります。

1)ほとんどのAndroidデバイスは、(簡単に)取り外し可能なバッテリーを持っています。私は、1つのために、私は私の携帯電話を使用するときに私は交互にいくつかの電池を持っています。

2)起動時にタイムスタンプが収集されても、電話の所有者がデバイスを拭いて別のROMをインストールすると、タイムスタンプが削除される可能性があります。

私はjcollumの電話機のモデルを調べたり、そのハードウェアの一部を見て、モデルのおおよそのリリース日を決定しようとすると、最も近いソリューションかもしれません。私はあなたが実際のデバイスの年齢を決定する際に多くの正確さを見つけることは疑いの余地があります。しかし、もし私が修正してください - 私はこれも今興味がある!

+0

私はモデルについても考えましたが、問題は次のとおりです:数ヶ月以上店舗で利用可能ないくつかのモデルです。したがって、これは非常に悪い見積りになります。 – phoku

0

これは興味深い質問です。デバイスが最初に購入された時期を知らせるAPIはありませんが、プロキシを探すことはできます。

  • SMS受信トレイを読む - メッセージが送受信された最も早い日付です。 (もちろん、古いメッセージを削除した可能性もあります)。
  • 同様に、通話記録を読み、最初に電話を受けたか、電話をかけたかを確認します。
  • 稼働時間も問い合わせることができますが、ほとんどの人がデバイスをオフにしたり、再起動したりすると思います。
  • ギャラリーを見ると、EXIFデータを照会して、最も古い写真がいつ撮影されたかを確認できます。
  • ファイルシステムにアクセスすると、特定のファイルが作成されたときを見ることができます。

これらはどれも完璧ですが、ユーザーが最初にデバイスを入手したときにいくつかの境界を設定するために使用できます。

1

デバイスの年齢を確認するための確かな方法はありませんが、何とか私たちは年齢を把握することができます。

Android搭載デバイスにはいくつかのプリインストールされているアプリケーション(Sytemアプリケーション)がパッケージ化されています。ユーザーがそれを所有すると、他のアプリケーション(ユーザーアプリケーション)がインストールされます。最も早くインストールされたユーザーアプリの日付を知ることができ、デバイスの年齢を予測することができます。

*使用後にデバイスがリセットされた場合、デバイスの経過時間を見つけることは困難です。

// @returnインストールされているアプリの最初の日付。

private static String getOldestAppsAge(Context context) { 
    long appsAge = 0; 
    try { 
     appsAge = System.currentTimeMillis(); 
     PackageManager pkgManager = context.getPackageManager(); 
     List<ApplicationInfo> lsApp = pkgManager.getInstalledApplications(0); 
     for (ApplicationInfo localApplicationInfo : lsApp) { 
      String pkgName = localApplicationInfo.packageName; 
      if ((localApplicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { 
       PackageInfo info = pkgManager.getPackageInfo(pkgName, 0); 
       long firstInstallTime = info.firstInstallTime; 
       if (firstInstallTime < appsAge && firstInstallTime > sGINGER_RELEASE_DATE) { 
        appsAge = info.firstInstallTime; 
       } 
      } 
     } 
    } catch (PackageManager.NameNotFoundException ex) { 
     ex.printStackTrace(); 
    } 
    return DateUtils.convertIntoDesiredDateFormat(appsAge); 
} 
  • いくつかのAndroidデバイスは、エポック時間(1970)を返すので、我々はいくつかのチェック条件を使用する必要があります。私は答えを知らない