2012-08-28 108 views
2

我有這樣的代碼:機器人:MEDIAPLAYER創建

package com.example.pr; 

import android.media.MediaPlayer; 

public class Audio{ 

    MediaPlayer mp; 

    public void playClick(){ 
     mp = MediaPlayer.create(Audio.this, R.raw.click); 
     mp.start(); 
    } 
} 

我有一個錯誤在「創建」與此消息「的方法,創建(上下文,INT)中的類型的MediaPlayer是不適用的參數( Audio,int)「

爲什麼?

+1

音頻就是一個類不活動,以便audio.this不會有助於情境 –

回答

11

MediaPlayer.create()需要一個上下文作爲第一個參數。通過當前活動它應該工作。

嘗試:

public void playClick(Context context){ 
    mp = MediaPlayer.create(context, R.raw.click); 
    mp.start(); 
} 
在活動

audio = new Audio(); 
... 
audio.playClick(this); 

,但不要忘記呼籲MediaPlayer的情況下,一旦釋放的聲音已經完成,否則你會得到一個異常。

但是,無論如何,使用SoundPool播放短點擊可能會更好。

+0

Audio是不活動,這是我用來管理音頻的一個單獨的類,實際上我通過Audio.this – CrazyDev

1
public class Audio{ 

    MediaPlayer mp; 
Context context; 

    public Audio(Context ct){ 
    this.context = ct; 
} 
    public void playClick(){ 
     mp = MediaPlayer.create(context, R.raw.click); 
     mp.prepare(); 
     mp.start(); 
    } 

從你的活動:

Audio audio = new Audio(YourActivity.getApplicationContext()); 
audio.playClick(); 
+5

創建已經做好準備。 'MediaPlayer.create(context,R.raw.click).start();' –

1

試試這個

mp = MediaPlayer.create(getActivity().getApplicationContext(), R.raw.click);