在多个传感器连接之间实现wait和notify

问题描述

在我的Android应用中,我想使用一个按钮OnClickListener连接到多个传感器。但是,在每次建立连接之前,都需要一次取出每个传感器。

成功连接传感器后,将调用

onSensorConnected。但是,现在它正尝试在调用onSensorConnected之前连接到下一个传感器。

因此,我尝试在连接传感器(wait())时实现onConnectSensors,在建立连接(notify())时实现onSensorConnected。这应该允许下一个传感器执行相同的过程。

但是,在notify中的onSensorConnected信号之前,传感器仍在连接。我需要一些有关如何使用waitnotify的指导。

public class myFragment extends Fragment {

    Button connect;
    
    private Boolean sensorConnected = false;
    private final Object lock = new Object();

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.myLayout,container,false);

        connect = (Button)root.findViewById(R.id.connectBtn);
        connect.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onConnectSensors(0); // Connect sensor one at a time..
                onConnectSensors(1);
                onConnectSensors(2);
                onConnectSensors(3);
                onConnectSensors(4);
                onConnectSensors(5);
                onConnectSensors(6);
                onConnectSensors(7);
                onConnectSensors(8);
                onConnectSensors(9);
            }
        });

        return root;
    }

    // Position is the sensor position in a recyclerview
    public void onConnectSensors(int position) {

        BluetoothDevice device = mScanAdapter.getDevice(position);
        mSensorViewModel.connectSensor(getContext(),device);
        // Sensor is now establishing connnection...

        // Wait until recieving sensorConnected = true
        try {
            synchronized (lock) {
                while ( sensorConnected != true ) { // Wait until sensorConnected is true
                    lock.wait();
                }
                sensorConnected = false; // reset status for next sensor
            }
        } catch ( InterruptedException x ) {}
    }

    @Override
    public void onSensorConnected() { // This is called automatically when sensor is finishing connection

        synchronized ( lock ) {
            sensorConnected = true;
            lock.notify();
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...