我有一个扩展BaseActivity的Activity,在BaseActivity中它还创建了一个线程,以便在不同线程中的所有活动中播放MediaPlayer,这是我的代码:
在我的MainActivity中:
public class MainActivity extends BasedActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
beginBGMusic();
}
}
在我的BasedActivity中:
public class BasedActivity extends AppCompatActivity {
MediaPlayer BGMusicPlayer;
Thread BGMusic;
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
protected void beginBGMusic(){
BGMusic = new Thread(){
public void run(){
BGMusicPlayer = MediaPlayer.create(this,R.raw.music.mp3);
}
};
BGMusic.start();
}
}
但是,MediaPlayer.create()需要一个上下文,如果它在Thread中以及在另一个类中,则我不明白如何设置上下文。
有谁知道如何用我的方法解决问题?
谢谢!
最佳答案
/**
* Class MediaManager created on 11/07/16 - 4:01 PM.
* All copyrights reserved to the Zoomvy.
* Class behaviour is to initialize and play a media file on notification
*/
public class MediaManager {
/**
* SingleTon instance
*/
private static MediaManager sInstance;
private Context mContext;
private MediaManager(Context context) {
mContext = context.getApplicationContext();
}
public static MediaManager getInstance(Context context) {
if (null == sInstance) {
synchronized (MediaManager.class) {
sInstance = new MediaManager(context);
}
}
return sInstance;
}
}
上面是媒体管理器的单例类,您可以在此处进一步定义媒体播放器引用,它是所有活动的单个实例。
但是我仍然建议使用服务而不是线程here,您可以找到MediaService的示例示例。
关于android - 在所有 Activity 中播放MediaPlayer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40809651/