summaryrefslogtreecommitdiff
path: root/android/sdremote
diff options
context:
space:
mode:
authorAndrzej J.R. Hunt <andrzej@ahunt.org>2012-08-22 12:44:42 +0200
committerAndrzej J.R. Hunt <andrzej@ahunt.org>2012-08-22 20:23:07 +0200
commit1db66c2a1a8ad5a60c68b09ddacc1bb6e021299f (patch)
treef4693b0a0c1a689783c9dbf956a56d8d350afb3a /android/sdremote
parent9d73597289be9049e8300ff92980fdffbe4d7040 (diff)
Bluetooth connection working (Linux).
Change-Id: Iac77c3ce0ab0ea7bda3105c58859888e55e64d2d
Diffstat (limited to 'android/sdremote')
-rw-r--r--android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothClient.java118
-rw-r--r--android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothFinder.java11
-rw-r--r--android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java2
-rw-r--r--android/sdremote/src/org/libreoffice/impressremote/communication/ServerFinder.java3
4 files changed, 76 insertions, 58 deletions
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothClient.java b/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothClient.java
index 6d3735153c4c..9880b8f8964e 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothClient.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothClient.java
@@ -8,6 +8,8 @@
*/
package org.libreoffice.impressremote.communication;
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
import java.net.Socket;
import java.util.UUID;
@@ -15,6 +17,8 @@ import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Context;
+import android.content.Intent;
+import android.support.v4.content.LocalBroadcastManager;
/**
* Standard Network client. Connects to a server using Sockets.
@@ -31,67 +35,77 @@ public class BluetoothClient extends Client {
super(aContext);
try {
BluetoothAdapter aAdapter = BluetoothAdapter.getDefaultAdapter();
+ System.out.println("Attemtping to connect to:" + bluetoothAddress);
BluetoothDevice aDevice = aAdapter
.getRemoteDevice(bluetoothAddress);
+ aAdapter.cancelDiscovery();
BluetoothSocket aSocket = aDevice
.createRfcommSocketToServiceRecord(UUID
- .fromString("00001101-0000-1000-8000-00805f9b34fb"));
+ .fromString("00001101-0000-1000-8000-00805F9B34FB"));
aSocket.connect();
+ // mSocket = aSocket;
+ System.out.println("Connected");
+
+ mInputStream = aSocket.getInputStream();
+ mReader = new BufferedReader(new InputStreamReader(mInputStream,
+ CHARSET));
+ mOutputStream = aSocket.getOutputStream();
+
+ // mOutputStream.write(20);
+ // mOutputStream.write(20);
+ // mOutputStream.write(20);
+ // mOutputStream.flush();
+ // System.out.println("reading");
+ // while (true) {
+ // System.out.println(mInputStream.read());
+ // }
+ String aTemp = mReader.readLine();
+ System.out.println("SF:waited");
+ if (!aTemp.equals("LO_SERVER_SERVER_PAIRED")) {
+ return;
+ }
+ while (mReader.readLine().length() != 0) {
+ // Get rid of extra lines
+ }
+ Intent aIntent = new Intent(
+ CommunicationService.MSG_PAIRING_SUCCESSFUL);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(aIntent);
+ startListening();
+ // Pairing.
+ // Random aRandom = new Random();
+ // String aPin = "" + (aRandom.nextInt(9000) + 1000);
+ // while (aPin.length() < 4) {
+ // aPin = "0" + aPin; // Add leading zeros if necessary
+ // }
+ // Intent aIntent = new Intent(
+ // CommunicationService.MSG_PAIRING_STARTED);
+ // aIntent.putExtra("PIN", aPin);
+ // mPin = aPin;
+ // LocalBroadcastManager.getInstance(mContext).sendBroadcast(aIntent);
+ // // Send out
+ // String aName = CommunicationService.getDeviceName(); // TODO: get the proper name
+ // sendCommand("LO_SERVER_CLIENT_PAIR\n" + aName + "\n" + aPin
+ // + "\n\n");
+ //
+ // // Wait until we get the appropriate string back...
+ // System.out.println("SF:waiting");
+ // String aTemp = mReader.readLine();
+ // System.out.println("SF:waited");
+ // if (!aTemp.equals("LO_SERVER_SERVER_PAIRED")) {
+ // return;
+ // } else {
+ //
+ // }
+ // while (mReader.readLine().length() != 0) {
+ // // Get rid of extra lines
+ // System.out.println("SF: empty line");
+ // }
+ // System.out.println("SD: empty");
+ // startListening();
} catch (Exception e) {
e.printStackTrace();
}
- // BluetoothSocket aSocket = new BluetoothClient(bluetoothAddress, aContext)
- // .createRfcommSocketToServiceRecord(UUID
- // .fromString("00001101-0000-1000-8000-00805F9B34F
- // }
- // try {
- // mSocket = new Socket(ipAddress, PORT);
- // mInputStream = mSocket.getInputStream();
- // mReader = new BufferedReader(new InputStreamReader(mInputStream,
- // CHARSET));
- // mOutputStream = mSocket.getOutputStream();
- // // Pairing.
- // Random aRandom = new Random();
- // String aPin = "" + (aRandom.nextInt(9000) + 1000);
- // while (aPin.length() < 4) {
- // aPin = "0" + aPin; // Add leading zeros if necessary
- // }
- // Intent aIntent = new Intent(
- // CommunicationService.MSG_PAIRING_STARTED);
- // aIntent.putExtra("PIN", aPin);
- // mPin = aPin;
- // LocalBroadcastManager.getInstance(mContext).sendBroadcast(aIntent);
- // // Send out
- // String aName = CommunicationService.getDeviceName(); // TODO: get the proper name
- // sendCommand("LO_SERVER_CLIENT_PAIR\n" + aName + "\n" + aPin
- // + "\n\n");
- //
- // // Wait until we get the appropriate string back...
- // System.out.println("SF:waiting");
- // String aTemp = mReader.readLine();
- // System.out.println("SF:waited");
- // if (!aTemp.equals("LO_SERVER_SERVER_PAIRED")) {
- // return;
- // } else {
- // aIntent = new Intent(
- // CommunicationService.MSG_PAIRING_SUCCESSFUL);
- // LocalBroadcastManager.getInstance(mContext).sendBroadcast(
- // aIntent);
- // }
- // while (mReader.readLine().length() != 0) {
- // // Get rid of extra lines
- // System.out.println("SF: empty line");
- // }
- // System.out.println("SD: empty");
- // startListening();
- // } catch (UnknownHostException e) {
- // // TODO Tell the user we have a problem
- // e.printStackTrace();
- // } catch (IOException e) {
- // // TODO As above
- // e.printStackTrace();
- // }
}
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothFinder.java b/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothFinder.java
index a6866186b8da..b001d1a862c6 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothFinder.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/BluetoothFinder.java
@@ -11,6 +11,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.support.v4.content.LocalBroadcastManager;
public class BluetoothFinder {
@@ -32,9 +33,8 @@ public class BluetoothFinder {
return; // No bluetooth adapter found (emulator, special devices)
}
System.out.println("BT:Discovery starting");
- IntentFilter aFilter = new IntentFilter(
- BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
- aFilter.addAction(BluetoothDevice.ACTION_FOUND);
+ IntentFilter aFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
+ aFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
mContext.registerReceiver(mReceiver, aFilter);
mAdapter.enable();
@@ -64,7 +64,7 @@ public class BluetoothFinder {
@Override
public void onReceive(Context context, Intent aIntent) {
// TODO Auto-generated method stub
- System.out.println("Received intent");
+ System.out.print("Received intent<<<");
System.out.println(aIntent.getAction());
if (aIntent.getAction().equals(BluetoothDevice.ACTION_FOUND)) {
BluetoothDevice aDevice = (BluetoothDevice) aIntent.getExtras()
@@ -77,7 +77,8 @@ public class BluetoothFinder {
System.out.println("Now we have: " + mServerList.size());
Intent aNIntent = new Intent(
CommunicationService.MSG_SERVERLIST_CHANGED);
- mContext.sendBroadcast(aNIntent);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(
+ aNIntent);
// System.out.println("Found " + aDevice.getName());
// try {
// // "f36d0a20-e876-11e1-aff1-0800200c9a66"
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
index a3fe70e40791..407540a19721 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/Receiver.java
@@ -35,6 +35,8 @@ public class Receiver {
}
public void parseCommand(ArrayList<String> aCommand) {
+ if (aCommand.size() == 0)
+ return; // E.g. if empty line received for whatever reason.
String aInstruction = aCommand.get(0);
if (aInstruction.equals("slideshow_started")) {
int aSlideShowlength = Integer.parseInt(aCommand.get(1));
diff --git a/android/sdremote/src/org/libreoffice/impressremote/communication/ServerFinder.java b/android/sdremote/src/org/libreoffice/impressremote/communication/ServerFinder.java
index 79839e779042..406383c3d71d 100644
--- a/android/sdremote/src/org/libreoffice/impressremote/communication/ServerFinder.java
+++ b/android/sdremote/src/org/libreoffice/impressremote/communication/ServerFinder.java
@@ -13,6 +13,7 @@ import org.libreoffice.impressremote.communication.Server.Protocol;
import android.content.Context;
import android.content.Intent;
+import android.support.v4.content.LocalBroadcastManager;
public class ServerFinder {
@@ -169,7 +170,7 @@ public class ServerFinder {
*/
private void notifyActivity() {
Intent aIntent = new Intent(CommunicationService.MSG_SERVERLIST_CHANGED);
- mContext.sendBroadcast(aIntent);
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(aIntent);
}
public Collection<Server> getServerList() {