Próbuję napisać aplikację która będzie odbierała dane z bluetooth HC-05, wszystko by było dobrze, ale aplikacja zawiesza się gdy czyści bufor. Gdy zakomentuję linijkę czyszczenia bufora aplikacja się nie zawisza. W czym tkwi problem.
public void run() {
byte[] buffer = new byte[1024];
int bytes;
//final StringBuilder sBuffer = new StringBuilder("");
final StringBuffer sBuffer = new StringBuffer("");
while (true)
{
try
{
// Read from the InputStream
bytes = mmInStream.read(buffer);
if(bytes > 0)
{
byte[] newbuffer = new byte[bytes];
for(int i = 0; i < bytes; i++)
newbuffer[i] = buffer[i];
final String data2 = new String(newbuffer, "US-ASCII");
handler.post(new Runnable()
{
public void run()
{
if(data2.indexOf('>')==-1)
{
sBuffer.append(data2);
}
else
{
sBuffer.append(data2);
String data=new String(sBuffer);
data=data.substring(data.indexOf('<')+1,data.indexOf('>'));
String[] lista = data.split("#");
tvVoltage.setText(" ");
tvVoltage.setText(data);
sBuffer.delete(0, sBuffer.length()); // Gdy zakomentuję tę linię aplikacja nie zawiesza się
}
}
});
}
}
catch (IOException e)
{
Log.e("BT", "watcher", e);
break;
}
}
}