Java 如何获取文件的startOffset作为获取AssetFileDescriptor

Java 如何获取文件的startOffset作为获取AssetFileDescriptor,java,android,file,Java,Android,File,我正在使用AssetFileDescriptor通过调用getStartOffset来获取StartOffset,我已将其放置在app raw/assets文件夹中 对于不在assets/raw文件夹中的文件,如何使用File object获得类似的startOffset?但在应用商店中下载,并有一个文件对象 AssetFileDescriptor fd0 = getResources().openRawResourceFd(R.raw.lycka); AssetFileDescriptor f

我正在使用AssetFileDescriptor通过调用getStartOffset来获取StartOffset,我已将其放置在app raw/assets文件夹中

对于不在assets/raw文件夹中的文件,如何使用File object获得类似的startOffset?但在应用商店中下载,并有一个文件对象

AssetFileDescriptor fd0 = getResources().openRawResourceFd(R.raw.lycka);
AssetFileDescriptor fd1 = getResources().openRawResourceFd(R.raw.nuyorica);

fileAoffset = (int)fd0.getStartOffset();
fileAlength = (int)fd0.getLength();
fileBoffset = (int)fd1.getStartOffset();
fileBlength = (int)fd1.getLength();

File file = new File("data/user/0/com.myapp.com/files/audio/-LGHK12NDo83k9pHakIZ.m4a");
long fileLen = file.length();
// i want startOffset from File object as getting in AssetFileDescriptor

如果您想使用文件路径设置StartOffset,可以使用下面的代码

    AssetFileDescriptor afd = null;
    try {
        AssetManager manager = context.getAssets();
        afd = manager.openNonAssetFd(fileName);
        return new long[] { afd.getParcelFileDescriptor().detachFd(),
                            afd.getStartOffset(),
                            afd.getLength() };
    } catch (IOException e) {

        if (!e.getMessage().equals("") && !e.getMessage().equals(fileName)) {
            Log.e(LOGTAG, "Error while loading asset " + fileName + ": " + e);
        }
        return new long[] {-1, -1, -1};
    } 

同意,我需要它在C++代码中使用它。我正在使用AssetFileDescriptor。但不知道如何获取那些不在资产文件夹中,但在应用程序存储中作为代码的文件。我正在使用superpowered进行音频处理和分析。我需要进入超能力构造器。刚才我得到了答案,我会把它贴在这里。非常感谢您的时间和互动