5

すべての公式の拡張ファイル ガイドに従っていますが、見つかりません。必要な obb ファイルにアクセスできません。

zipファイルに「保存」(非圧縮)し、「main.2001.test.expansion.proj.obb」という名前に変更して「/mnt/sdcard/Android/obb/test」に保存した6つのオーディオファイル(80Mb)が必要です.expansion.proj/'

ファイルにアクセスしてみます

String mainFileName = Helpers.getExpansionAPKFileName(this,true,2001);
if(!Helpers.doesFileExist(this, mainFileName, 27959282L, false))
{
    //download
} else {
    Log.d("test_file","file exist");
}

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null)
{
    ZipEntryRO[] ziro = expansionFile.getAllEntries();
    for (ZipEntryRO entry : ziro) {
        Log.d("test_files_zip", "fileZip filename: "+entry.getZipFileName());
        try{
            AssetFileDescriptor ro = entry.getAssetFileDescriptor();
            Log.d("test_files_zip", "--fileZip getfiledescriptor.tostring: "+ro.getFileDescriptor().toString());
            Log.d("test_files_zip", "--fileZip createinputstring.tostring: "+ro.createInputStream().toString());

            AssetFileDescriptor assetFileDescriptor = expansionFile.getAssetFileDescriptor(entry.getZipFileName()+"/audio02.mp3");
            if(assetFileDescriptor!=null) {
                Log.d("test_files_mp3", "length: "+assetFileDescriptor.getLength()); //checking it exists
            }
        }catch (IOException e){ Log.e("test_exp","IoExcp: "+e.getMessage()); }
    }
}

で -> assetFileDescriptor = ExpansionFile.getAssetFileDescriptor(.....); さまざまな場所で見つけて見つけたすべてを試しましたが、ファイルを取得できませんでした。ファイルがzip内にある場合、その名前からファイルを取得する方法はありますか?

アプリはこれらのファイルを特定の順序で再生する必要があり、ファイルを解凍して「公開」したくありません。


編集しました。自分に答える

見つかった、最初に読んだときに理解できなかった、または単に見逃した行でした。

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null){
        FileDescriptor fd = expansionFile.getAssetFileDescriptor("audio_01.mp3");
        //or
        InputStream is = expansionFile.getInputStream("audio_01.mp3");
    }
4

1 に答える 1

1

Aarolama Bluenkが示唆したように、ここに回答コードがあります(繰り返し)

見つかった、最初に読んだときに理解できなかった、または単に見逃した行でした。

ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(this,2001,2001);
if(expansionFile!=null){
        FileDescriptor fd = expansionFile.getAssetFileDescriptor("audio_01.mp3");
        //or
        InputStream is = expansionFile.getInputStream("audio_01.mp3");
}
于 2013-03-17T18:57:58.563 に答える