android 通訊相關,MTK平台

2021-07-27 13:08:07 字數 3570 閱讀 1087

imsi共有15位,其結構如下:mcc+mnc+msin ,(mnc+msin=nmsi)

mcc:mobile country code,移動國家碼,mcc的資源由國際電聯(itu)統一分配和管理,唯一識別移動使用者所屬的國家,共3位,中國為460;  

mnc:mobile network code,流動網路碼,共2位,中國移動td系統使用00,中國聯通gsm系統使用01,中國移動gsm系統使用02,中國電信cdma系統使用03,乙個典型的imsi號碼為460030912121001

msin:mobile subscriber identification number共有10位,其結構如下:09+m0m1m2m3+abcd 其中的m0m1m2m3和mdn號碼中的h0h1h2h3可存在對應關係,abcd四位為自由分配。可以看出imsi在msin號碼前加了mcc即nmsi,可以區別出每個使用者的來自的國家,因此可以實現國際漫遊。在同乙個國家內,如果有多個流動網路運營商,可以通過mnc來進行區別。

imei是國際移動裝置身份碼的縮寫,國際移動裝備辨識碼,是由15位數字組成的」電子串號」,它與每台手機一一對應,而且該碼是全世界唯一的。

獲取mcc:

public

static

intgetmcc(context context) else

return int_alq_mcc;

}

獲取mnc:

public

static string getmnc(context context, int slotid)

//預設返回印度mcc

else

return

0 + "";

}

獲取imei

private

static string getdeviceimei(context context, int slotid)

是否飛行模式:

public

static

boolean

isairmodeon(context context)

雙卡 獲取那個卡是可用的

private

intgetsimid() else

log.i("ws->subinfo=" + subinfo + ";  simslotindex=" + subinfo.getsimslotindex() + ";  simstate=" + state);

if (state == telephonymanager.sim_state_ready)

}return -1;

}

監聽卡改變的狀態的廣播

"android.intent.action.sim_state_changed"

;

walklock 與keyguardlock

1: walklock 喚醒鎖

答案是肯定的。 可是有時候為什麼不點亮螢幕,這個就是引數設定的問題了。

複製** **如下:

powermanager.newwakelock(powermanager.full_wake_lock | powermanager.acquire_causes_wakeup, 「gank」);

powermanager.full_wake_lock 這個引數是手機點亮的程度,(什麼cpu,螢幕亮度,鍵盤燈)

powermanager.acquire_causes_wakeup 關鍵是這個引數的理解。

walklock點亮螢幕並非真的去點亮了螢幕,你可以理解為,它通過android元件(activity)去點亮了螢幕。

假如乙個通知想去點亮螢幕,問題來了,它能點亮嗎? 肯定不行。

不過擁有這個powermanager.acquire_causes_wakeu引數,你就可以點亮螢幕了。它使walklock不再依賴元件就可以點亮螢幕了。

powermanager.isscreenon()方法;這個方法返回true: 螢幕是喚醒的 返回false:螢幕是休眠的

walklock.aquire() 在螢幕休眠的狀態下喚醒螢幕

walklock.release() 在螢幕點亮的狀態下,使螢幕休眠。

walklock.release()這個方法有個需要注意的地方:

例如:walklocka物件先喚醒了螢幕再使螢幕休眠,ok沒問題

螢幕本身就是喚醒狀態,walklocka物件沒有喚醒過螢幕,walklocka物件如果嘗試使螢幕休眠。會產生乙個異常 unlock sreen。

2:keyguardlock 鍵盤鎖

keygroundmanager.inkeyguardrestrictedinputmode() 返回true表示鍵盤鎖住, 返回false表示鍵盤解鎖中

keyguardlock.disablekeyguard()解鎖鍵盤

keyguardlock.reenablekeyguard()鎖鍵盤

keyguardlock沒有上面喚醒鎖的問題,就是無論你鍵盤是否由keyguardlocka解鎖,你呼叫keyguardlocka物件的reenablekeyguard()方法都不會有異常。

這兩把鎖一些概念性的理解,假如你認為你獲得了乙個鍵盤鎖物件,你就可以鎖螢幕了。這個就大錯特錯了。

你鎖不了其他程式開啟的螢幕(如果可以的話,乙個for迴圈一直鎖你螢幕,你哭都沒眼淚)

你可以控制自己的鎖,別想著別人的鎖。

最後總結下用法:

一般這兩把鎖都是配合使用的,你解鎖螢幕的時候肯定不希望螢幕漆黑一片。關閉鍵盤鎖的時候希望螢幕也同時休眠。

問題:1:我嘗試手動關閉螢幕,可是總繼續亮那麼一小會。

2:如果手機自動關閉螢幕的話,不會有這個問題。

public void unlockscreen() 

// 獲得乙個keyguardmanager的例項

km = (keyguardmanager) mcontext

.getsystemservice(context.keyguard_service);

// 得到乙個鍵盤鎖keyguardlock

mkeyguardlock = km.newkeyguardlock("******timer");

if (km.inkeyguardrestrictedinputmode())

}

注意,這裡使用的mwakelock.isheld())來判斷螢幕當前是否是休眠狀態,從android 2.1 api level7開始增加了乙個判斷螢幕是否處於點亮狀態可以使用public boolean isscreenon ()這個方法。

鎖螢幕的**是

public

void

lockscreen()

// 使螢幕休眠

if (mwakelock.isheld())

}

android P 平板預設方向修改 MTK平台

現象 驅動除錯好基本功能後,由系統調整方向。目前機器預設為豎屏模式。但是開機logo 動畫,顯示介面都是倒置180度。1.首先修改預設的方向 kernel 4.4 arch arm configs defconfig kernel 4.4 arch arm configs debug defconf...

MTK檔案讀寫相關

相關檔案 檔案操作函式的標頭檔案為fs func.h 常用的檔案操作函式有 extern int fs open const wchar filename,uint flag extern int fs close fs handle filehandle extern int fs read fs...

MTK檔案讀寫相關

相關檔案 檔案操作函式的標頭檔案為fs func.h 常用的檔案操作函式有 extern int fs open const wchar filename,uint flag extern int fs close fs handle filehandle extern int fs read fs...