android 高通-判断修改-记录

来源:互联网 发布:阿里云 lnmp 无法访问 编辑:程序博客网 时间:2024/05/29 07:51

提高APK进程权限:

这样可以将该进程设置为常驻内存进程,就可以降低被Kill的概率。
以Acore进程为例,
在 /package/providers/ContactsProvider/AndroidMannifest.xml 文件中增加一行『android:persistent="true"』
具体修改示例如下:
<application android:process="android.process.acore"
android:label="@string/app_label"
android:icon="@drawable/app_icon"
android:allowBackup="false"
android:persistent="true" <!--新增加代码,保证acore进程不被ActivityManager杀死-->
>


长按关机键修改:

 LA.UM.5.6/LINUX/android/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

case MSG_POWER_LONG_PRESS:case MSG_POWER_LONG_PRESS:783 784//powerLongPress();powerLongPress();784 785if(SystemProperties.get("persist.sys.power.nolongpress").equals("1")){   786Slog.w("xiexijun","persist.sys.power.nolongpress");   787}else{   788powerLongPress();   789}   790break;

永不灭屏

方式1:

+import android.os.PowerManager;
+import android.os.SystemProperties;

+       public static PowerManager.WakeLock wakeLock;
+       public static PowerManager pm;

+        pm=(PowerManager)getSystemService(POWER_SERVICE);
+        wakeLock=pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIR
+        wakeLock.acquire();

退出是记得释放:

+               if(wakeLock!=null){
+                       wakeLock.release();
+               }

方式2:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,   
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


APK全屏:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);


长按关机键弹出:Dialog

frameworks/base/services/core/java/com/android/server/policy/GlobalActions.java

vendor/qcom/proprietary/qrdplus/China/ChinaMobile/res/Frameworks/res/values/config.xml

vendor/qcom/proprietary/qrdplus/Extension/res/frameworks/base/core/res/res/values/config.xml

GlobalActions.java

private GlobalActionsDialog createDialog() 

布局文件搜索:config_globalActionsList


飞行模式:

    private void onAirplaneModeChanged() {
        // Let the service state callbacks handle the state.
        if (mHasTelephony) return;


        boolean airplaneModeOn = Settings.Global.getInt(
                mContext.getContentResolver(),
                Settings.Global.AIRPLANE_MODE_ON,
                0) == 1;
        mAirplaneState = airplaneModeOn ? ToggleAction.State.On : ToggleAction.State.Off;
        mAirplaneModeOn.updateState(mAirplaneState);
    }


编出来的包切除了odex的,怎么让它不生成,直接打包到apk中

LOCAL_DEX_PREOPT := false

在Android.mk加上这个


短消息类(class)的概念:
  根据指定存储的位置,短消息分为class0-3四个类,也可以不指定类别(no class),由移动设备按默认设置进行处理,存储到内存或者SIM卡中。在TPDU的TP-DCS字节中,当bit7-bit4为00x1、1111 时,bit1-bit0指示消息所属类。

00——class 0,可直接显示。

01——class 1,默认储存在ME内存中。

02——class 2,储存在SIM卡中。

03——class 3,可直接传输到终端设备TE。

默认的短消息存在SIM卡中,无类别的短消息通常也存在SIM卡中。

手机当前是否有电话和在通话界面判断:

isShowingInCallUi()

手机当前是否有活动的电话(有电话)判断:

CallList.getInstance().hasLiveCall()

手机设置值存储手机位置:

data/system/users/0

系统时间变量:

SystemClock.elapsedRealtime()

通话持续时间:

    public long getConnectTimeMillis() {
        return mTelecommCall.getDetails().getConnectTimeMillis();
    }

通话时间显示函数位置:

CallCardFragment.java:

变量:mElapsedTime

        函数:void setPrimaryCallElapsedTime(boolean show, long duration);

高通SIM 卡状态修改文件:MSimNetworkControllerImpl.java

手机支持几个SIM卡:

