title: Send data through USB from Android App to PC
body: <p>I would like to create an app to send data through USB from Android-app to PC. My code is as follows :</p>
  
  <pre><code>package com.sample.dummy.app.senddatathoughserialport;
  
  import java.io.UnsupportedEncodingException;
  import android.os.Bundle;
  import android.app.Activity;
  import android.content.Context;
  import android.content.Intent;
  import android.hardware.usb.UsbConstants;
  import android.hardware.usb.UsbDeviceConnection;
  import android.hardware.usb.UsbEndpoint;
  import android.hardware.usb.UsbInterface;
  import android.hardware.usb.UsbManager;
  import android.hardware.usb.UsbDevice;
  import android.util.Log;
  import android.view.Menu;
  import android.view.View;
  import android.widget.Button;
  import android.widget.TextView;
  import android.widget.Toast;
  
  public class MainActivity extends Activity 
  {
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) 
  {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      final TextView tv = (TextView)findViewById(R.id.multiAutoCompleteTextView1);
      Button sButton = (Button) findViewById(R.id.button1);
      final UsbManager manager = (UsbManager) this.getSystemService(Context.USB_SERVICE);
      Toaster(""+manager);
  
      // -- register click event with first button ---
      sButton.setOnClickListener(new View.OnClickListener() 
      {
         @SuppressWarnings({ "unused" })
         public void onClick(View v) 
         {         
              try
              {
                  Intent intent = new Intent("android.hardware.usb.action.USB_DEVICE_ATTACHED");
                  UsbDevice mDevice = (UsbDevice) intent.getParcelableExtra(UsbManager.ACTION_USB_DEVICE_ATTACHED);
                  Toaster(""+mDevice);
                  final UsbDeviceConnection connection = manager.openDevice(mDevice); 
  
                  UsbInterface usbIf = null;
                  Toaster("Its ok here 1");
                  int count = mDevice.getInterfaceCount();
                  Toaster("Its ok here 1");
                  for(int i=0; i&lt; count; i++)
                  {
                      usbIf = mDevice.getInterface(i);
                  }
  
                  UsbEndpoint epIN = null;
                  UsbEndpoint epOUT = null;
                  Toaster("It's ok here 2");
                  for (int i = 0; i &lt; usbIf.getEndpointCount(); i++) 
                  {            
                     if (usbIf.getEndpoint(i).getType() == UsbConstants.USB_ENDPOINT_XFER_BULK)
                     {                 
                          if (usbIf.getEndpoint(i).getDirection() == UsbConstants.USB_DIR_IN)                         
                          epIN = usbIf.getEndpoint(i);
                          else
                          epOUT = usbIf.getEndpoint(i);
                     } 
                     else 
                     {
                          Log.d("USB","Not Bulk");
                          Toaster("Thedaa log daggara");
                     }
                  }
  
                  String get = tv.getText().toString();
                  try
                  {
                      byte[] str = get.getBytes(get);
                      connection.bulkTransfer(epOUT, str, str.length, 500);
                  } 
                  catch (UnsupportedEncodingException e) 
                  {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                      Toaster("Data sending failed!");
                  }
                  finally
                  {
                      Toaster("Data sent through USB !");
                  }
              }
              catch(Exception e)
              {
                  Log.d("Failed", e.toString());  
                  Toaster("Attempt Failed !!");
              }
         }
      });
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) 
  {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.main, menu);
      return true;
  }
  public void Toaster(String string)
  {
      Toast.makeText(this, string,Toast.LENGTH_LONG).show();
  }}
  </code></pre>
  
  <p>And my <code>Android</code> <code>Manifest Xml</code> file is as follows:</p>
  
  <pre><code> &lt;?xml version="1.0" encoding="utf-8"?&gt;
   &lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   package="com.sample.dummy.app.senddatathoughserialport"
                                   android:versionCode="1"
                                  android:versionName="1.0" &gt;
   &lt;uses-feature android:name="android.hardware.usb.host" /&gt;
   &lt;uses-sdk android:minSdkVersion="12" /&gt;
   &lt;application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" &gt;
      &lt;activity
          android:name="com.sample.dummy.app.senddatathoughserialport.MainActivity"
          android:label="@string/app_name" &gt;
          &lt;intent-filter&gt;
              &lt;action android:name="android.intent.action.MAIN" /&gt;
              &lt;category android:name="android.intent.category.LAUNCHER" /&gt;
          &lt;/intent-filter&gt;  
          &lt;intent-filter&gt;
              &lt;action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /&gt;
              &lt;action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /&gt;
          &lt;/intent-filter&gt;
  
          &lt;meta-data
              android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
              android:resource="@xml/device_filter" /&gt;
          &lt;meta-data
              android:name="android.hardware.usb.action.USB_DEVICE_DETACHED"
              android:resource="@xml/device_filter" /&gt;        
      &lt;/activity&gt;        
  &lt;/application&gt;&lt;/manifest&gt;
  </code></pre>
  
  <p>I'm getting problem with <code>UsbDevice mDevice;</code> which always shows value of <code>null</code>
  Please give me assistant to make it a successful app.</p>