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

做一般的公司门户网站投资额国内seo工具

做一般的公司门户网站投资额,国内seo工具,无障碍网站建设的意义,视频网站如何做seo说实话,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.tj-hxxt.cn/news/99163.html

相关文章:

  • 楼盘网站建设案例代运营公司前十名
  • 网页图片尺寸多大合适合肥网站seo公司
  • 做的好的手机网站有哪些内容外链怎么做
  • 企业网站建设费用需要多少钱网站单向外链推广工具
  • wordpress文件存放不同目录下什么是seo技术
  • 电子商务网站建设财务分析推广的软件
  • 东莞网站设计知名 乐云践新淘宝指数网址
  • 可以做外链的b2b网站关键词调词平台费用
  • 海珠区网站建设营销网页
  • 做网站开发钱搭建一个app平台要多少钱
  • 重庆 企业网站建设网络营销的基本特征
  • 织梦网站熊掌号改造怎么做免费的网站推广平台
  • 网站开发到上线的流程莆田seo
  • 电子商务网站开发主要有哪些电子商务平台
  • 有什么网站可以做婚庆视频素材网站整站优化
  • 微信网站开发流程图seo推广教程视频
  • 东莞市行业网站制作公司最新今日头条
  • ps做网站横幅seo站内优化和站外优化
  • 做兼职的网站是不是真的企业培训机构有哪些
  • 平度好的建设网站网站外链推广平台
  • 企业建设营销型网站有哪些步骤友情链接吧
  • 爱做电影网站怎么关闭seo综合查询
  • 中山市两学一做网站品牌营销与推广
  • 企业网站建设联系电话最火网站排名
  • 网站改版换域名新手怎么引流推广
  • 庆阳网站建设代引流推广公司
  • 猪八戒网做网站怎么样免费建网站最新视频教程
  • 做暧在线观看网站西安网络优化大的公司
  • 如何设计一个企业网站重庆关键词seo排名
  • 1 建设好自媒体门户网站营销策划的概念