ObjectAnimator:如何检测帧率?

时间:2014-05-25 21:16:48

标签: android objectanimator

我使用ObjectAnimator并在不同的设备上测试应用程序。在一些旧的慢速手机上它动画太糟糕了(没有GPU,没有内存等),所以我想自动将用户切换到应用的第二版(精简版)。

那么如何慢慢地检测出ObjectAnimator是什么?

  1. 是否有一些帧率报告?我一无所获。
  2. Choreographer是否有同样的倾听者?它列出了catlog中的错误,但我想在代码中获取它。

    01-22 05:55:15.775:INFO / Choreographer(3794):跳过33帧!应用程序可能在其主线程上做了太多工作。

  3. 注意:我知道如何通过系统命令解析catlog,但在我看来它不是一个聪明或快速的解决方案。

    注2:我不需要加快速度。我需要检测慢速手机。

1 个答案:

答案 0 :(得分:0)

好的,这个解决方案很好用

可以从ObjAnimator的循环中调用它(例如,监听器 - onRepeat)

您可以统计事件并对设备速度做出结论。

P.S。它不是聪明的,但直到没有人回答本机帧率报告......

boolean getCatLog(){
    boolean yes=false;
    try {
        Process process = Runtime.getRuntime().exec("logcat -d");
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String output;
        String lastLine = null;
        while ((output = reader.readLine()) != null) {
            lastLine = output;
        }
        if(lastLine!=null && lastLine.contains("Choreographer")){
            Log.d(TAG,"yes!");  //do not remove!
            yes=true;
        }
        reader.close();
        process.waitFor();
    } catch (IOException e) {
        throw new RuntimeException(e);
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
    return yes;
}