AndroidM及以上,接听电话之后5S 灭屏

本文介绍如何在AndroidM及更高版本中实现接听电话后5秒自动灭屏的功能。通过修改PhoneGlobals.java和CallNotifier.java两个文件,新增setScreenTimeout方法,并在电话状态改变时调整屏幕超时时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  笔记:好久没有更新博客了.期间换了份新的工作,多了一些烦心的事情,后续博客会坚持更新.....

  AndroidM及以上,接听电话之后5S 灭屏处理:
  涉及到两个文件:packages/services/Telephony  路径中的PhoneGlobals.java  和 CallNotifier.java

  1:PhoneGlobals.java 中添加两个方法

 

void setScreenTimeout(long time) {
        mHandler.removeCallbacks(timeOutTask);
        mHandler.postDelayed(timeOutTask, time);
    }
    Runnable timeOutTask = new Runnable(){
        public void run(){
            try{
                mPowerManagerService.goToSleep(SystemClock.uptimeMillis(), PowerManager.GO_TO_SLEEP_REASON_PROXIMITY,0);
            } catch(RemoteException e){

            }
        }
    };

   2:CallNotifier.java中

  先添加如下方法

private Call.State mLastCallState = Call.State.IDLE;
    private void setScreenTimeOut(){
        Call.State ringCallState = mCM.getFirstActiveRingingCall().getState();
        Call.State fgCallState = mCM.getActiveFgCallState();
        if((ringCallState == Call.State.IDLE && mLastCallState.isRinging())||
                (fgCallState == Call.State.ACTIVE && mLastCallState.isDialing())){
            PhoneGlobals.getInstance().setScreenTimeout(5000);
        }
        mLastCallState = ringCallState.isRinging()?ringCallState:fgCallState;
    }
然后在这个方法中直接调用即可.
private void onPhoneStateChanged(AsyncResult r) {
     ....
     setScreenTimeOut();
    ...
}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值