Napisałem prostą aplikację, która obsługuje połączenie Bluetooth, wszystko było w porządku do momentu dodania do niej SeekBara - do rzeczy.
W momencie kiedy odczytuje wartość ze wspomnianego seekbara i próbuje przesłać ją do drugiego urządzenia, aplikacja zachowuje się w dosyć dziwny sposób czyt. zrywa połączenie z modułem BT i wraca do okna MainActivity ani się przy tym nie crashując ani nie zwracając niczego konkretnego w logach. Warto dodać, że w tej samej aplikacji umieszczona jest funkcja przesyłająca dane wprowadzane z klawiatury, która działa poprawnie. Z góry przepraszam jeśli coś jest niejasne albo całość posta średnio trzyma się kupy, ale to kwestia tego że ostatnie kilka godzin spędziłem głowiąc się nad tym problemem
obsluga seekbara
public class SecondScreen extends AppCompatActivity {
BluetoothConnectionService mBluetoothConnection;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_screen);
Button btnGoB = (Button) findViewById(R.id.btnGoB);
SeekBar seekBar = (SeekBar) findViewById(R.id.seekBar);
btnGoB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(SecondScreen.this, MainActivity.class);
startActivity(intent);
}
});
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
int jasnosc = seekBar.getProgress();
byte[] array = String.valueOf(jasnosc).getBytes();
mBluetoothConnection.write(array);
}
});
}
}
wywolywana funkcja write
public void write(byte[] bytes) {
String text = new String(bytes, Charset.defaultCharset());
Log.d(TAG, "write: Writing to outputstream: " + text);
try {
mmOutStream.write(bytes);
} catch (IOException e) {
Log.e(TAG, "write: Error writing to output stream. " + e.getMessage() );
}
}
wspomniana działająca funkcja wysylajaca dane pobrane z klawiatury
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
byte[] bytes = etSend.getText().toString().getBytes(Charset.defaultCharset());
mBluetoothConnection.write(bytes);
}
});