Я пытался использовать некоторые ответы здесь, чтобы создать плагин Cordova для качества сигнала (он может быть в дБм или на уровне 0-4), но ничего не получилось.
Те, что с PhoneStateListener, тоже не работали, так как в Cordova вам нужно создать класс такого типа:
public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { if (action.equals("signal")){
Любая помощь будет очень признательна.
Заранее спасибо.
EDIT: я прочитал страницу разработчиков Android, связанную с этим: http://developer.android.com/reference/android/telephony/PhoneStateListener.html http://developer.android.com/reference/android/telephony/SignalStrength.html
Но мне ничего не приходило. Я очень расстраиваюсь из-за этого плагина, так как он последний, как только он будет завершен, проект тоже будет завершен.
Спасибо, MYS77
ИЗМЕНИТЬ 2
Я уже использовал эти коды:
1:
CellInfo allCellInfo = (CellInfo) tm.getAllCellInfo().get(0); CellSignalStrength cellSignalStrength = ((CellInfoGsm) allCellInfo).getCellSignalStrength(); level = cellSignalStrength.getLevel();
2:
List<NeighboringCellInfo> neighbors = tm.getNeighboringCellInfo(); for (NeighboringCellInfo n : neighbors) { if (n.getRssi() != NeighboringCellInfo.UNKNOWN_RSSI) { dbm = n.getRssi(); }
3:
TelephonyManager tm = (TelephonyManager)cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE); MyPhoneStateListener MyListener; @Override public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException { boolean result = false; String level = ""; if (action.equals("signal")){ try{ tm.listen(MyListener, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS); callbackContext.success("Hey!"); level = MyListener.getStrength(); } catch (Exception ex) { callbackContext.error("ERROR"); } finally{ if (level != "") { callbackContext.success("Signal Strength = "+level); } else{ callbackContext.success("Could not retrieve signal quality."); } } } return result; } } class MyPhoneStateListener extends PhoneStateListener{ String gsmStrength = ""; @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { super.onSignalStrengthsChanged(signalStrength); gsmStrength = String.valueOf(signalStrength.getGsmSignalStrength()* 2 - 113); } public String getStrength() { return gsmStrength; }
Они не выдают никаких ошибок, но когда я тестирую свой Xperia M2 Aqua, он продолжает отправлять «Недопустимое действие» в качестве ответа.