tab = slider; sdata[tab] = ""; switch (slider) { case 1: uid_service = "0000180b-0000-1000-8000-00805f9b34fb"; uid_write = "00002b57-0000-1000-8000-00805f9b34fb"; break; case 2: uid_service = "0000180a-0000-1000-8000-00805f9b34fb"; uid_write = "00002a57-0000-1000-8000-00805f9b34fb"; break; default: uid_service = "0000180b-0000-1000-8000-00805f9b34fbx"; uid_write = "00002b57-0000-1000-8000-00805f9b34fb"; } BleManager.getInstance().read( bleDevice, uid_service, uid_write, new BleReadCallback() { @Override public void onReadSuccess(byte[] data) { Log.d("Respond Blue", HexUtil.formatHexString(data, true)); sdata[tab] = HexUtil.formatHexString(data, true); } @Override public void onReadFailure(BleException exception) { get_bluetooth_value(tab); } }); Log.d("Bluetooth", "respond Value"+sdata[tab]); return sdata[tab]; }
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)
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
sdata[tab] = "";
w klasie tak definiuje tablice :
public class Sliders extends AppCompatActivity { // Dodajemy adapter private DeviceAdapter mDeviceAdapter; private BleDevice bleDevice; private static final float s1 = 0; public int tab;