title: Concatenate two audio files and play resulting file
body: <p>I am really facing problem from last couple of days but I am not able to find the exact solution please help me.</p>
  
  <p>I want to merge two .mp3 or any audio file and play final single one mp3 file. But when I am combine two file the final file size is ok but when I am trying to play it just play first file, I have tried this with <code>SequenceInputStream</code> or byte array but I am not able to get exact result please help me.</p>
  
  <p>My code is the following: </p>
  
  <pre><code>public class MerginFileHere extends Activity {
  public ArrayList&lt;String&gt; audNames;
  byte fileContent[];
  byte fileContent1[];
  FileInputStream ins,ins1;
  FileOutputStream fos = null;
  String combined_file_stored_path = Environment
          .getExternalStorageDirectory().getPath()
          + "/AudioRecorder/final.mp3";
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      // TODO Auto-generated method stub
      super.onCreate(savedInstanceState);
  
      setContentView(R.layout.activity_main);
      audNames = new ArrayList&lt;String&gt;();
      String file1 = Environment.getExternalStorageDirectory().getPath()
              + "/AudioRecorder/one.mp3";
  
      String file2 = Environment.getExternalStorageDirectory().getPath()
              + "/AudioRecorder/two.mp3";
  
      File file = new File(Environment.getExternalStorageDirectory()
              .getPath() + "/AudioRecorder/" + "final.mp3");
  
      try {
          file.createNewFile();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  
      audNames.add(file1);
      audNames.add(file2);
  
      Button btn = (Button) findViewById(R.id.clickme);
      btn.setOnClickListener(new OnClickListener() {
  
          @Override
          public void onClick(View arg0) {
              // TODO Auto-generated method stub
              createCombineRecFile();
          }
      });
  }
  
  public void createCombineRecFile() {
      // String combined_file_stored_path = // File path in String to store
      // recorded audio
  
      try {
          fos = new FileOutputStream(combined_file_stored_path, true);
      } catch (FileNotFoundException e1) {
          // TODO Auto-generated catch block
          e1.printStackTrace();
      }
  
          try {
              File f = new File(audNames.get(0));
              File f1 = new File(audNames.get(1));
              Log.i("Record Message", "File Length=========&gt;&gt;&gt;" + f.length()+"-------------&gt;"+f1.length());
  
  
              fileContent = new byte[(int) f.length()];
              ins = new FileInputStream(audNames.get(0));
              int r = ins.read(fileContent);// Reads the file content as byte
  
              fileContent1 = new byte[(int) f1.length()];
              ins1 = new FileInputStream(audNames.get(1));
              int r1 = ins1.read(fileContent1);// Reads the file content as byte
                                              // from the list.
  
  
  
  
  
  
              Log.i("Record Message", "Number Of Bytes Readed=====&gt;&gt;&gt;" + r);
  
              //fos.write(fileContent1);// Write the byte into the combine file.
  
  
              byte[] combined = new byte[fileContent.length + fileContent1.length];
  
              for (int i = 0; i &lt; combined.length; ++i)
              {
                  combined[i] = i &lt; fileContent.length ? fileContent[i] : fileContent1[i - fileContent.length];
              }
              fos.write(combined);
              //fos.write(fileContent1);*
  
  
  
          } catch (FileNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
  
      try {
          fos.close();
          Log.v("Record Message", "===== Combine File Closed =====");
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
  }
  }
  </code></pre>