2011-08-23 146 views
2

我對Android開發非常陌生,想知道如何在廣播接收器中播放SoundPool聲音?Android編程 - 如何從廣播接收器播放SoundPool聲音?

我在某處讀過使用SoundPool播放聲音的方式,但我不知道如何正確設置它。

我在我的Eclipse res \ raw文件夾中有一些聲音文件,例如wave和mp3文件。我想播放一個名爲half.wav的文件

你能展示我需要放置到我的broadcastreceiver的示例代碼嗎?

這是第一次嘗試代碼,但我得到一個錯誤,聲明soundID = soundPool.load(this,R.raw.half,1);

「的方法裝載(上下文,INT,INT)式的Soundpool是不適用......」

下面是類代碼:

package ChimeMe.BigBen; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 
import android.os.Bundle; 

import android.media.AudioManager; 
import android.media.SoundPool; 
import android.media.SoundPool.OnLoadCompleteListener; 

public class AlarmReceiver extends BroadcastReceiver { 

private SoundPool soundPool; 
private int soundID; 
boolean loaded = false; 

@Override 
public void onReceive(Context context, Intent intent) { 

    try { 

     // Load the sound 
     soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 
     soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { 
      @Override 
      public void onLoadComplete(SoundPool soundPool, int sampleId, 
        int status) { 
       loaded = true; 
      } 
     }); 

     soundID = soundPool.load(this, R.raw.half, 1); 

     Toast.makeText(context, "This is the alarm.", Toast.LENGTH_SHORT) 
       .show(); 

    } catch (Exception e) { 
     Toast.makeText(
       context, 
       "There was an error somewhere, but we still received an alarm", 
       Toast.LENGTH_SHORT).show(); 
     e.printStackTrace(); 

    } 
} 

} 

在此先感謝。

誠然, 伊馬德

回答

4

如果你要玩,我認爲使用MediaPlayer的會更快,更容易只是一個聲音......

這是我的一個應用程序,播放碼當這個廣播接收器運行時每30分鐘發出一聲蜂鳴聲

public class Gameloop extends BroadcastReceiver { 
    MediaPlayer mp = null;// Here 
    private static final String TAG = "VPET"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d(TAG, "Loop running"); 
     if (Pet.isAlive == true) { 

      mp = MediaPlayer.create(context, R.raw.beep);//Onreceive gives you context 
      mp.start();// and this to play it 

     } else { 

     } 
    } 


} 

} 
+0

感謝Pheonix2105的編碼樣本。 :-) –