Android12之MediaMetricsService服务(一百五十四)

news2024/11/15 6:55:57

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!

优质专栏:Audio工程师进阶系列原创干货持续更新中……】🚀

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.

更多原创,欢迎关注:Android系统攻城狮

欢迎关注Android系统攻城狮

1.前言

本篇目的:介绍一下一个媒体记录分析服务MediaMetricsService,它主要记录媒体服务相关的参数。
例如:audio、codec、extractor、audio.flinger、audio.thread线程等。

2.如何使用MediaMetricsService服务dump媒体信息

<1>.显示媒体信息top 100堆栈使用量排序

# dumpsys media.metrics --heap
Dump of the media.metrics process:
Metrics gathering: enabled
Since Boot: Submissions: 285 Accepted: 285
Records Discarded: 0 (by Count: 0 by Expiration: 0)
    0: {audio.flinger, (06-03 19:31:28.234), (audioserver, 0, 1041), (event#=ctor)}
    1: {audio.thread.13, (06-03 19:31:28.235), (audioserver, 1094, 1041), (event#=ctor, threadId=13, type=MIXER)}
    2: {audio.thread.13, (06-03 19:31:28.235), (audioserver, 0, 1041), (channelCount=2, channelMask=3, encoding=AUDIO_FORMAT_PCM_16_BIT, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_PRIMARY|AUDIO_OUTPUT_FLAG_FAST, frameCount=960, hal.encoding=AUDIO_FORMAT_PCM_16_BIT, hal.frameCount=240, hal.latencyMs=1.000000e+01, haptic.channelCount=0, haptic.channelMask=0, sampleRate=48000)}
    3: {audio.flinger, (06-03 19:31:28.235), (audioserver, 0, 1041), (event#=setVoiceVolume, voiceVolume=-0.000000e+00)}
    4: {audio.thread.13, (06-03 19:31:28.235), (audioserver, 0, 1041), (event#=createAudioPatch, inputDevices=, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
    5: {audio.thread.13, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=beginAudioIntervalGroup, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
    6: {audio.thread.21, (06-03 19:31:28.236), (audioserver, 1094, 1041), (event#=ctor, threadId=21, type=MIXER)}
    7: {audio.thread.21, (06-03 19:31:28.236), (audioserver, 0, 1041), (channelCount=2, channelMask=3, encoding=AUDIO_FORMAT_PCM_16_BIT, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_FAST|AUDIO_OUTPUT_FLAG_RAW, frameCount=960, hal.encoding=AUDIO_FORMAT_PCM_16_BIT, hal.frameCount=96, hal.latencyMs=5.000000e+00, haptic.channelCount=0, haptic.channelMask=0, sampleRate=48000)}
    8: {audio.thread.21, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=createAudioPatch, inputDevices=, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
    9: {audio.thread.21, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=beginAudioIntervalGroup, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
   10: {audio.thread.29, (06-03 19:31:28.236), (audioserver, 1094, 1041), (event#=ctor, threadId=29, type=MIXER)}
   11: {audio.thread.29, (06-03 19:31:28.236), (audioserver, 0, 1041), (channelCount=2, channelMask=3, encoding=AUDIO_FORMAT_PCM_24_BIT_PACKED, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_DEEP_BUFFER, frameCount=1920, hal.encoding=AUDIO_FORMAT_PCM_24_BIT_PACKED, hal.frameCount=1920, hal.latencyMs=8.000000e+01, haptic.channelCount=0, haptic.channelMask=0, sampleRate=48000)}
   12: {audio.thread.29, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=createAudioPatch, inputDevices=, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
   13: {audio.thread.29, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=beginAudioIntervalGroup, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
   14: {audio.thread.37, (06-03 19:31:28.236), (audioserver, 1094, 1041), (event#=ctor, threadId=37, type=OFFLOAD)}
   15: {audio.thread.37, (06-03 19:31:28.236), (audioserver, 0, 1041), (channelCount=1, channelMask=1, encoding=AUDIO_FORMAT_MP3, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING|AUDIO_OUTPUT_FLAG_GAPLESS_OFFLOAD, frameCount=262144, hal.encoding=AUDIO_FORMAT_MP3, hal.frameCount=262144, hal.latencyMs=9.600000e+01, haptic.channelCount=0, haptic.channelMask=0, sampleRate=8000)}
   16: {audio.thread.37, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=dtor)}
   17: {audio.thread.45, (06-03 19:31:28.236), (audioserver, 1094, 1041), (event#=ctor, threadId=45, type=MIXER)}
   18: {audio.thread.45, (06-03 19:31:28.236), (audioserver, 0, 1041), (channelCount=2, channelMask=3, encoding=AUDIO_FORMAT_PCM_16_BIT, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_NONE, frameCount=768, hal.encoding=AUDIO_FORMAT_PCM_16_BIT, hal.frameCount=256, hal.latencyMs=2.100000e+01, haptic.channelCount=0, haptic.channelMask=0, sampleRate=48000)}
   19: {audio.thread.45, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=createAudioPatch, inputDevices=, outputDevices=(AUDIO_DEVICE_OUT_TELEPHONY_TX, ))}
   20: {audio.thread.45, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=beginAudioIntervalGroup, outputDevices=(AUDIO_DEVICE_OUT_TELEPHONY_TX, ))}
   21: {audio.thread.53, (06-03 19:31:28.236), (audioserver, 1094, 1041), (event#=ctor, threadId=53, type=MMAP_PLAYBACK)}
   22: {audio.thread.53, (06-03 19:31:28.236), (audioserver, 0, 1041), (channelCount=0, channelMask=3, encoding=AUDIO_FORMAT_PCM_16_BIT, event#=readParameters, frameCount=48, hal.encoding=AUDIO_FORMAT_PCM_16_BIT, hal.frameCount=48, sampleRate=48000)}
   23: {audio.thread.53, (06-03 19:31:28.236), (audioserver, 0, 1041), (event#=dtor)}
   24: {audio.thread.61, (06-03 19:31:28.237), (audioserver, 1094, 1041), (event#=ctor, threadId=61, type=MIXER)}
   25: {audio.thread.61, (06-03 19:31:28.237), (audioserver, 0, 1041), (channelCount=2, channelMask=3, encoding=AUDIO_FORMAT_PCM_16_BIT, event#=readParameters, flags=AUDIO_OUTPUT_FLAG_VOIP_RX, frameCount=960, hal.encoding=AUDIO_FORMAT_PCM_16_BIT, hal.frameCount=960, hal.latencyMs=4.000000e+01, haptic.channelCount=0, haptic.channelMask=0, sampleRate=48000)}
   26: {audio.thread.61, (06-03 19:31:28.237), (audioserver, 0, 1041), (event#=createAudioPatch, inputDevices=, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
   27: {audio.thread.61, (06-03 19:31:28.237), (audioserver, 0, 1041), (event#=beginAudioIntervalGroup, outputDevices=(AUDIO_DEVICE_OUT_SPEAKER, ))}
   ........

<2>.清除已保存的记录

# dumpsys media.metrics --clear   

<3>.显示全部记录

# dumpsys media.metrics --all

<4>.media.metrics帮助

# dumpsys media.metrics --help                                                                                                                                                                                             
Recognized parameters:
--all         show all records
--clear       clear out saved records
--heap        show heap usage (top 100)
--help        display help
--prefix X    process records for component X
--since X     X < 0: records from -X seconds in the past
              X = 0: ignore
              X > 0: records from X seconds since Unix epoch
--unreachable show unreachable memory (leaks)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌云 | 你需要知道的关于软件开发中的人工智能

【本文由 Cloud Ace 整理&#xff0c;Cloud Ace 是谷歌云全球战略合作伙伴&#xff0c;拥有 300 多名工程师&#xff0c;也是谷歌最高级别合作伙伴&#xff0c;多次获得 Google Cloud 合作伙伴奖。作为谷歌托管服务商&#xff0c;我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌…

底层课程导学

目录 一、底层导学 1.课程回顾 2.嵌入式系统分层 3.Linux层次结构 二、ARM课该怎么学 1.课程内容 2.学习方法 三、计算机基础知识 1.计算机的进制 2.总线 四、ARM存储模型 1.三级存储结 五、CPU工作原理 1.CPU工作原理 2.指令的执行过程 3.地址空间 六、ARM体系结构 1.ARM处理器…

自动化测试实战项目(二)连连看外挂

自动化测试和做外挂的原理很相似&#xff0c;都是模拟用户的鼠标和键盘操作, 给自己的程序写自动化就是做测试&#xff0c;给别人的程序写自动化就是外挂了。 本文使用的技术也同样适用制作“对对碰”&#xff0c;"找茬" 之类游戏的外挂。 阅读目录 QQ连连看外挂实…

《面试1v1》垃圾回收机制

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 小伙子,跟我聊聊垃圾回收机制吧。什么是垃圾?怎么回收? 候选人&#xff1a; 好的面试官,来吧!垃圾就是那些不再被程序使用的对象。Java 通过…

Spring Boot定时任务

目录 1.概述 2.Spring Boot定时任务 2.1.快速使用 2.2.cron表达式 3.业务示例 3.1.业务描述 3.2.业务实现 4.实现原理 5.自定义线程池 1.概述 在某些业务场景中&#xff0c;需要定时执行一些任务&#xff0c;有可能是定时统计然后生成报表&#xff0c;有可能是定时发…

Python自定义函数

目录 1. 语法 2. 常见用法 2.1. 函数的返回值 2.2. 函数互相调用 3. 实战练习 3.1. 定义执行Linux命令的函数 1. 语法 #定义函数 def 函数名(参数1, 参数2):函数体(代码块)......#调用函数(定义函数时使用了参数&#xff0c;调用也必须使用参数) 函数名(参数1, 参数2) 定…

React学习6 路由

SPA的理解 单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09;。整个应用只有一个完整的页面。点击页面中的链接不会刷新页面&#xff0c;只会做页面的局部更新。数据都需要通过ajax请求获取, 并在前端异步展现。 什么是路由? 一个路由就是一个…

网络连接管理除了TCP三次握手,还有TCP四次挥手

网络连接管理除了TCP三次握手&#xff0c;还有TCP四次挥手 TCP三次握手&#xff0c;TCP四次挥手 网络连接管理除了TCP三次握手&#xff0c;还有TCP四次挥手TCP三次握手TCP四次挥手总结 TCP三次握手 网络通信建立连接&#xff0c;TCP会进行三次握手&#xff0c;三次握手主要是两…

【叠高高】叠蛋糕游戏的微信小程序开发流程详解

记得小时候玩过的搭积木游戏吗&#xff0c;和叠高高游戏原理差不多的&#xff0c;与之类似的还有盖高楼游戏&#xff0c;就是看谁盖的&#xff08;叠的&#xff09;最高&#xff0c;这里讲一下比较基础的叠高高游戏小程序实现过程&#xff0c;对编程感兴趣的同学可以参考学习一…

Linux Shell 实现一键部署Rust1.69

rust 前言 一门赋予每个人&#xff0c;构建可靠且高效软件能力的语言。 全世界已有数百家公司在生产环境中使用 Rust&#xff0c;以达到快速、跨平台、低资源占用的目的。很多著名且受欢迎的软件&#xff0c;例如 Firefox、 Dropbox 和 Cloudflare 都在使用 Rust。从初创公司…

网络安全工程师的入门学习路径,年薪30W不是梦!

最近看到网上有很多人在问诸如&#xff1a;“怎样成为网络信息安全工程师”等相关问题&#xff0c;这可能与近几年网络安全事件频发&#xff0c;国家对于互联网信息安全和互联网舆情的重视程度不断提升有关&#xff0c;网络信息安全工程师随之成为炙手可热的职业。 首先&#…

Web的基本漏洞--文件包含漏洞

目录 一、文件包含漏洞的介绍 1.文件包含漏洞的原理 2.常见的文件包含函数 3.文件包含漏洞的分类 本地文件包含漏洞 远程文件包含漏洞 3.文件包含漏洞的危害 4.文件包含漏洞的防范措施 5.文件包含漏洞的绕过手法 空字符绕过 超长字符绕过 一、文件包含漏洞的介绍 1…

5年经验之谈:月薪3000到30000,测试工程师的变“行”记

自我介绍下&#xff0c;我是一名转IT测试人&#xff0c;我的专业是化学&#xff0c;去化工厂实习才发现这专业的坑人之处&#xff0c;化学试剂害人不浅&#xff0c;有毒&#xff0c;易燃易爆&#xff0c;实验室经常用丙酮&#xff0c;甲醇&#xff0c;四氯化碳&#xff0c;接触…

你需要知道的 Selenium4 新特性

前言 最近又用到了Selneium&#xff0c;发现已经来到了 4.9 版本了。本篇文章来介绍下它较比 Selenium3 的一些新特性。 记录下&#xff0c;当是做笔记了。 最令人惊喜的是&#xff0c;Selenium4 会自动回收浏览器资源。 本文所使用的 Selenium 版本为 4.9.9 知识点&#x1f4…

开发一个收废品小程序步骤

随着环保意识的提升和可持续发展的迫切需求&#xff0c;废品回收成为了一个重要的议题。预约上门回收小程序的开发为用户提供了方便、快捷的废品回收服务&#xff0c;促进了废品资源的再利用和环保行动的推进。本文将介绍开发预约上门回收小程序的流程&#xff0c;以帮助开发人…

java12--本章作业

1. 第1题 public class Hello{public static void main(String[] args){Person[] persons new Person[3];persons[0] new Person("zsq", 18, "学生");persons[1] new Person("zzq", 19, "大学生");persons[2] new Person("zq…

【leetcode】1130. 叶值的最小代价生成树

1130. 叶值的最小代价生成树 1、问题描述2、解决方案2.1、动态规划2.1.1、问题分析2.1.2、代码实现 2.2、单调栈 1、问题描述 1130. 叶值的最小代价生成树 给你一个正整数数组 arr&#xff0c;考虑所有满足以下条件的二叉树&#xff1a; 每个节点都有 0 个或是 2 个子节点。数…

一文3000字实现基于Selenium+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

2.4 IDEA开发词频统计项目

一、词频统计准备工作 &#xff08;一&#xff09;启动集群的HDFS与Spark 启动HDFS服务 启动Spark集群 &#xff08;二&#xff09;在HDFS上准备单词文件 在master虚拟机上创建单词文件 - words.txt 将单词文件上传到HDFS指定目录/wordcount/input 二、本地模式运行Sp…

RCE漏洞演示,墨者靶场

#案列演示 打开墨者靶场&#xff0c;黑盒#命令注入执行分析 这个功能点有这么个功能&#xff0c;进行类似的像我们电脑上ping命令&#xff0c;这相当于就满足了命令&#xff0c;明显可能出现命令执行漏洞&#xff0c;可控变量和漏洞函数都存在。第一要去分析是什么操作系统&am…