Здравствуйте, я хочу сделать два из моих операторов 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);
}
}