Android8.1 MTK平台 Dialer修改(来电全屏、归属地显示)

简介: Android8.1 MTK平台 Dialer修改(来电全屏、归属地显示)

来电默认全屏


默认情况下,来电android是以通知窗口的形式显示,只在屏幕的顶部显示,现在改为全屏显示


修改位置

alps\vendor\mediatek\proprietary\packages\apps\Dialer\java\com\android\incallui\InCallPresenter.java

private boolean startUi(InCallState inCallState) {
      boolean isCallWaiting = mCallList.getActiveOrBackgroundCall() != null &&
              mCallList.getIncomingCall() != null;
        Log.e(this, "isCallWaiting=="+isCallWaiting + "  inCallState="+inCallState);
        Log.i(this, "  isIncoming="+inCallState.isIncoming());
      // If the screen is off, we need to make sure it gets turned on for incoming calls.
      // This normally works just fine thanks to FLAG_TURN_SCREEN_ON but that only works
      // when the activity is first created. Therefore, to ensure the screen is turned on
      // for the call waiting case, we finish() the current activity and start a new one.
      // There should be no jank from this since the screen is already off and will remain so
      // until our new activity is up.
      if (isCallWaiting) {
          if (mProximitySensor.isScreenReallyOff() && isActivityStarted()) {
              Log.i(this, "Restarting InCallActivity to turn screen on for call waiting");
              mInCallActivity.finish();
              return false;
          } else {
              Log.i(this, "show InCallActivity for waiting call");
              showInCall(false, false);
          }
      } else {
           cczheng add show Full Screen in call UI replace incall notification  
          //mStatusBarNotifier.updateNotification(mCallList);
          mContext.startActivity(InCallActivity.getIntent(
                    mContext, false/*showDialpad*/, false/*newOutgoingCall*/, true /* forFullScreen */));
      }
      return true;
   }



将 updateNotification 方式替换为 start InCallActivity


联系人已保存来电时,增加归属地显示


android原来的归属地显示条件为,当来电号码未存储为联系人时,也就是来电页面显示为号码时,号码下方会显示出来电归属地


当号码已经保存为联系人,来电页面显示联系人名称时,不显示来电归属地。需求来了,联系人情况也要显示来电归属地。

来电归属地查询的流程后面会单独介绍,可先看这篇 号码归属地识别-Android电话应用


20190510184848156.png

效果图


修改位置


1、


alps\vendor\mediatek\proprietary\packages\apps\Dialer\java\com\android\incallui\CallerInfoAsyncQuery.java

  void updateData(int token, Object cookie, Cursor cursor) {
  .....
  if (true/*TextUtils.isEmpty(mCallerInfo.name)*/) {//cczheng change true
        // Actually when no contacts match the incoming phone number,
        // the CallerInfo object is totally blank here (i.e. no name
        // *or* phoneNumber).  So we need to pass in cw.number as
        // a fallback number.
        mCallerInfo.updateGeoDescription(mQueryContext, cw.number);
    }
  ......
}


号码和姓名的情况都去查询归属地

2、alps\vendor\mediatek\proprietary\packages\apps\Dialer\java\com\android\incallui\CallCardPresenter.java

private void updatePrimaryDisplayInfo() {
......
mInCallScreen.setPrimary(
      new PrimaryInfo(
          number,
          mPrimary.updateNameIfRestricted(name),
          nameIsNumber,
          shouldShowLocationAsLabel(nameIsNumber, mPrimaryContactInfo.shouldShowLocation)
              ? mPrimaryContactInfo.location
              : number + "\n" + mPrimaryContactInfo.location/*null*/,/*cczheng change null to locationlabel*/
          isChildNumberShown || isCallSubjectShown ? null : mPrimaryContactInfo.label,
          mPrimaryContactInfo.photo,
          mPrimaryContactInfo.photoType,
          mPrimaryContactInfo.isSipCall,
          showContactPhoto,
          hasWorkCallProperty || isWorkContact,
          mPrimary.isSpam(),
          mPrimary.answeringDisconnectsForegroundVideoCall(),
          shouldShowLocation(),
          mPrimaryContactInfo.lookupKey,
          multimediaData,
          mPrimary.getNumberPresentation()));
.....
}


