2011-11-12 91 views
4

我目前在android項目的原始文件夾中有一組媒體文件,它們在使用mediaplayer類進行調用時可以快速加載並播放。我需要添加這些文件的更多變體並將它們歸類到文件夾中,但顯然原始文件夾不支持文件夾。我能否從資產文件夾快速加載這些文件並使用mediaplayer播放它們?如果是這樣,怎麼樣?播放位於資產文件夾中的媒體文件

回答

6

我有這種方法,通過擴展的文件夾中返回資源文件夾內的所有文件:

public static String[] getAllFilesInAssetByExtension(Context context, String path, String extension){ 
     Assert.assertNotNull(context); 

     try { 
      String[] files = context.getAssets().list(path); 

      if(StringHelper.isNullOrEmpty(extension)){ 
       return files; 
      } 

      List<String> filesWithExtension = new ArrayList<String>(); 

      for(String file : files){ 
       if(file.endsWith(extension)){ 
        filesWithExtension.add(file); 
       } 
      } 

      return filesWithExtension.toArray(new String[filesWithExtension.size()]); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     return null; 
    } 

,如果你把它用:

getAllFilesInAssetByExtension(yourcontext, "", ".mp3"); 

這將返回資產文件夾根目錄中的所有mp3文件。

,如果你把它用:

getAllFilesInAssetByExtension(yourcontext, "somefolder", ".mp3"); 

,這將在「somefolder」搜索mp3文件

現在你有列表中的所有文件,打開你需要這樣的:

AssetFileDescriptor descriptor = getAssets().openFd("myfile"); 

要播放文件只需要:

MediaPlayer player = new MediaPlayer(); 

long start = descriptor.getStartOffset(); 
long end = descriptor.getLength(); 

player.setDataSource(this.descriptor.getFileDescriptor(), start, end); 
player.prepare(); 

player.setVolume(1.0f, 1.0f); 
player.start(); 

希望這會有所幫助

5

這是一個可以從資產文件夾播放媒體文件的功能。你還可以用水木清華這樣使用它play(this,"sounds/1/sound.mp3");

private void play(Context context, String file) { 
    try { 
     AssetFileDescriptor afd = context.getAssets().openFd(file); 
     meidaPlayer.setDataSource(
       afd.getFileDescriptor(), 
       afd.getStartOffset(), 
       afd.getLength() 
      ); 
     afd.close(); 
     meidaPlayer.prepare(); 
     meidaPlayer.start(); 
    } catch (IllegalArgumentException e) { 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
0

您可以將您的mp3文件放在:res/raw文件夾中作爲myringtone.mp3或作爲您的願望。

MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.myringtone); 
mediaPlayer.start(); 
相關問題