2014-12-15 19 views
0

SMS를 보내야하는 Android 앱을 제작 중입니다. SMS를 보낼 때 신호 강도가 SMS를 보낼만큼 충분한 지 확인하고 싶습니다. 그렇지 않은 경우 앱은 신호 강도를 수신하고 신호가 충분 해지면 SMS를 보내는 수신기를 구축해야합니다.신호 강도가 SMS를 보낼만큼 충분한 지 확인하십시오.

나는 매우 낮은 신호만으로도 SMS를 보낼 수 있다고 믿기 때문에 신호가 있는지 확인해야한다고 생각합니다. 신호 강도가 무엇인지 확인하려면 시작시 android.telephony.SignalStrength getGsmSignalStrength()을 사용해야합니까? 반환 값이 0이면 리스너를 만들어야합니다. LISTEN_SIGNAL_STRENGTHS? 아니면 더 좋은 방법이 있습니까? 앞으로

답변

1

사용이에서

감사 :

int dBmlevel = 0; 
    int asulevel = 0; 
    List<CellInfo> cellInfoList = tm.getAllCellInfo(); 
      //Checking if list values are not null 
      if (cellInfoList != null) { 
       for (final CellInfo info : cellInfoList) { 
        if (info instanceof CellInfoGsm) { 
         //GSM Network 
         CellSignalStrengthGsm cellSignalStrength = ((CellInfoGsm)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoCdma) { 
         //CDMA Network 
         CellSignalStrengthCdma cellSignalStrength = ((CellInfoCdma)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoLte) { 
         //LTE Network 
         CellSignalStrengthLte cellSignalStrength = ((CellInfoLte)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else if (info instanceof CellInfoWcdma) { 
         //WCDMA Network 
         CellSignalStrengthWcdma cellSignalStrength = ((CellInfoWcdma)info).getCellSignalStrength(); 
         dBmlevel = cellSignalStrength.getDbm(); 
         asulevel = cellSignalStrength.getAsuLevel(); 
        } 
        else{ 
         //Developed as a Cordova plugin, that's why I'm using callbackContext 
         callbackContext.error("Unknown type of cell signal."); 
        } 
       } 
      } 

모든 네트워크 (LTE, GSM, CDMA 및 WCDMA) (dBm의와 애리조나 주립대에서) 신호 강도를 얻을 수 있습니다. 그리고 신호 레벨을 제한하기 위해 if()를 만듭니다. 예는 :

if (dBmlevel <= x){ print("You can't sent messages with this current signal");} 
+0

아, 그리고 삼성 기기에서 작동하지 않습니다. 삼성은 이것을 수행하는 "특별한 방법"을 가지고있다 (나는 이것도 발견하려고 노력하고있다). –

+0

답장을 보내 주셔서 감사합니다 ... sm을 보내려면 정확한 dBmlevel이 필요합니다. 내가 X – horin

+1

에 asign해야 정확히 어떤 값을 잘 모릅니다 때문에 나는이 하나 발견 -120 받아 들일 -100 가난하지만 사용할 수 -80은/허용 괜찮은 -60 -40은 기본적으로 우수한 –