我正在尝试使用此功能合并Android应用程序中的一些mp3文件:

private void mergeSongs(File mergedFile, Vector<InputStream> inputStreams){

    Enumeration<InputStream> enu = inputStreams.elements();

    try {

        SequenceInputStream sis = new SequenceInputStream(enu);

        if(!mergedFile.exists()){
            mergedFile.createNewFile();}

        FileOutputStream fos = new FileOutputStream(mergedFile);

        int temp;

        while ((temp = sis.read())!= -1){

            fos.write((byte)temp);

        }

        for (int i=0; i<inputStreams.size(); i++){

            InputStream fis1 = inputStreams.get(i);

            fis1.close();

        }

        sis.close();
        fos.close();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

这几行代码调用:

Vector<InputStream> inputStreams = new Vector<InputStream>();


    try {

        for (int i=1; i<6; i++){

            InputStream fis1 = getResources().openRawResource(getResources().getIdentifier("a" + i, "raw", getPackageName()));

            inputStreams.add(fis1);

        }


    } catch (Exception e) {
        e.printStackTrace();
    }

    mergeSongs(new File(Environment.getExternalStorageDirectory().getPath() + "/mergedFile.mp3"), inputStreams);

这是有效的,但合并音频的持续时间与第一个音频相同 . 我怎么解决这个问题?

*我试图通过三种不同的方式获得持续时间:1)使用android上的mediaplayer 2)使用android中的MediaMetadataRetriever(并且所有这两个返回相同的错误长度)3)使用Windows资源管理器和Windows媒体播放器返回正确的lenght