2012-02-11 68 views
1

是否可以查詢Android設備的年齡?我想知道,用戶擁有他的設備多長時間。電池的年齡可能是一個很好的指標,但我找不到合適的API。 Optimum將是第一次設備啓動的時間戳。有任何想法嗎?Android設備時代

+0

我不知道答案,但如果你有手機的型號,可以近似設備的使用年限。你想通過設備的年齡獲得什麼? – jcollum 2012-02-11 17:27:50

+0

我不認爲有任何API。 – kosa 2012-02-11 17:28:30

+0

這主要是爲了研究的目的。我也可以讓用戶向我提供信息,但我希望爲它提供一些客觀價值。 – phoku 2012-02-11 17:36:15

回答

0

有可能需要在這裏考慮的一些困難:

1)大多數Android設備有(容易),可拆卸電池。舉個例子,當我使用我的手機時,我有幾個電池可以交替使用。

2)即使啓動時收集了時間戳,如果手機的所有者擦除設備以安裝不同的ROM,它們也可能會被刪除。

我希望jcollum的解決方案試圖確定手機的型號,或者查看一些硬件,並確定模型的近似發佈日期可能是您最接近的解決方案。我懷疑你會發現確定實際設備使用年限的準確性。如果有,請糾正我 - 我現在也很好奇!

+0

我也考慮過這個模型,但問題是:有些模型在商店中可用超過幾個月。因此,這將是一個非常糟糕的估計。 – phoku 2012-02-11 17:43:19

0

這是一個有趣的問題。沒有API可以告訴設備何時首次購買 - 但您可以查找代理。

  • 閱讀短信收件箱 - 發送或接收郵件的最早日期是什麼。 (當然,他們可能已經刪除了舊信息)。
  • 同樣,閱讀通話記錄並查看他們第一次收到或撥打電話的時間。
  • 正常運行時間也可以被查詢 - 但我想大多數人會關閉設備,否則重新啓動它。
  • 查看圖庫,您可以查詢EXIF數據並查看最早拍攝照片的時間。
  • 通過訪問文件系統,您可以查看特定文件的創建時間。

這些都不是完美的,但它們可以用於在用戶第一次獲得設備時放置一些界限。

1

沒有可靠的方法來找出設備的年齡,但是不知何故我們可以計算出年齡。

Android設備打包了一些預安裝的應用程序(Sytem應用程序),當用戶擁有它時,他安裝了其他應用程序(用戶應用程序)。我們可以找出最早安裝的用戶應用的日期,並可以預測設備的使用時間。

*如果設備在使用後重置,將很難找到設備的使用時間。

// @返回最早安裝的應用程序的日期。

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年),所以我們必須用一些檢查條件:如果(firstInstallTime> sGINGER_RELEASE_DATE)