2012-09-28 13 views
5

Estoy siguiendo todas las guías oficiales de archivos de expansión, pero no puedo encontrarlo. No puedo acceder al archivo OBB contenido que necesito.Accediendo a archivos dentro del archivo de expansión obb

Necesito 6 archivos de audio (80Mb) que "almacené" (descomprimido) en un archivo zip y renombré como 'main.2001.test.expansion.proj.obb' y almacené en '/ mnt/sdcard/Android /obb/test.expansion.proj/'

voy a tratar de acceder a los archivos

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()); } 
    } 
} 

En -> assetFileDescriptor = expansionFile.getAssetFileDescriptor (.....); He intentado todo lo que descubrí y encontré en diferentes lugares, pero no pude tomar el archivo. ¿Hay alguna manera de obtener el archivo de su nombre si está dentro del zip?

La aplicación debe reproducir estos archivos en un orden específico y no queremos descomprimir los archivos y hacerlos "" públicos "".


Editado. Responda a mí mismo

Encontrado, era una línea que no entendí cuando la leí por primera vez o simplemente la extraño.

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"); 
    } 
+0

puede haber este asnwer le ayudará de alguna manera http://stackoverflow.com/questions/11715855/steps-to-create-apk-expansion-file/11717019#11717019 –

+1

No, es una de las fuentes i lo he usado, pero nada acerca de leer un archivo dentro del obb. – Jordi

+0

Intenté 'AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor (zip [0] .mFileName);'. pero 'fd' es nulo. ¿me puedes ayudar? –

Respuesta

1

Como sugirió Aarolama Bluenk, aquí está el código de respuesta (repited)

encontrado, era una línea que no entendía cuando yo leí en primer lugar, o simplemente me lo echo de menos.

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"); 
} 
+0

, aparece un error como "Crear clase APKExpansionSupport". ¿Debo agregar/descargar cualquier biblioteca? Por favor, ayúdame. –

Cuestiones relacionadas