播放来自不同班级的音频?

时间:2015-11-12 02:53:58

标签: java android performance android-activity static-methods

我有15个左右的活动。他们每个人都有一个方法,我想用这种方法播放音频。现在,我有明显的选择将以下代码行复制并粘贴到我的每一项活动中现在,如果我想要改变某些内容,我将不得不重新进入我的每一项活动再次。这是代码:

MediaPlayer pop = MediaPlayer.create(CurrentActivity.this, R.raw.pop);
        pop.start();

因此,在网上搜索了几个小时之后,我发现大多数人只会将其复制并粘贴到每个活动中。所以,我把代码行(上面)放到一个单独的java类中(顺便说一下,这是一个服务)每次我需要播放音频时都试图在服务中调用该方法。所以,我做了以下几点:

public class TwentySeconds extends Service{
   public void myPop(View view){
    MediaPlayer pop = MediaPlayer.create(TwentySeconds.this, R.raw.pop);
    pop.start();
   }
}

现在,我收到错误non static method cannot be referenced from static context。所以,当然,我尝试制作方法myPop static。然后,我在TwentySeconds.this上收到有关从静态上下文引用的错误。所以,我似乎陷入困境。将方法更改为静态无法正常工作,因为我正在尝试使用类的实例以及this。那么,我应该如何调用myPop可以成功播放的方法MediaPlayer

感谢您的建议,

1 个答案:

答案 0 :(得分:1)

通常情况下,如果实用程序方法需要Context,则会传入。

public class Utilities {
    public static void myPop(Context context){
        MediaPlayer pop = MediaPlayer.create(context, R.raw.pop);
        pop.start();
    }
}
Utilities.myPop(CurrentActivity.this);