2017-05-12 9 views
0

저는 소리를 재생해야하는 응용 프로그램을 개발 중이며 1GB 크기에 가까운 대용량의 .wav 형식의 소리 파일을 보유하고 있습니다. 나는 확장 파일을 만들기위한 공식 문서를 따랐다.Android APK 확장 파일, .wav 파일을 읽을 수 없습니다.

처음에는 압축이 0 인 .zip 파일을 만들었습니다. 모든 .wav 파일은 하위 폴더없이 (즉, main.1.package에 모든 사운드 파일이 포함되어 있습니다.) .zip 폴더의 이름을 .obb. 그 다음 .obb 파일을 공유 저장소 obb 폴더 아래에있는 .obb 파일 (com.moinul.app는 내 패키지 이름이므로 폴더 이름이므로 확장 파일의 이름은 main.1.com.moinul.app입니다.

try 
    { 
     String param = (String) v.getTag(); 

     ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, 1, 0); 
     AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("p25_1.wav"); 

     MediaPlayer mPlayer = new MediaPlayer(); 
     mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mPlayer.setDataSource(fd.getFileDescriptor()); 
     mPlayer.prepare(); 
     mPlayer.start(); 
    } 
    catch (Exception e) 
    { 
     Log.w(TAG, e.getMessage() + ""); 
     e.printStackTrace(); 
    } 

내가 그 FD가 null 말하는 예외를 얻을 : 내가 널 포인터 예외를 얻을 내 확장 파일에서 파일을 읽을 때 .obb)

문제입니다. 어떤 도움을 주시면 감사하겠습니다. 감사

답변

0

에 한번 사용 : AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("assets/p25_1.wav");

+0

내부에 애셋 폴더가 없습니다. 어쨌든 그것을 시도하자. – aaa111

+0

아쉽게도 운이 없습니다. – aaa111

0

이 `공용 클래스 테스트 시도가 활동을 확장 {

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 


    String TAG = "Test"; 
    Context context = this; 
    try { 
     MediaPlayer mediaPlayer = new MediaPlayer(); 

     ZipResourceFile expansionFile = APKExpansionSupport.getAPKExpansionZipFile(context, 1, 0); 
     AssetFileDescriptor assetFileDescriptor = expansionFile.getAssetFileDescriptor("assets/p25_1.wav"); 

     if (assetFileDescriptor != null) { 
      final FileInputStream fis = assetFileDescriptor.createInputStream(); 
      if (fis != null) { 
       mediaPlayer.setDataSource(fis.getFD()); 
       fis.close(); 
       mediaPlayer.prepare(); 
       mediaPlayer.start(); 
      } else { 
       Log.w(TAG, "/fis: null"); 
      } 
     } 

    } catch (Exception e) { 
     Log.w(TAG, e.getMessage() + ""); 
    } 
} 

}`마침내 일 때문에

+0

코드가 작동하지 않는 경우 파일 확장을 확인해야합니다. 나는 그것이 당신을 도울 수 있기를 바랍니다. http://stackoverflow.com/questions/18929273/how-to-create-obb-file-as-main-apk-expansion-file-using-jobb-tool – Dungnbhut

0

좋아. 변경 후 :

AssetFileDescriptor fd = expansionFile.getAssetFileDescriptor("Sounds/p25_1.wav"); 

이제 작동 중입니다. 그 이상한 내가 압축을하기 전에 폴더 이름 (나는 실제로이 폴더를 압축하고 모든 .wav 아래에있다) 소리를 추가했다. 압축기가 .zip 안에 다른 하위 폴더를 만들었다 고 생각합니다.

어쨌든 도움 주셔서 감사합니다.