TelephonyManager telephonyManager = (TelephonyManager)mApplication.getSystemService(
                Context.TELEPHONY_SERVICE);

for (int i = 0; i < TelephonyManager.getDefault().getPhoneCount(); i++)

判断SIN卡有没有插入:

   * SIM的状态信息:
   *  SIM_STATE_UNKNOWN             未知状态 0
   *  SIM_STATE_ABSENT                 没插卡 1
   *  SIM_STATE_PIN_REQUIRED     锁定状态,需要用户的PIN码解锁 2
   *  SIM_STATE_PUK_REQUIRED    锁定状态,需要用户的PUK码解锁 3
   *  SIM_STATE_NETWORK_LOCKED   锁定状态,需要网络的PIN码解锁 4
   *  SIM_STATE_READY            就绪状态 5

if(TelephonyManager.getDefault().getSimState(0)==TelephonyManager.SIM_STATE_ABSENT)--没有插入SIM卡1

public int csh_sim(){
System.out.println("csh Presence or absence of a SIM card:");
if((TelephonyManager.getDefault().getSimState(0)!=TelephonyManager.SIM_STATE_ABSENT)&&(
(TelephonyManager.getDefault().getSimState(1)==TelephonyManager.SIM_STATE_ABSENT))){
System.out.println("csh Only SIM1 = Yes = 1");
return 1;
}
else if((TelephonyManager.getDefault().getSimState(0)==TelephonyManager.SIM_STATE_ABSENT)&&(
(TelephonyManager.getDefault().getSimState(1)!=TelephonyManager.SIM_STATE_ABSENT))){
System.out.println("csh Only SIM2 = Yes = 2");
return 2;
}
else if((TelephonyManager.getDefault().getSimState(0)!=TelephonyManager.SIM_STATE_ABSENT)&&(
(TelephonyManager.getDefault().getSimState(1)!=TelephonyManager.SIM_STATE_ABSENT))){
System.out.println("csh SIM1 and SIM2 = Yes = 3");
return 3;
}
else if((TelephonyManager.getDefault().getSimState(0)==TelephonyManager.SIM_STATE_ABSENT)&&(
(TelephonyManager.getDefault().getSimState(1)==TelephonyManager.SIM_STATE_ABSENT))){
System.out.println("csh SIM1 and SIM2 = NO = 4");
return 4;
}
return 0;
}

卡有没有插入:android高通判断方式:

            @Override
            public void onCallForwardingIndicatorChanged(boolean cfi) {
                Phone phone = PhoneUtils.getPhoneFromSubId(mSubId);
System.out.println("csh-CallNotifier.java-getPhoneStateListener() mSubId = " + mSubId +"-> cfi = " + cfi + " phone = " + phone);
                //onCfiChanged(cfi, phone);
UiccController uiccController = UiccController.getInstance();
UiccCard uicc = uiccController.getUiccCard(phone.getPhoneId());
SubscriptionController sub = SubscriptionController.getInstance();
if (((uicc != null ) && uicc.getCardState().isCardPresent())
&& sub.getSubState(mSubId) == SubscriptionManager.ACTIVE) {
onCfiChanged(cfi, phone)
;
} else {
Log.d(LOG_TAG,"SIM deactivated or removed");
}
}

去除状态栏图标:

mNotificationManager.cancel(null /* tag */, getNotificationId(CALL_FORWARD_NOTIFICATION, 0));---去除卡1呼叫转移图标
NotificationMgr.java (packages\services\telephony\src\com\android\phone):        int notificationId = getNotificationId(CALL_FORWARD_NOTIFICATION, phoneId);

updateNetworkSelection;updateCfi;


LA.UM.5.6/LINUX/android/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
case MSG_POWER_LONG_PRESS:case MSG_POWER_LONG_PRESS:783 784//powerLongPress();powerLongPress();784 785if(SystemProperties.get("persist.sys.power.nolongpress").equals("1")){   786Slog.w("xiexijun","persist.sys.power.nolongpress");   787}else{   788powerLongPress();   789}   790break;
0 0