我有一个扩展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/

10-11 22:54
查看更多