Java 如何获取文件的startOffset作为获取AssetFileDescriptor
我正在使用AssetFileDescriptor通过调用getStartOffset来获取StartOffset,我已将其放置在app raw/assets文件夹中 对于不在assets/raw文件夹中的文件,如何使用File object获得类似的startOffset?但在应用商店中下载,并有一个文件对象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 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进行音频处理和分析。我需要进入超能力构造器。刚才我得到了答案,我会把它贴在这里。非常感谢您的时间和互动