How do I parse GPS Navigation Message on Android

Hi I am new to this field and need your help on this.
I want to get the GNSS Ephemeris Data in Android. I don’t want to download it from any website.
This is what I am doing currently:

I am logging the GNSS Navigation Message on Android using GnssNavigationMessage.java (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/location/java/android/location/GnssNavigationMessage.java).

In my logger I am getting the data using the command:
byte[] data = navigationMessage.getData();

Now the data I am getting looks like this:

Nav,103,769,1,2,1,8,16,-4,19,66,-112,-126,-42,25,20,-8 which follows a header

Nav,Svid,Type,Status,MessageId,Sub-messageId,Data(Bytes)

I want to get the following parameters for further calculation:

  1. PRN % SV PRN number
  2. Toc % Time of clock (seconds)
  3. af0 % SV clock bias (seconds)
  4. af1 % SV clock drift (sec/sec)
  5. af2 % SV clock drift rate (sec/sec2)
  6. IODE % Issue of data, ephemeris
  7. Crs % Sine harmonic correction to orbit radius (meters)
  8. Delta_n % Mean motion difference from computed value (radians/sec)
  9. M0 % Mean anomaly at reference time (radians)
  10. Cuc % Cosine harmonic correction to argument of lat (radians)
  11. e % Eccentricity (dimensionless)
  12. Cus % Sine harmonic correction to argument of latitude
    (radians)
  13. Asqrt % Square root of semi-major axis (meters^1/2)
  14. Toe % Reference time of ephemeris (seconds)
  15. Cic % Sine harmonic correction to angle of inclination
    (radians)
  16. OMEGA % Longitude of ascending node at weekly epoch (radians)
  17. Cis % Sine harmonic correction to angle of inclination
    (radians)
  18. i0 % Inclination angle at reference time (radians)
  19. Crc % Cosine harmonic correction to the orbit radius
    (meters)
  20. omega % Argument of perigee (radians)
  21. OMEGA_DOT% Rate of right ascension (radians/sec)
  22. IDOT % Rate of inclination angle (radians/sec)
  23. codeL2 % codes on L2 channel
  24. GPS_Week % GPS week (to go with Toe), (NOT Mod 1024)
  25. L2Pdata % L2 P data flag
  26. accuracy % SV user range accuracy (meters)
  27. health % Satellite health
  28. TGD % Group delay (seconds)
  29. IODC % Issue of Data, Clock
  30. ttx % Transmission time of message (seconds)
  31. Fit_interval %fit interval (hours), zero if not known

Please let me know if there is a way to parse the Navigation message which I am receiving to these parameters.
Also let me know if I am going in the wrong direction.
Any lead will be appreciated.
Thanks.