Я сделал прослушиватель Bluetooth InputStream, который проверяет, есть ли входящие данные, просто запросив if(InputStream.isAvailable > 0)
, затем создал цикл для сохранения входящих данных в int[]
до тех пор, пока их больше не будет, и он работает отлично. Я использую простой Log.d
логгер для вывода результата. Я все еще новичок и могу понять основные понятия. Текст, который отправляется через мое устройство Bluetooth на мой телефон, - "Hello Android!"
, но он закодирован в целые числа, и я хотел бы преобразовать int[]
в String
, чтобы я мог получить закодированный текст без использования Потоковый декодер, но целые числа. Является ли это возможным? Фактический вывод, работающий как задумано, выглядит так: 72, 101, 108, 111, 32, 65, 110, 100, 114, 111, 105, 100, 33, 13, 10,
. Конечно, все они приходят не в одно и то же время, потому что они отправляются один за другим, и не о чем беспокоиться, потому что я буду использовать свои собственные разделители для определения начала и конца целых данных.
Мой код:
if(mmInputStream.available() > 0) {
int[] receivedBytes = new int[1024];
int i = 0;
while(mmInputStream.available() > 0) {
receivedBytes[i] = mmInputStream.read();
i++;
}
String s = "";
for(int j = 0; j < i; j++){
s += receivedBytes[j] + ", ";
}
Log.d("INPUTSTREAM_DATA", s);
}
Причина, по которой я сделал это таким образом, заключается в немедленном выводе входящих данных, как только один сеанс данных отправляется.