Bluetooth-обработчик в Android - запускается только один раз - PullRequest
0 голосов
/ 28 января 2019

Здравствуйте, я хочу сделать два из моих операторов Case для запуска только один раз .Как сделать так, чтобы операторы PLAYER_GAMEPIECE_WRITE и PLAYER_GAMEPIECE_READ Case выполнялись только один раз, как MESSAGE_DEVICE_NAME case?Кажется, они просто перебирают друг друга.Это не переходит к следующему делу.

Код обработчика:

private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(final Message msg)
    {
        switch (msg.what)
        {

            // If the two devices are connected
            case MESSAGE_DEVICE_NAME:
                mConnectedDeviceName = msg.getData().getString(DEVICE_NAME);

                Toast.makeText(TwoPlayerActivityBluetooth.this, "Connected to " + mConnectedDeviceName, Toast.LENGTH_SHORT).show();

            case PLAYER_GAMEPIECE_WRITE:
                //INSERT CODE HERE
                break;

            case PLAYER_GAMEPIECE_READ:
                //INSERT CODE HERE
                break;

            case PLAYER_LOCATION_WRITE:
                //INSERT CODE HERE
                break;

            case PLAYER_LOCATION_READ:
                //INSERT CODE HERE 
                break;

Код службы Bluetooth:

public void run()
        {
            readGamepiece();
            readLocation();
        }

public void readGamepiece()
    {

        byte[] buffer2 = new byte[1024];
        int bytes;

        while(true)
        {
            try
            {
                bytes = mInStream.read(buffer2);
 mHandler.obtainMessage(TwoPlayerActivityBluetooth.PLAYER_GAMEPIECE_READ, bytes, -1, buffer2).sendToTarget();
            }
            catch(IOException e)
            {
                Log.e(TAG, "disconnected", e);
                connectionLost();
                break;
            }
        }

    }

    public void writeGamepiece(byte[] buffer2)
    {
        try
        {
            mOutStream.write(buffer2);
mHandler.obtainMessage(TwoPlayerActivityBluetooth.PLAYER_GAMEPIECE_WRITE, -1 , -1 , buffer2).sendToTarget();

        }
        catch(IOException e)
        {
            Log.e(TAG, "Exception during write", e);
        }
    }


    public void readLocation()
    {

        byte[] buffer = new byte[1024];
        int bytes;

        while(true)
        {
            try
            {
                bytes = mInStream.read(buffer);
                mHandler.obtainMessage(TwoPlayerActivityBluetooth.PLAYER_LOCATION_READ, bytes, -1, buffer).sendToTarget();
            }
            catch(IOException e)
            {
                Log.e(TAG, "disconnected", e);
                connectionLost();
                break;
            }
        }
    }


    public void writeLocation(byte[] buffer)
    {
        try
        {
            mOutStream.write(buffer);
            mHandler.obtainMessage(TwoPlayerActivityBluetooth.PLAYER_LOCATION_WRITE, -1 , -1 , buffer).sendToTarget();
        }
        catch(IOException e)
        {
            Log.e(TAG, "Exception during write", e);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...