此问题具体项目具体分析,这里是有两点原因,一,ui界面相比机器太大,滑动距离太长滑不到,二,下滑正好会碰到屏幕上的物理私印按键的home键,所以就退到桌面了也无法拒接
息屏来电的活动是:vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/incallui/InCallActivity.java
解决方法:
直接单纯改ui,把滑动拒接接听的模块整个往上移动到合适的地方就可以
vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/res/layout/swipe_up_down_method.xml
更改 android:layout_marginBottom属性,原本是20dp。直接改最下面的“下滑拒接”的提示文字就可以。因为整个布局是<FrameLayout下的<LinearLayout,android:orientation="vertical"下面各控件都是垂直一个个分布的
<TextView
android:id="@+id/incoming_swipe_to_reject_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="150dp"
android:layout_gravity="center_horizontal"
android:alpha="0"
android:focusable="false"
android:gravity="center_horizontal"
android:text="@string/call_incoming_swipe_to_reject"
android:textAppearance="@style/Dialer.Incall.TextAppearance.Hint"
tools:alpha="1"/>
</LinearLayout>
如果要改滑动逻辑的话在:
java/com/android/incallui/answer/impl/answermethod/FlingUpDownMethod.java
但里面的算法比较繁琐不介意在这里改。分析好原因,源码设计的就可以,如果改短滑动距离反而容易误触
原生设计滑动接听,按钮接听两种方式,改为双按钮的话只需要
vendor/mediatek/proprietary/packages/apps/Dialer/java/com/android/incallui/answer/impl/answermethod/AnswerMethodFactory.java
在
public static AnswerMethod createAnswerMethod(@NonNullActivity activity) {
/*/tyd.yantao
if (needTwoButton(activity)) {
//*/
if(true){
//*/
return new TwoButtonMethod();
} else {
return new FlingUpDownMethod();
}