1. 程式人生 > >Android學習:為按鍵新增聲音

Android學習:為按鍵新增聲音

轉自:http://blog.csdn.net/lissdy/article/details/8392961

為程式的按鈕新增按鍵聲音能更好的親和使用者,產生更好的使用體驗,下面就是為按鍵新增聲音的方法:

public class MainActivity extends Activity { 
    private Button mButton01; 
    private SoundPool sp;//宣告一個SoundPool 
    private int music;//定義一個整型用load();來設定suondID  

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        mButton01=(Button)findViewById(R.id.mButton01); 
        sp= new SoundPool(10, AudioManager.STREAM_SYSTEM, 5);//第一個引數為同時播放資料流的最大個數,第二資料流型別,第三為聲音質量 
        music = sp.load(this, R.raw.start, 1); //把你的聲音素材放到res/raw裡,第2個引數即為資原始檔,第3個為音樂的優先順序 

        mButton01.setOnClickListener(new OnClickListener(){ 
            @Override 
           public void onClick(View v) { 
             sp.play(music, 1, 1, 0, 0, 1); 
       }
    }
  }
}
在實現的過程中,我發現不同的Android機器對聲音資原始檔的格式要求不同

當聲音資原始檔格式為wma時,Android虛擬機器上測試,按鍵可以發出聲音。

在真機上測試(魅族M9),logcat顯示如下:

Unable to load sample: (null)

W/SoundPool sample 1 not READY

按下按鍵並沒有聲音。

查詢資料發現,在使用SoundPool時,不同的機器對檔案格式要求不同。

於是將資原始檔轉為mp3格式型別,但是測試發現,這次的情況恰恰相反,即真機可以播放,虛擬機器不行。

想到之前所做專案中,聲音資源的格式為ogg,沒有出現過類似問題。果斷轉換、、進行測試,真機、虛擬機器都可以啦!!!大笑