调用RIL方法



我能够在android中暴露隐藏的RIL函数。我可以像下面这样实例化RIL类。

RIL objRil = new RIL(getApplicationContext()); //successful
RadioState c = objRil.getRadioState() //is giving radio not available. 

有许多函数接受Message对象。例如

Message response= Message.obtain();
objRil.getOperator(response);

,但我得到一个错误,说消息目标不能为空。我不确定如何传递参数。

下面是我想要调用的android源码中的样例函数。

// C:UsersSKAppDataLocalAndroidandroid-sdksourcesandroid-22comandroidinternaltelephonyRIL.java

public void  getOperator(Message result) {
    RILRequest rr = RILRequest.obtain(RIL_REQUEST_OPERATOR, result);
    if (RILJ_LOGD) 
         riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
    send(rr);
}

我猜这个消息对象就像一个输出参数。调用这个函数的正确方法是什么?

您正在获得RADIO_NOT_AVAILABLE响应,因为您的RIL对象没有"连接"到任何RILD进程(RIL戴蒙)

OPERATOR是RIL发送给基带处理器(MODEM)的GET消息,用于检测设备注册了哪个操作符。

响应应该是这样的:

RILJ: [1234]> OPERATOR
//PLMN Number, PLMN Long Name, PLMN Short Name
RILJ: [1234]< OPERATOR {31000, Verizon Wireless, Verizon}

但是,由于您的RIL实例没有连接到任何RILD进程,因此您将始终获得RADIO_NOT_AVAILABLE响应。我的意思是,你正在发送一个GET消息,但是没有无线电来回答你的GET消息。

有一个RILD进程正在运行,它可能连接到系统创建的RIL.java对象。您可以通过以下命令查看RIL日志:

adb logcat -b radio

双sim卡模型有时有两个RILD进程(每个sim卡一个)和两个RIL.java实例(每个sim卡一个)。

我不确定创建一个RIL java实例并将其连接到RILD进程是否那么容易。

不知道怎么才能做到。

相关内容

  • 没有找到相关文章

最新更新