code: @Override
      public synchronized void onOpen() {
          super.onOpen();
  
          if (phoneStateListener == null) {
              Handler mainHandler = new Handler(context.getMainLooper());
              mainHandler.post(new Runnable() {
                  @Override
                  public void run() {
                      phoneStateListener = new PhoneStateListener() {
  
                          @Override
                          public void onCellInfoChanged(List<CellInfo> cellInfo) {
                              if (cellInfo != null && !cellInfo.isEmpty()) {
                                  onCellsChanged(cellInfo);
                              } else if (supportsCellInfoChanged) {
                                  supportsCellInfoChanged = false;
                                  onSignalStrengthsChanged(null);
                              }
                          }
  
                          @Override
                          public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                              if (!supportsCellInfoChanged) {
                                  fallbackScan();
                              }
                          }
                      };
                      registerPhoneStateListener();
                  }
              });
          } else {
              registerPhoneStateListener();
          }
      }
docs: Call this in {@link org.microg.nlp.api.LocationBackendService#onOpen()}.