title: How to create a bluetooth server socket in android?
body: <p>I am trying to create a server program that just starts bluetooth, creates a server socket, waits for some device to connect and accepts the connection.</p>
  
  <p>The onClick() method starts the bluetooth, then I call the AcceptThread() method to create a server socket and start listening. Then run() is called which accepts a connection.</p>
  
  <p>But it is not working. My app just stops. Any idea why?</p>
  
  <p>The code is given below:</p>
  
  <pre><code>public class MainActivity extends Activity {
  
      public BluetoothAdapter mBluetoothAdapter;
      private BluetoothServerSocket mmServerSocket;
      private static final UUID MY_UUID_SECURE = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
  
      TextView text;
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          text=(TextView)findViewById(R.id.textView1);
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          getMenuInflater().inflate(R.menu.main, menu);
          return true;
      }
  
      public void onClick(View view) {
          switch (view.getId()) {
          case R.id.button1:
  
              mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
              if (mBluetoothAdapter == null) {
                  text.setText("Does not support bluetooth");
                  return;
              }
  
              Intent discoverableIntent = new
              Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
              discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
              startActivity(discoverableIntent);
              text.setText("Discoverable!!");
  
              AcceptThread();
              run();
  
          }
      }
  
      public void changeT(String str)
      {
          text.setText(str);
      }
  
      public void AcceptThread() {
          BluetoothServerSocket tmp = null;
          try {
              tmp = mBluetoothAdapter.listenUsingRfcommWithServiceRecord("MYYAPP", MY_UUID_SECURE);
  
          } catch (IOException e) { }
          mmServerSocket = tmp;
      }
  
      public void run() {
          BluetoothSocket socket = null;
          while (true) {
              try {
                  socket = mmServerSocket.accept();
                  changeT("listening");
              } catch (IOException e) {
                  break;
              }
              if (socket != null) {
                  changeT("doneeeee");
                  try {
                      mmServerSocket.close();
                  } catch (IOException e) {
                      e.printStackTrace();
                  }
                  break;
              }
          }
      }   
  }
  </code></pre>
  
  <p>The layout as requested:</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:paddingBottom="@dimen/activity_vertical_margin"
      android:paddingLeft="@dimen/activity_horizontal_margin"
      android:paddingRight="@dimen/activity_horizontal_margin"
      android:paddingTop="@dimen/activity_vertical_margin"
      tools:context=".MainActivity" &gt;
  
      &lt;Button
          android:id="@+id/button1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentLeft="true"
          android:layout_alignParentTop="true"
          android:layout_marginLeft="60dp"
          android:layout_marginTop="31dp"
          android:text="@string/but" 
          android:onClick="onClick"/&gt;
  
      &lt;TextView
          android:id="@+id/textView1"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_alignParentTop="true"
          android:layout_alignRight="@+id/button1"
          android:layout_marginRight="43dp"
          android:layout_marginTop="15dp"
          android:text="@string/Output" /&gt;
  
  &lt;/RelativeLayout&gt;
  </code></pre>