我可以在我的活动中播放声音。 e.g:
public class APP extends Activity {
MediaPlayer btnClick;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnClick = MediaPlayer.create(this, R.raw.button_click);
}
... on Button Click play sound ...
btnClick.start();
...
}
但我不知道如何在课程文件中播放声音?
public class test {
...
}
这不可能吗?我尝试了很多变化。在类文件中,我无法播放声音。
答案 0 :(得分:2)
您只能在测试类中指定mediaPlayer,然后从涉及mediaPlayerSettings的测试类调用该方法。测试类本身无法播放,因为它不会扩展活动。
但是如果你想从类测试中获取方法,请执行以下操作:
public class test
{
private static MediaPlayer mp;
public static void startPlayingSound(Context con)
{
mp= MediaPlayer.create(con, R.raw.sound);
mp.start();
}
//and to stop it use this method below
public static void stopPlayingSound(Context con)
{
if(!mp.isPlaying())
{
mp.release();
mp = null;
}
}
}
因此在Activity中调用它:
//for start
test.startPlayingSound(this);
//and for stop
test.stopPlayingSound(this);
希望它会对你有所帮助。
答案 1 :(得分:1)
您必须将Context
转发给构造函数中的类。
为您的Context
添加一个班级成员:
Context mContext;
然后,添加一个带Context
:
public test (Context c){
mContext = c;
}
使用此构造函数实例化您的类:
Test test = new Test(this); //Assuming you call this in an Activity
最后,如果您想在课堂上播放声音,请使用mContext
作为Context
:
MediaPlayer mp = MediaPlayer.create(mContext, R.raw.button_click);
如果要在FrameLayout中实例化类,请使用以下代码:
Test test = new Test(getContext()); //Assuming you call this in a subclass of FrameLayout