Witam, mam problem... mam kod w klasie javy:
  1. public String get_bluetooth_value(int slider) {
  2. String uid_service = "";
  3. String uid_write = "";
  4. tab = slider;
  5. sdata[tab] = "";
  6.  
  7.  
  8. switch (slider) {
  9. case 1:
  10. uid_service = "0000180b-0000-1000-8000-00805f9b34fb";
  11. uid_write = "00002b57-0000-1000-8000-00805f9b34fb";
  12. break;
  13. case 2:
  14. uid_service = "0000180a-0000-1000-8000-00805f9b34fb";
  15. uid_write = "00002a57-0000-1000-8000-00805f9b34fb";
  16. break;
  17. default:
  18. uid_service = "0000180b-0000-1000-8000-00805f9b34fbx";
  19. uid_write = "00002b57-0000-1000-8000-00805f9b34fb";
  20. }
  21.  
  22. BleManager.getInstance().read(
  23. bleDevice,
  24. uid_service,
  25. uid_write,
  26. new BleReadCallback() {
  27. @Override
  28. public void onReadSuccess(byte[] data) {
  29. Log.d("Respond Blue", HexUtil.formatHexString(data, true));
  30. sdata[tab] = HexUtil.formatHexString(data, true);
  31.  
  32. }
  33.  
  34. @Override
  35. public void onReadFailure(BleException exception) {
  36. get_bluetooth_value(tab);
  37. }
  38. });
  39. Log.d("Bluetooth", "respond Value"+sdata[tab]);
  40. return sdata[tab];
  41. }


i on działa ale nie zawsze bo bluetooth działa na zasadzie takeij że nie zawsze zwraca wszystkie pakiety., stąd też próbuję zrobić funkcję która będzie zapentlac się... chodzi mi o to że nie mam danych w public void onReadSuccess. Wiecie może jak przekazać tam dane? Mam bląd:
Kod
2022-01-30 04:09:23.081 22210-22210/com.example.gdziesiepatrzysz E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.gdziesiepatrzysz, PID: 22210
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gdziesiepatrzysz/com.example.gdziesiepatrzysz.Sliders}: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3539)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3699)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2135)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:236)
        at android.app.ActivityThread.main(ActivityThread.java:8056)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:656)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:967)
     Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
        at com.example.gdziesiepatrzysz.Sliders.get_bluetooth_value(Sliders.java:133)
        at com.example.gdziesiepatrzysz.Sliders.onCreate(Sliders.java:49)

gdzie linia 122 w sliders.java to

  1. sdata[tab] = "";


w klasie tak definiuje tablice :
  1. public class Sliders extends AppCompatActivity {
  2.  
  3. // Dodajemy adapter
  4. private DeviceAdapter mDeviceAdapter;
  5.  
  6. public static final String KEY_DATA = "key_data";
  7. private BleDevice bleDevice;
  8.  
  9. private static final float s1 = 0;
  10.  
  11. public int tab;
  12. public String[] sdata = {""};