2015-09-13 2 views
0

Я могу открыть скрытые функции RIL в android. Я могу создать экземпляр класса RIL следующим образом.Android Invoke RIL методы

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

Существует много функций, которые принимают объект сообщения. например

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

, но я получаю сообщение об ошибке, указывающее, что цель сообщения не должна быть нулевой. Я не уверен, как передать параметр.

вот пример функции из источника андроида, который iam пытается вызвать.

// C:\Users\SK\AppData\Local\Android\android-sdk\sources\android-22\com\android\internal\telephony\RIL.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); 
} 

Я думаю, что этот объект сообщения действует как выходной параметр. Каков правильный способ вызова этой функции?

+0

см. 'Сообщение # получить (android.os.Handler)' – pskink

+0

Спасибо. Это работает. но я получил сообщение Radio not available. что это значит? эти функции работают на всех телефонах? мне нужно изменить любые настройки телефона или добавить что-то в манифест? – roopa

+0

Я понятия не имею, просто ответил на ваш вопрос относительно нулевой цели – pskink

ответ

0

Вы получаете RADIO_NOT_AVAILABLE ответ, потому что ваш объект RIL не «подключен» к любому процессу Рилда (RIL Deamon)

ОПЕРАТОРА этого сообщение GET, что RIL посылает Baseband процессора (модем), чтобы определить, какой из операторов устройство зарегистрировано.

Response должен быть что-то вроде:

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

Однако, так как ваш экземпляр RIL не подключен к любому процессу Рилда, вы всегда будете получать RADIO_NOT_AVAILABLE ответ. Я имел в виду, вы отправляете GET-сообщение, но RADIO не отвечает на ваше сообщение GET.

Выполняется процесс RILD, и, вероятно, он связан с объектом RIL.java, созданным системой. Вы можете проверить журналы RIL через:

adb logcat -b radio 

Две сим-модели иногда имеет два Рилд процесса (по одному для каждого сим-карты) и два экземпляра RIL.java (по одному для каждой сим-карты).

Я не уверен, что создать экземпляр Java RIL и подключить его к процессу RILD.

Не знаете, как вы можете это достичь.

Смежные вопросы