Guest User

Untitled

a guest
May 20th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. public class WifiClient {
  2. private static interface OnWifiConnectedListener {
  3. public void onConnected();
  4. }
  5.  
  6. private static final MSG_QUIT = 0;
  7. private static final MSG_EVT = 1;
  8.  
  9. private static final int STATE_UNCONNECTED = 0;
  10. private static final int STATE_CONNECTING = 1;
  11. private static final int STATE_CONNECTED = 2;
  12.  
  13. private class WifiHandler extends Handler {
  14. // TODO: implement
  15. }
  16.  
  17. private Handler mHandler;
  18. private Thread mThread;
  19.  
  20. private Object mStateLock;
  21. private boolean mState;
  22.  
  23. public WifiClient() {
  24. mStateLock = new Object();
  25. mState = STATE_UNCONNECTED;
  26. }
  27.  
  28. // Returns false if a connection is already in progress or is connected, true otherwise
  29. // This could possibly be fixed further by returning an interface in OnWifiConnectedListener.onConnected(), so functions cannot be called until connected
  30. public boolean connect(OnWifiConnectedListener l) {
  31. synchronized(mStateLock) {
  32. if (mSTATE != STATE_UNCONNECTED) {
  33. return false;
  34. }
  35. mState = STATE_CONNECTING;
  36. }
  37.  
  38. // This could possibly reference a context
  39. final WeakReference<OnWifiConnectedListener> listenerRef = new WeakReference<OnWifiConnectedListener>(l);
  40.  
  41. mThread = new Thread() {
  42. @Override
  43. public void run() {
  44. // get socket and stream
  45.  
  46. Looper.prepare();
  47.  
  48. mHandler = new WifiHandler();
  49. synchronized(mStateLock) {
  50. mState = STATE_CONNECTED;
  51. }
  52. OnWifiConnectedListener l = listenerRef.get();
  53. if (l != null) {
  54. l.onConnected();
  55. }
  56. Looper.loop();
  57. }
  58. };
  59.  
  60. mThread.start();
  61.  
  62. return true;
  63. }
  64.  
  65. public boolean disconnect() {
  66. synchronized(mStateLock) {
  67. if (mState == STATE_UNCONNECTED) {
  68. return false;
  69. }
  70. }
  71.  
  72. Message.obtainEmptyMessage(MSG_QUIT);
  73. mHandler.sendMessageAtFrontOfQueue(msg);
  74. return true;
  75. }
  76.  
  77. public boolean sendEvent(String evt) {
  78. synchronized(mStateLock) {
  79. if (mState != STATE_CONNECTED) {
  80. return false;
  81. }
  82. }
  83. Message msg = Message.obtainMessage(MSG_EVT, 0, 0, evt);
  84. mHandler.sendMessage(msg);
  85. return true;
  86. }
  87. }
Add Comment
Please, Sign In to add comment