2017-03-11 75 views
-1

我想從資產中讀取我的聲音,這是一個遊戲,可以播放聲音來猜測。 現在我的聲音在原始文件夾中,現在我想從資源中讀取它們。 我谷歌它也是我發現了一些代碼工作正常,但我可以只讀第一聲。從資產文件夾中讀取聲音中的playnig聲音

走在我的代碼一看:

在這裏,我從原材料閱讀:

int sound_id = mContext.getResources().getIdentifier(SoundFile, "raw", 
       mContext.getPackageName()); 
     soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
      @Override 
      public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { 
       loaded = true; 
      } 
     }); 
     soundID = soundPool.load(this, sound_id, 1); 

這裏我用的代碼,但它只是發揮出自己的第一部有聲

private static void initiate() { 
    XmlPullParserFactory pullParserFactory; 
    try { 
     pullParserFactory = XmlPullParserFactory.newInstance(); 

     XmlPullParser parser = pullParserFactory.newPullParser(); 

     InputStream in_s = G.context.getAssets().open("temp.xml"); 
     parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false); 
     parser.setInput(in_s, null); 
     routpic.parseXML(parser); 
    } catch (XmlPullParserException e) { 

     e.printStackTrace(); 
     Log.i("EROR", "nabod"); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.i("EROR", "nabod"); 

    } 
    array_audio.clear(); 
    for (int i = 0; i < routpic.names.size(); i++) { 
     array_audio.add(routpic.names.get(i)); 
     Log.i("LOG2", "" + routpic.names.get(i)); 
    } 


} 
private void play(int index) { 
    mediaPlayer.release(); 
    index++; 
    index=soundID; 
    String s = "mp3/a" + index + ".mp3"; 
    //Resources resources = getResources(); 

    AssetFileDescriptor afd; 
    try { 
     afd = getAssets().openFd(s); 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

,並在我的資產:

<mp3> 
    <name>1</name> 
</mp3> 

回答

0

我得到答案我取消了soundpool,並使用madiapalayer。 並以這種方式我從資產文件夾中讀取我的音樂。 我把我的音樂的MP3文件夾喜歡這裏:

AssetFileDescriptor afd; 
     try { 
      afd = getAssets().openFd("mp3/" + "a" + lvl + ".mp3"); 
      mediaPlayer = new MediaPlayer(); 
      mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); 
      mediaPlayer.prepare(); 
      //mediaPlayer.start(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

和之後,我輕鬆地開始我的mediapalayer。