You read one byte, you convert one byte into a character. You will get one character for every byte in the original stream.
Do you know what the encoding is of the information you're reading? Where is it coming from?
It's a very bad plan to cast bytes to chars like this.
You could consider using an InputStreamReader, which is designed for reading streams of characters. However, this will cause problems if you also have non-character data in the same stream. An alternative is to use a ByteArrayOutputStream (rather than a StringBuffer) to accumulate the bytes, then convert the entire byte[] to a String.
Oh... don't use InputStream.available() like this. It's not for detected the end of a stream. The default implementation all InputStream subclasses inherit always returns zero. This code will break on some phones. InputStream.read() returns -1 at the end of a stream.
Better still... don't read one byte at a time. It can be very, very slow. Read into a byte[].
Code:
public String getRxdData() throws IOException {
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buffer = new byte[BUFFER_SIZE];
int bufferUsed;
while ( (bufferUsed = inputStream.read(buffer)) > 0 ) {
bout.write(buffer, 0, bufferUsed);
}
return new String(bout.toByteArray(), "UTF-8");
}
512 or 1024 are good values for BUFFER_SIZE.