@Override
    protected void engineNextBytes(byte[] bytes) {
      // b/29254355 - urandom isn't a real file, it never blocks
      StrictMode.ThreadPolicy old = StrictMode.allowThreadDiskWrites();
      try {
        if (!mSeeded) {
          // Mix in the device- and invocation-specific seed.
          engineSetSeed(generateSeed());
        }
        DataInputStream in;
        synchronized (sLock) {
          in = getUrandomInputStream();
        }
        synchronized (in) {
          in.readFully(bytes);
        }
      } catch (IOException e) {
        throw new SecurityException("Failed to read from " + URANDOM_FILE, e);
      } finally {
        StrictMode.setThreadPolicy(old);
      }
    }
Whether this engine instance has been seeded. This is needed because
each instance needs to seed itself if the client does not explicitly
seed it.
java/com/google/android/apps/authenticator/util/PrngFixes.java