MTK如何在java层直接下发at cmd
GeminiPhone.java/PhoneBase.java中提供了一个API: invokeOemRilRequestStrings(),通过该API可以将具体的at cmd命令下发并将命令执行结果返回给上层。
Demo code如下:
查询IMEI号
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.gemini.GeminiPhone;
Phone phone;
phone = PhoneFactory.getDefaultPhone();
String ImeiString[]=new String[2];
ImeiString[0] = {"AT+EGMR=0,7"};
ImeiString[1] = {"+EGMR"}; //第二个string必须有,且名字是此AT名字,主要给rild用,不会下给modem;否则不会通过此channel返回上来response
((GeminiPhone) phone).invokeOemRilRequestStrings(ImeiString,mHandler.obtainMessage(EVENT_GET_IMEI_DONE_1));
public void handleMessage(Message msg) {
switch (msg.what)
{
case EVENT_GET_IMEI_DONE_1:
ar = (AsyncResult)msg.obj;
Log.d (LOG_TAG, "mHandler.handleMessage() : EVENT_GET_IMEI_DONE_1");
if (ar.exception == null) {//成功
Log.d(LOG_TAG, "ar.exception == null");
String[] newIMEI=(String[])(ar.result);
StringBuilder sb=new StringBuilder();
for(int i=0;i<newIMEI.length;i++)
sb.append(newIMEI[i]);
Log.d("jby","newIMEI is : " +sb);
}
else
Log.d(LOG_TAG, "ar.exception != null");//失败
break;
}
}