2014-10-28 38 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