Android Studio Obsluga Bluetooth problem z SeekBarem

0

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);
            }
        });
0

jak dla mnie to leci Ci NullPointerException w 34 linijce twojego kodu

zapnij się tam debuggerem i zobacz czy przypadkiem mBluetoothConnection nie jest null......

0

Sam tytuł jest dla mnie WTF: jeśli masz powiązanie między SeekBar (UI), a Bluetooth znaczy, że architektonicznie aplikacja leży i kwiczy.
Połączanie Bluetooth nie powinno się znaleźć w Activity. Ono powinno być schowane w jakimś serwisie.
Teraz wystarczy, że zmieni się orientacja ekranu, a będziesz na nowo tworzył połączanie Bluetooth.

Powinieneś dostarczyć informację o crash. To na pewno jest exception, tylko jakie? Oraz jak wygląda call stack, dla tego exception.

1 użytkowników online, w tym zalogowanych: 0, gości: 1