Note that there are some explanatory texts on larger screens.

plurals
  1. POCheck that the SPP UUID 00001101-0000-1000-8000-00805F9B34FB exists on server
    primarykey
    data
    text
    <p>I'm using Windows 7 PC as Server. Code: </p> <pre><code>public class PCSPPServer { //start server private void startServer() throws IOException{ //Create a UUID for SPP UUID uuid = new UUID("1101", true); //Create the servicve url String connectionString = "btspp://localhost:" + uuid +";name=Sample SPP Server"; //open server url StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier)Connector.open( connectionString ); //Wait for client connection System.out.println("\nServer Started. Waiting for clients to connect..."); StreamConnection connection=streamConnNotifier.acceptAndOpen(); RemoteDevice dev = RemoteDevice.getRemoteDevice(connection); System.out.println("Remote device address: "+dev.getBluetoothAddress()); System.out.println("Remote device name: "+dev.getFriendlyName(true)); //read string from spp client InputStream inStream=connection.openInputStream(); BufferedReader bReader=new BufferedReader(new InputStreamReader(inStream)); String lineRead=bReader.readLine(); System.out.println(lineRead); //send response to spp client OutputStream outStream=connection.openOutputStream(); PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream)); pWriter.write("Response String from SPP Server\r\n"); pWriter.flush(); pWriter.close(); streamConnNotifier.close(); } public static void main(String[] args) throws IOException { //display local device address and name LocalDevice localDevice = LocalDevice.getLocalDevice(); System.out.println("Address: "+localDevice.getBluetoothAddress()); System.out.println("Name: "+localDevice.getFriendlyName()); PCSPPServer sampleSPPServer=new PCSPPServer(); sampleSPPServer.startServer(); } } </code></pre> <p>And HTC Desire as Client. Code:</p> <pre><code>public class MainActivity extends Activity { TextView out; private static final int REQUEST_ENABLE_BT = 1; private BluetoothAdapter btAdapter = null; private BluetoothSocket btSocket = null; private OutputStream outStream = null; // Well known SPP UUID private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); // Insert your server's MAC address private static String address = "00:15:83:0C:BF:EB"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); out = (TextView) findViewById(R.id.out); out.append("\n...In onCreate()..."); btAdapter = BluetoothAdapter.getDefaultAdapter(); CheckBTState(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onStart() { super.onStart(); out.append("\n...In onStart()..."); } @Override public void onResume() { super.onResume(); out.append("\n...In onResume...\n...Attempting client connect..."); // Set up a pointer to the remote node using it's address. BluetoothDevice device = btAdapter.getRemoteDevice(address); // Two things are needed to make a connection: // A MAC address, which we got above. // A Service ID or UUID. In this case we are using the // UUID for SPP. try { btSocket = device.createRfcommSocketToServiceRecord(MY_UUID); } catch (IOException e) { AlertBox("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + "."); } // Discovery is resource intensive. Make sure it isn't going on // when you attempt to connect and pass your message. btAdapter.cancelDiscovery(); // Establish the connection. This will block until it connects. try { btSocket.connect(); out.append("\n...Connection established and data link opened..."); } catch (IOException e) { try { btSocket.close(); } catch (IOException e2) { AlertBox("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + "."); } } // Create a data stream so we can talk to server. out.append("\n...Sending message to server..."); try { outStream = btSocket.getOutputStream(); } catch (IOException e) { AlertBox("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + "."); } String message = "Hello from Android.\n"; byte[] msgBuffer = message.getBytes(); try { outStream.write(msgBuffer); } catch (IOException e) { String msg = "In onResume() and an exception occurred during write: " + e.getMessage(); if (address.equals("00:00:00:00:00:00")) msg = msg + ".\n\nUpdate your server address from 00:00:00:00:00:00 to the correct address on line 37 in the java code"; msg = msg + ".\n\nCheck that the SPP UUID: " + MY_UUID.toString() + " exists on server.\n\n"; AlertBox("Fatal Error", msg); } } @Override public void onPause() { super.onPause(); out.append("\n...In onPause()..."); if (outStream != null) { try { outStream.flush(); } catch (IOException e) { AlertBox("Fatal Error", "In onPause() and failed to flush output stream: " + e.getMessage() + "."); } } try { btSocket.close(); } catch (IOException e2) { AlertBox("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + "."); } } @Override public void onStop() { super.onStop(); out.append("\n...In onStop()..."); } @Override public void onDestroy() { super.onDestroy(); out.append("\n...In onDestroy()..."); } private void CheckBTState() { // Check for Bluetooth support and then check to make sure it is turned on // Emulator doesn't support Bluetooth and will return null if(btAdapter==null) { AlertBox("Fatal Error", "Bluetooth Not supported. Aborting."); } else { if (btAdapter.isEnabled()) { out.append("\n...Bluetooth is enabled..."); } else { //Prompt user to turn on Bluetooth Intent enableBtIntent = new Intent(btAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); } } } public void AlertBox( String title, String message ){ new AlertDialog.Builder(this) .setTitle( title ) .setMessage( message + " Press OK to exit." ) .setPositiveButton("OK", new OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { finish(); } }).show(); } } </code></pre> <p>I've tried it's on both <strong>Windows 7</strong> <strong>32bit</strong> &amp; <strong>64bit</strong>. I'm using HTC Desire <strong>Android v2.3.3</strong>.</p> <p>When I try connecting the client to the server and try to write any text using <code>OutputStream</code>, i get the error: </p> <blockquote> <p>Check that the SPP UUID 00001101-0000-1000-8000-00805F9B34FB exists on server</p> </blockquote> <hr> <p>Also I add a new Bluetooth device on my PC.</p> <p>Bluetooth Device Info:</p> <blockquote> <p>Manufacturer: Cambridge Silicon Radio Ltd Driver Provider: Microsoft</p> </blockquote> <p>See some information in this image: <img src="https://i.stack.imgur.com/EF3Xo.png" alt="enter image description here"></p> <p>Let me know if anyone has an idea !</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload