Android Open Source - lamp Fixed Bluetooth Socket






From Project

Back to project page lamp.

License

The source code is released under:

GNU General Public License

If you think the Android project lamp listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**    Copyright (C) 2013 Marek Sebera <marek@msebera.cz>
 */* www .  ja v  a2s  .  c om*/
 *    This program is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    This program is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 * 
 *    You should have received a copy of the GNU General Public License
 *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * */
package cz.tomsuch.lampicka.util;

import java.io.FilterInputStream;
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;

/**
 * Wrapper class, to prevent multiple calls to BluetoothSocket.close()
 * 
 * @author Marek Sebera <marek@msebera.cz>
 * */
public final class FixedBluetoothSocket {
  private BluetoothSocket socket;
  private boolean isClosed = true;

  /**
   * Constructor, takes one socket
   * 
   * @param sock
   *            socket to wrap on, must not be null
   * */
  public FixedBluetoothSocket(BluetoothSocket sock) {
    assert (sock != null);
    this.socket = sock;
  }

  /**
   * Closes socket only if it hasn't been closed yet
   * */
  public void close() throws IOException {
    synchronized (socket) {
      if (!isClosed) {
        socket.close();
        isClosed = true;
      }
    }
  }

  /**
   * Wraps around BluetoothSocket.connect()
   * */
  public void connect() throws IOException {
    socket.connect();
    isClosed = false;
  }

  /**
   * Wraps around BluetoothSocket.getInputStream()
   * */
  public InputStream getInputStream() throws IOException {
    return new FilterInputStream(socket.getInputStream()) {
      @Override
      public void close() throws IOException {
        FixedBluetoothSocket.this.close();
      }
    };
  }

  /**
   * Wraps around BluetoothSocket.getOutputStream()
   * */
  public OutputStream getOutputStream() throws IOException {
    return new FilterOutputStream(socket.getOutputStream()) {
      @Override
      public void close() throws IOException {
        FixedBluetoothSocket.this.close();
      }
    };
  }

  /**
   * Wraps around BluetoothSocket.getRemoteDevice()
   * */
  public BluetoothDevice getRemoteDevice() {
    if (isClosed)
      return null;
    return socket.getRemoteDevice();
  }

  /**
   * Wraps around BluetoothSocket.isConnected()
   * 
   * This method always returns true, as it is not reliable across all devices
   * */
  public boolean isConnected() {
    return true;
  }
}




Java Source Code List

cz.tomsuch.lampicka.AppController.java
cz.tomsuch.lampicka.abstracts.CustomSeekBar.java
cz.tomsuch.lampicka.activities.LampActivity.java
cz.tomsuch.lampicka.activities.LampsActivity.java
cz.tomsuch.lampicka.adapters.BluetoothDevicesAdapter.java
cz.tomsuch.lampicka.enums.BluetoothLampBacklightMode.java
cz.tomsuch.lampicka.enums.BluetoothLampColorSetMode.java
cz.tomsuch.lampicka.enums.BluetoothLampCommand.java
cz.tomsuch.lampicka.enums.BluetoothLampEffect.java
cz.tomsuch.lampicka.impl.DefaultBluetoothLamp.java
cz.tomsuch.lampicka.interfaces.BluetoothInputLineListener.java
cz.tomsuch.lampicka.interfaces.BluetoothLampCommandListener.java
cz.tomsuch.lampicka.interfaces.BluetoothLamp.java
cz.tomsuch.lampicka.interfaces.OnColorChangedListener.java
cz.tomsuch.lampicka.interfaces.PalleteDialogColorListener.java
cz.tomsuch.lampicka.pallete.ColorChooserDialog.java
cz.tomsuch.lampicka.pallete.PalleteDialog.java
cz.tomsuch.lampicka.util.BluetoothDeviceComparator.java
cz.tomsuch.lampicka.util.BluetoothDeviceWrapper.java
cz.tomsuch.lampicka.util.BluetoothSocketListener.java
cz.tomsuch.lampicka.util.ColorPickerView.java
cz.tomsuch.lampicka.util.FixedBluetoothSocket.java
cz.tomsuch.lampicka.util.HorizontalSeekBar.java
cz.tomsuch.lampicka.util.Preferences.java
cz.tomsuch.lampicka.util.VerticalSeekBar.java