char nmea[81];
char buf[4096];
int nmeaIdx, bufIdx, bufLen;
nmeaIdx = 0;
...
while(1) {
bufLen = read(buf, 4096); // Читаем пакет в буфер, получаем количество считанных байт.
bufIdx = 0;
while (bufIdx < bufLen) {
nmea[nmeaIdx] = buf[bufIdx];
if (buf[bufIdx] == '\n') {
nmea[nmeaIdx] = 0;
if (nmea[0] == '$') {
// здесь обрабатываем строку nmea
}
nmeaIdx = 0;
} else
nmeaIdx++;
bufIdx++;
}
}
nmea = "$GPGSA,A,3,04,11,19,32,01,,,,,,,,8.16,6.83,4.47*0B";
String[] parts = nmea.split('[,*]');
String[] PRNs = new String[12];
for (int i = 0; i < 12 && parts[i+3] != ''; i++) {
PRNs[i] = parts[i+3];
Log.d(LOG_TAG, "Элемент "+Integer.toString(i)+": "+PRNs[i];
}