android获取某应用的帧数据

android获取某应用的帧数据:

说明:

(打开手机 开发者选项-GPU显示配置文件(显示于 adb shell dumpsys gfxinfo)勾上,只有4.1以上支持)

在android4.1中,谷歌提供了一个工具来,叫做“ GPU呈现模式分析(Profile GPU rendering)”,

在开启这个功能后,系统就会记录保留每个界面最后128帧图像绘制的相关时间信息

开始操作:

命令行 adb shell dumpsys gfxinfo com.taobao.mobile.dipei

结果中 Profile data in ms

分析下面数据

Draw:表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。 

Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长 

Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。

其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间。所以这个时间,一般都很短。

PS:View类包含Surface(变量名mSurface),每个Surface通常对应两个buffer,一个front buffer, 一个back buffer。

(4.1之后是3个,一个前,两个后)其中,back buffer就是canvas绘图时对应的bitmap (研究Android_view_Surface.cpp::lockCanvas)。

因此,绘画总是在back buffer上,需要更新时,则将back buffer和front buffer互换。   

Draw + Process + Execute = 完整显示一帧 ,

这个时间要小于16ms才能保存每秒60帧。

将数据复制到excel中(win记得逐列复制,mac下就直接复制过去吧),然后将数据生成“堆积柱形图”;

时间: 2024-10-07 06:30:18

android获取某应用的帧数据的相关文章

android获取应用程序缓存的数据

在我们日常的开发过程中,我们的app经常需要缓存一些数据,比如已经登陆的用户信息,比如是不是首次登陆,比如某个页面的引导有没有展示...等等这些.那么这些一般来说不外乎几种做法: 1.使用SharedPreference来进行缓存,缓存的位置在/data/data/xxx.xxx.xxx/shared_prefs中.xxx.xxx.xxx是你的包名. 2.使用sqlite来进行缓存,缓存的数据在/data/data/xxx.xxx.xxx/databases/xxx.db中. 3.文件缓存到sd

android获取高校教务系统的数据原理分析

获取原理 想要获取到高校教务系统的数据,原理只有一个: 获取到教务系统的登陆Cookie的信息. 下面我拿我大学的学校的教务系统来分析分析: 首先我们要准备一个抓包的工具,推荐:win下Fiddler ,Mac下Charles. 接下来我将使用Charles这款工具,Charcles的使用需要注意的是不要开其他代理服务.比如翻墙的代理. 登陆系统 下面进入我们学校的电费查询系统,网址为:http://jn.hhtc.edu.cn:8021/XSCK/: 进入系统,如图: 打开抓包工具,勾选Mac

Android -- 获取摄像头帧数据解码

由于Android下摄像头预览数据只能  ImageFormat.NV21 格式的,所以解码时要经过一翻周折. Camera mCamera = Camera.open(); Camera.Parameters p = mCamera.getParameters(); p.setPreviewFormat(ImageFormat.NV21); /*这是唯一值,也可以不设置.有些同学可能设置成 PixelFormat 下面的一个值,其实是不对的,具体的可以看官方文档*/ mCamera.setPa

Android 关于获取摄像头帧数据解码

// 创建保存照片文件夹 private void CreateFileJPG() { File file = new File("/sdcard/image"); if (!file.exists()) { try { file.mkdirs(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } } /** * 拍照保存图片 * */ public void saveMyBitmap

Android 播放视频并获取指定时间的帧画面

最近做的项目要求既能播放视频(类似于视频播放器),又能每隔1s左右获取一帧视频画面,然后对图片进行处理,调查了一周,也被折磨了一周,总算找到了大致符合要求的方法.首先对调查过程中涉及到的方法进行简单介绍,再重点介绍最终所采用的方法,话不多说,进入正题. 一.MediaMetadataRetriever 播放视频并取得画面的一帧,大家最先想到应该都是这个,我同样也最先对它进行了测试,这里使用MediaPlayer进行播放,视频播放界面使用SurfaceView来实现. public class P

Android -- 获取视频第一帧缩略图

干货 从API 8开始,新增了一个类: android.media.ThumbnailUtils这个类提供了3个静态方法一个用来获取视频第一帧得到的Bitmap,2个对图片进行缩略处理. public static Bitmap createVideoThumbnail (String filePath, int kind) 第一个参数是视频文件的路径,第二个参数是指定图片的大小,有两种选择Thumbnails.MINI_KIND与Thumbnails.MICRO_KIND. 第一种文档上说大小

Android用surface直接显示yuv数据

研究了一段时间Android的surface系统,一直执着地认为所有在surface或者屏幕上显示的画面,必须要转换成RGB才能显示,yuv数据也要通过颜色空间转换成RGB才能显示.可最近在研究stagefright视频显示时发现,根本找不到omx解码后的yuv是怎么转换成RGB的代码,yuv数据在render之后就找不到去向了,可画面确确实实的显示出来了,这从此颠覆了yuv必须要转换成RGB才能显示的真理了. 稍微看一下AsomePlayer的代码,不难发现,视频的每一帧是通过调用了Softw

Android渲染机制和丢帧分析

http://blog.csdn.net/bd_zengxinxin/article/details/52525781 自己编写App的时候,有时会感觉界面卡顿,尤其是自定义View的时候,大多数是因为布局的层次过多,存在不必要的绘制, 或者onDraw等方法中过于耗时.那么究竟需要多快,才能给用户一个流畅的体验呢?那么就需要简单了解下Android的渲染机制: Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,那么整个过程如果保证在16ms以内就能达到一个流畅的画面. 那么

Android获取安装应用所需权限

整理了一百多个常见权限,目前还在完善中,后面最终代码会发布到我的Github上.今天先看看初步效果: Main.java: package com.zms.getpermission; import android.app.ListActivity; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import a