2012-09-28 15 views
5

Sto seguendo tutte le guide ufficiali dei file di espansione, ma non riesco a trovarlo. Non riesco ad accedere al file obb obbligatorio che mi serve.Accesso ai file all'interno del file di espansione obb

Ho bisogno di 6 file audio (80Mb) che ho "memorizzato" (non compresso) in un file zip e rinominato come 'main.2001.test.expansion.proj.obb' e memorizzato in '/ mnt/sdcard/Android /obb/test.expansion.proj/'

cercherò di accesso ai file

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

In -> assetFileDescriptor = expansionFile.getAssetFileDescriptor (.....); ho provato tutto quello che ho trovato e trovato in posti diversi, ma non ero in grado di prendere il file. C'è un modo per ottenere il file dal suo nome se è dentro lo zip?

L'app dovrebbe riprodurre questi file in un ordine specifico e non vogliamo decomprimere i file e renderli "" pubblici "".


Modificato. Risposta a me stesso

Trovato, era una riga che non ho capito quando l'ho letto per la prima volta o semplicemente mi manca.

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

può essere questo asnwer vi aiuterà in qualche modo http://stackoverflow.com/questions/11715855/steps-to-create-apk-expansion-file/11717019#11717019 –

+1

No, è una delle fonti i ho usato, ma niente riguardo la lettura di un file all'interno dell'OB. – Jordi

+0

Ho provato 'AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor (zip [0] .mFileName);'. ma 'fd' è nullo. Mi potete aiutare? –

risposta

1

Come suggerito Aarolama Bluenk, ecco il codice di risposta (repited)

trovato, era una linea non ho capito quando ho letto in primo luogo o semplicemente manca.

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

, ricevo un errore come "Crea classe APKExpansionSupport". Devo aggiungere/scaricare qualsiasi libreria. Mi aiuti per favore. –

Problemi correlati