2014-10-28 39 views
0

我從另一個班級使用意向調用這個班級,我想在班級的負載上播放這首歌曲「song.ogg」..請幫助我如何?聲音沒有在負載上鳴響的意圖

public class DetlsActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.detls_layout); 

     getActionBar().setDisplayHomeAsUpEnabled(true); 

     SoundPool soundPool; 
     int soundID; 
     soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
     soundID = soundPool.load(this,R.raw.song, 1); 
     AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); 
     //soundPool.play(soundID,1f,1f,1,0,1f); 
     Toast.makeText(this,"Ringing Song",Toast.LENGTH_LONG).show(); 
     try { 
     AssetFileDescriptor assetFileDescriptor = this.getAssets().openFd("song.ogg"); 
     soundPool.load(assetFileDescriptor,1); 
      Toast.makeText(this,"Played",Toast.LENGTH_LONG).show(); 
     } 
     catch (Exception e) { 
      Log.d("LOGCAT","Exception Song"); 
     } 
+0

您是否在LogCat中遇到任何異常? – aProgrammer 2014-10-28 06:49:07

+0

不,我沒有得到任何異常,所以這段代碼是否正確? – Makwana 2014-10-28 06:51:07

+0

我得到這個烤麪包「Ringing Song」,但不是烤麪包「播放」 – Makwana 2014-10-28 07:20:17

回答

0
SoundPool soundPool; 
    int soundID; 
    soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
    Toast.makeText(this,"Ringing Song",Toast.LENGTH_LONG).show(); 
    try { 
     soundID = soundPool.load(this,R.raw.song, 1); 
     int waitLimit = 1000; 
     int waitCounter = 0; 
     int throttle = 10; 
     while(soundPool.play(soundID, 1.f, 1.f, 1, 0, 1.f) == 0 && waitCounter < waitLimit) 
      {waitCounter++; SystemClock.sleep(throttle);} 
     Toast.makeText(this,"Played "+soundID,Toast.LENGTH_LONG).show(); 

    } 
    catch (Exception e) { 
     Log.d("LOGCAT","Exception Song"); 
     Toast.makeText(this,"Exception "+e,Toast.LENGTH_LONG).show(); 
    } 

上面的代碼替換代碼。當前的代碼發出警告 soundpool樣品1沒有準備好所以檢查這個使用while條件。

在這裏,您的資源是在原始文件夾,這就是爲什麼我們使用soundID = soundPool.load(this,R.raw.song, 1);。如果您的資源當時位於資產文件夾中,則可以使用soundID = soundPool.load(getAssets().openFd("song.ogg"),1);

+0

謝謝Dude ..工作非常好:) – Makwana 2014-10-28 12:47:54