Android - 在类文件中播放声音?

时间:2013-07-28 14:45:18

标签: android media-player ogg playsound

我可以在我的活动中播放声音。 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 {
...
}

这不可能吗?我尝试了很多变化。在类文件中,我无法播放声音。

2 个答案:

答案 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