Android设备时代

时间:2012-02-11 17:26:03

标签: android power-management

是否可以查询Android设备的年龄?我想知道用户拥有设备的时间。电池的使用年限可能是一个很好的指标,但我找不到合适的API。最佳将是第一个设备启动的时间戳。任何想法?

3 个答案:

答案 0 :(得分: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年),因此我们必须使用一些检查条件: if(firstInstallTime&gt; sGINGER_RELEASE_DATE)

答案 1 :(得分:0)

您可能需要考虑一些困难:

1)大多数Android设备都有(轻松)可拆卸电池。例如,我使用手机时可以使用多个电池。

2)即使在启动时收集了时间戳,如果手机的所有者擦除设备以安装不同的ROM,也可能会删除这些时间戳。

我希望jcollum尝试确定手机型号的解决方案,或者看一下其硬件并确定模型的大致发布日期可能是您最接近的解决方案。我怀疑你在确定实际设备的使用年限时会发现很多准确性。但是,如果有,请纠正我 - 我现在也很好奇!

答案 2 :(得分:0)

这是一个有趣的问题。没有API可以判断设备何时首次购买 - 但您可以查找代理。

  • 阅读短信收件箱 - 发送或接收邮件的最早日期是什么时候。 (当然,他们可能已经删除了他们的旧消息。)
  • 同样,请阅读通话记录,了解他们何时第一次接听或拨打电话。
  • 也可以查询正常运行时间 - 但我想大多数人都会关闭设备,或者重启它。
  • 在图库中查看,您可以查询EXIF数据并查看最早拍摄的照片。
  • 通过访问文件系统,您可以查看创建某些文件的时间。

这些都不是完美的,但是当用户第一次拿到设备时,它们可以用来设置一些限制。