1

SMSを送信するAndroidアプリを構築しています。SMS を送信するとき、信号強度が SMS を送信するのに十分かどうかを確認したい。そうでない場合、アプリは信号強度をリッスンし、信号が十分になるとすぐに SMS を送信するリスナーを構築する必要があります。

SMS を送信するには非常に低い信号だけで十分だと思うので、信号があるかどうかを確認するだけでよいと思います。android.telephony.SignalStrength getGsmSignalStrength()信号強度を確認するために最初に使用する必要があります。戻り値が 0 の場合、リスナーを作成する必要がありますLISTEN_SIGNAL_STRENGTHSか? または何か良い方法はありますか?

よろしくお願いします

4

1 に答える 1

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 および asu) を取得します。そして、信号レベルを制限するために if() を作成します。元。:

if (dBmlevel <= x){ print("You can't sent messages with this current signal");}
于 2015-01-08T15:28:34.320 に答える