将原来的null替换为 号码和归属地拼接,\n 换行显示


3、alps\vendor\mediatek\proprietary\packages\apps\Dialer\java\com\android\incallui\contactgrid\res\layout\incall_contactgrid_bottom_row.xml


将id为 contactgrid_forwardNumber 和 contactgrid_bottom_text 的 android:singleLine=“true” 改为 false,为了换行显示


修改这三个地方重新编译Dialer,push 查看效果ok

目录
相关文章
|
3月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
123 1
|
4月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
27天前
|
IDE 开发工具 Android开发
移动应用开发之旅:探索Android和iOS平台
在这篇文章中,我们将深入探讨移动应用开发的两个主要平台——Android和iOS。我们将了解它们的操作系统、开发环境和工具,并通过代码示例展示如何在这两个平台上创建一个简单的“Hello World”应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和技巧,帮助你更好地理解和掌握移动应用开发。
60 17
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
119 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
监控 Android开发 iOS开发
深入探索安卓与iOS的系统架构差异:理解两大移动平台的技术根基在移动技术日新月异的今天,安卓和iOS作为市场上最为流行的两个操作系统,各自拥有独特的技术特性和庞大的用户基础。本文将深入探讨这两个平台的系统架构差异,揭示它们如何支撑起各自的生态系统,并影响着全球数亿用户的使用体验。
本文通过对比分析安卓和iOS的系统架构,揭示了这两个平台在设计理念、安全性、用户体验和技术生态上的根本区别。不同于常规的技术综述,本文以深入浅出的方式,带领读者理解这些差异是如何影响应用开发、用户选择和市场趋势的。通过梳理历史脉络和未来展望,本文旨在为开发者、用户以及行业分析师提供有价值的见解,帮助大家更好地把握移动技术发展的脉络。
126 6
|
4月前
|
开发工具 Android开发 iOS开发
安卓与iOS开发环境对比:选择适合你的平台
【9月更文挑战第26天】在移动应用开发的广阔天地中,安卓和iOS是两大巨头。它们各自拥有独特的优势和挑战,影响着开发者的选择和决策。本文将深入探讨这两个平台的开发环境,帮助你理解它们的核心差异,并指导你根据个人或项目需求做出明智的选择。无论你是初学者还是资深开发者,了解这些平台的异同都至关重要。让我们一起探索,找到最适合你的那片开发天地。
|
4月前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
4月前
|
开发工具 Android开发 iOS开发
安卓与iOS开发:平台选择的艺术与科学
在移动应用开发的广阔天地中,安卓与iOS两大平台如同东西方哲学的碰撞,既有共通之处又各具特色。本文将深入探讨这两个平台的设计理念、开发工具和市场定位,旨在为开发者提供一份简明扼要的指南,帮助他们在这场技术与商业的博弈中找到自己的道路。通过比较分析,我们将揭示每个平台的优势与局限,以及它们如何影响应用的性能、用户体验和市场接受度。无论你是初涉江湖的新手,还是经验丰富的老手,这篇文章都将为你的选择提供新的视角和思考。
47 5
|
4月前
|
人工智能 Android开发 iOS开发
安卓与iOS开发:平台选择的艺术
在移动应用开发的广阔天地里,安卓和iOS两大操作系统各占半壁江山。本文将深入探讨这两个平台的开发环境、工具及市场趋势,帮助开发者在选择适合自己项目的平台时做出更明智的决策。通过比较各自的优势与局限,我们不仅能更好地理解每个系统的核心特性,还能洞察未来技术发展的脉络。无论你是刚入行的新手还是资深开发者,这篇文章都将为你提供有价值的参考和启示。
56 5
|
4月前
|
Linux Android开发 iOS开发
探索Android与iOS开发:平台之战还是互补共生?
在移动应用开发的浩瀚宇宙中,Android和iOS这两大星系始终吸引着无数开发者的目光。它们各自拥有独特的引力场,引领着技术潮流的方向。本文将穿梭于这两个平台的星际空间,揭示它们背后的力量对比,以及如何在这两者之间找到平衡点,共同推动移动应用开发的进步。
46 1