当前位置: 首页 > news >正文

网站低保图用什么做优化关键词的正确方法

网站低保图用什么做,优化关键词的正确方法,长春做网站 长春万网,铭品装饰公司说实话,android的代码是越来越难以阅读。业务函数里面狗皮膏药似的补丁与日俱增。继上篇简要介绍音频焦点的文章,这篇文章的主要内容是分析audiofocus的实现。看了一下午的相关代码都没找到做audiofocus策略的核心逻辑。目前能看懂的大概包含下面两个逻辑…

说实话,android的代码是越来越难以阅读。业务函数里面狗皮膏药似的补丁与日俱增。继上篇简要介绍音频焦点的文章,这篇文章的主要内容是分析audiofocus的实现。看了一下午的相关代码都没找到做audiofocus策略的核心逻辑。目前能看懂的大概包含下面两个逻辑。欢迎评论区沟通。

audiofocus实现的核心代码是在project_dir/frameworks/base/services/core/java/com/android/server/audio/MediaFocusControl.java
project_dir/frameworks/base/services/core/java/com/android/server/audio/FocusRequester.java
project_dir在这里指代android源码的根目录。

1.MediaFocusControl会维护所有audiofocus申请信息的堆栈mFocusStack。
2.android当系统进入铃声或者通话状态,会静音住媒体播放器,代码片段如下,mRingOrCallActive变量会在应用申请焦点时进行判断刷新。

if (mRingOrCallActive) {mFocusEnforcer.mutePlayersForCall(USAGES_TO_MUTE_IN_RING_OR_CALL);} else {mFocusEnforcer.unmutePlayersForCall();}

3.audiofocus的监听器都是在AudioManager的队列里维护。代码如下:

    public void registerAudioFocusRequest(@NonNull AudioFocusRequest afr) {final Handler h = afr.getOnAudioFocusChangeListenerHandler();final FocusRequestInfo fri = new FocusRequestInfo(afr, (h == null) ? null :new ServiceEventHandlerDelegate(h).getHandler());final String key = getIdForAudioFocusListener(afr.getOnAudioFocusChangeListener());mAudioFocusIdListenerMap.put(key, fri);}

4.audiomanager进行焦点变化通知的核心类IAudioFocusDispatcher会调用listener。IAudioFocusDispatcher
自身会被注册给audioservice。

                status = service.requestAudioFocus(afr.getAudioAttributes(),afr.getFocusGain(), mICallBack,mAudioFocusDispatcher,clientId,getContext().getOpPackageName() /* package name */, afr.getFlags(),ap != null ? ap.cb() : null,sdk);

阅读代码期间出现重大错误,阅读函数handleFocusLossFromGain的时候,认为gain是增益的含义,没仔细阅读实现。导致增加阅读理解代码的时间周期。gain在这里应该是对应焦点的第一种类型,永久性焦点。犯了惯性思维的错误。遇到这种与认知相悖的地方应该更加小心。gain在这块代码里面的含义是获得,与之对应的是loss。

androidaudio进行audiofocus控制决策的核心代码是下面这一段

            if (mMultiAudioFocusEnabled&& (focusChangeHint == AudioManager.AUDIOFOCUS_GAIN)) {if (enteringRingOrCall) {if (!mMultiAudioFocusList.isEmpty()) {for (FocusRequester multifr : mMultiAudioFocusList) {multifr.handleFocusLossFromGain(focusChangeHint, nfr, forceDuck);}}} else {boolean needAdd = true;if (!mMultiAudioFocusList.isEmpty()) {for (FocusRequester multifr : mMultiAudioFocusList) {if (multifr.getClientUid() == Binder.getCallingUid()) {needAdd = false;break;}}}if (needAdd) {mMultiAudioFocusList.add(nfr);}nfr.handleFocusGainFromRequest(AudioManager.AUDIOFOCUS_REQUEST_GRANTED);notifyExtPolicyFocusGrant_syncAf(nfr.toAudioFocusInfo(),AudioManager.AUDIOFOCUS_REQUEST_GRANTED);return AudioManager.AUDIOFOCUS_REQUEST_GRANTED;}}

思考android Audio focus的设计时,我想到一个问题,如果某APP,先申请media类型的focus,然后再去申请call类型的focus会怎么样?

http://www.rdtb.cn/news/12710.html

相关文章:

  • 中国做的比较好的网站天津seo推广优化
  • 网站开发手机版seo培训机构哪家好
  • 3合1网站建设公司网站运营与维护
  • wordpress登录密码忘网站推广seo设置
  • 建立个网站需要多少钱百度新闻搜索
  • 域名注册最好的网站百度搜索关键词数据
  • 现在还有网站做校内网吗外链生成器
  • 做淘宝差不多的网站百度公司推广
  • 网站建设模版 优帮云微信公众号怎么做文章推广
  • 南宁网站建设seo云搜索app官网
  • 深圳网络做网站自媒体发布平台
  • 湖州网站建站最新新闻事件
  • DS716 II 做网站营销型企业网站诊断
  • 找公司做网站多少钱正规专业短期培训学校
  • 巩义市网站建设培训班网络推广外包搜索手机蛙软件
  • 丹东网站建设平台优化设计数学
  • 水利建设管理司网站seo教程自学入门教材
  • 画册模板福州seo按天付费
  • 2022装修简约风格效果图广州aso优化
  • 叫别人做网站后怎么更改密码营销咨询师
  • 可以做电算化的网站做推广怎么做
  • 潍坊做网站维护费用营销目标分为三个方面
  • 怎么做网页模板展示网站友情链接交换标准
  • 域名如何指向网站友情链接平台网站
  • 国外平面设计网站大全青岛运营网络推广业务
  • 做威客网的正规网站有哪些百度关键词搜索
  • 网站建设只有20%的利润上海百度seo点击软件
  • wordpress电脑手机端同时seo技术博客
  • 新手如何做自己的网站排名优化哪家专业
  • 订餐网站开发方案百度竞价点击一次多少钱