title: Android and Arduino bluetooth Comunication error in android code IOException
body: <p>I have been trying to communicate between android and arduino through bluetooth but whenever I build android it gives me this error over the "C" function and the error says </p>
  
  <blockquote>
    <p>Error:(91, 22) error: unreported exception IOException; must be caught
    or declared to be thrown</p>
  </blockquote>
  
  <p>please help me i am stuck </p>
  
  <pre><code>$    
  package com.example.administrator.myapplication;
  
  import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.os.Bundle;
  import android.app.Activity;
  import android.bluetooth.BluetoothAdapter;
  import android.bluetooth.BluetoothDevice;
  import android.bluetooth.BluetoothSocket;
  import android.content.BroadcastReceiver;
  import android.content.Context;
  import java.util.Set;
  import android.content.Intent;
  import android.content.IntentFilter;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.ArrayAdapter;
  import android.widget.Button;
  import android.widget.ListView;
  import android.widget.TextView;
  import android.widget.Toast;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.OutputStream;
  import java.io.InputStream;
  import android.os.ParcelUuid;
  
  
  
  
  
  public class MainActivity extends AppCompatActivity {
  
  private static final int REQUEST_ENABLE_BT = 1;
  private Button onBtn, offBtn ,listBtn ,findBtn;
  private TextView text;
  
  private Button UpBtn ,DownBtn ,LeftBtn ,RightBtn;
  
  private BluetoothAdapter myBluetoothAdapter;
  private Set&lt;BluetoothDevice&gt; pairedDevices;
  private ListView myListView;
  private ArrayAdapter&lt;String&gt; BTArrayAdapter;
  private OutputStream outputStream;
  private InputStream inStream;
  
  
  protected void onCreate(Bundle savedInstanceState){
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      // take an instance of BluetoothAdapter - Bluetooth radio
      myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
      Set&lt;BluetoothDevice&gt; bondedDevices = myBluetoothAdapter.getBondedDevices();
  
      if (myBluetoothAdapter == null) {
          onBtn.setEnabled(false);
          offBtn.setEnabled(false);
          listBtn.setEnabled(false);
          findBtn.setEnabled(false);
          UpBtn.setEnabled(false);
          DownBtn.setEnabled(false);
          LeftBtn.setEnabled(false);
          RightBtn.setEnabled(false);
          text.setText("Status: not supported");
  
          Toast.makeText(getApplicationContext(), "Your device does not support Bluetooth",
                  Toast.LENGTH_LONG).show();
      } else {
  
          if(bondedDevices.size() &gt; 0){
              BluetoothDevice[] devices = (BluetoothDevice[]) bondedDevices.toArray();
              BluetoothDevice device = devices[0];
              ParcelUuid[] uuids = device.getUuids();
              BluetoothSocket socket = device.createRfcommSocketToServiceRecord(uuids[0].getUuid());
              socket.connect();
              outputStream = socket.getOutputStream();
              inStream = socket.getInputStream();
          }
  
  
  
  
          //Movement
          UpBtn = (Button) findViewById(R.id.Upbutton);
          DownBtn = (Button) findViewById(R.id.Downbutton);
          LeftBtn = (Button) findViewById(R.id.Leftbutton);
          RightBtn = (Button) findViewById(R.id.Rightbutton);
  
          UpBtn.setOnClickListener(new OnClickListener()  {
              @Override public void onClick(View v)  {
                  C(v,8) ; //error here
  
  
              }
          });
  
          DownBtn.setOnClickListener(new OnClickListener() {
              @Override public void onClick(View v)  {
                  C(v, 2);
  
  
              }
          });
  
          LeftBtn.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v)  {
                  C(v, 4);
  
  
              }
          });
  
          RightBtn.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v){
                  C(v,6);
              }
          });
  
          //.........................
          //..................
          //Normal Code
          text = (TextView) findViewById(R.id.textView);
          onBtn = (Button) findViewById(R.id.Onbutton);
          onBtn.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  on(v);
              }
          });
  
          offBtn = (Button) findViewById(R.id.Offbutton);
          offBtn.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  off(v);
              }
          });
  
          listBtn = (Button) findViewById(R.id.Listbutton);
          listBtn.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  list(v);
              }
          });
  
          findBtn = (Button) findViewById(R.id.Pairedbutton);
          findBtn.setOnClickListener(new OnClickListener() {
  
              @Override
              public void onClick(View v) {
                  // TODO Auto-generated method stub
                  find(v);
              }
          });
  
          myListView = (ListView) findViewById(R.id.listView1);
  
          // create the arrayAdapter that contains the BTDevices, and set it to the ListView
          BTArrayAdapter = new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_1);
          myListView.setAdapter(BTArrayAdapter);
      }
  }
  
  public void on(View view) {
      if (!myBluetoothAdapter.isEnabled()) {
          Intent turnOnIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
          startActivityForResult(turnOnIntent, REQUEST_ENABLE_BT);
  
          Toast.makeText(getApplicationContext(), "Bluetooth turned on",
                  Toast.LENGTH_LONG).show();
      } else {
          Toast.makeText(getApplicationContext(), "Bluetooth is already on",
                  Toast.LENGTH_LONG).show();
      }
  }
  
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      // TODO Auto-generated method stub
      if (requestCode == REQUEST_ENABLE_BT) {
          if (myBluetoothAdapter.isEnabled()) {
              text.setText("Status: Enabled");
          } else {
              text.setText("Status: Disabled");
          }
      }
  }
  
  public void list(View view) {
      // get paired devices
      pairedDevices = myBluetoothAdapter.getBondedDevices();
  
      // put it's one to the adapter
      for (BluetoothDevice device : pairedDevices)
          BTArrayAdapter.add(device.getName() + "\n" + device.getAddress());
  
      Toast.makeText(getApplicationContext(), "Show Paired Devices",
              Toast.LENGTH_SHORT).show();
  
  }
  
  final BroadcastReceiver bReceiver = new BroadcastReceiver() {
      public void onReceive(Context context, Intent intent) {
          String action = intent.getAction();
          // When discovery finds a device
          if (BluetoothDevice.ACTION_FOUND.equals(action)) {
              // Get the BluetoothDevice object from the Intent
              BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
              // add the name and the MAC address of the object to the arrayAdapter
              BTArrayAdapter.add(device.getName() + "\n" + device.getAddress());
              BTArrayAdapter.notifyDataSetChanged();
          }
      }
  };
  
  public void find(View view) {
      if (myBluetoothAdapter.isDiscovering()) {
          // the button is pressed when it discovers, so cancel the discovery
          myBluetoothAdapter.cancelDiscovery();
      } else {
          BTArrayAdapter.clear();
          myBluetoothAdapter.startDiscovery();
  
          registerReceiver(bReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));
      }
  }
  
  public void off(View view) {
      myBluetoothAdapter.disable();
      text.setText("Status: Disconnected");
  
      Toast.makeText(getApplicationContext(), "Bluetooth turned off",
              Toast.LENGTH_LONG).show();
  }
  
  public void C (View View , float H) throws IOException{
         if(H == 8){
  
                  outputStream.write("8".toString().getBytes());
         }
         if(H == 2){
                   outputStream.write("2".toString().getBytes());
         }
         if(H == 4){
                   outputStream.write("4".toString().getBytes());
         }
         if(H == 6){
                   outputStream.write("6".toString().getBytes());
         }
  
  }
  
  
  @Override
  protected void onDestroy() {
      // TODO Auto-generated method stub
      super.onDestroy();
      unregisterReceiver(bReceiver);
  }
  
  }
  $
  </code></pre>