2013-08-04 25 views
0

如何从不是活动的类启动MediaPlayer?我需要一个参考我的MainActivity从另一个类开始MediaPlayer

MediaPlayer mp = MediaPlayer.create([WhatToPutHere], R.raw.cpiano); 
    mp.start(); 

回答

0

创建媒体播放器为public static,并通过使用类名称和媒体播放器对象就可以开始你永远想去的地方你的媒体播放器,无论是在Java类或一个活动。

+0

你的意思是使用一个类名的媒体播放器? – Stupe

+0

当您在类的外部使用公共静态变量或对象时,您需要给出类名MainActivity.mp.start(); –

+0

以及我必须在[WhatToPutHere]中放置什么? – Stupe

0

是的,当然可以。这是一个例子:

class mMP { 
     private Context _context; 
     private _resId; 
     public mMP(Context context,int resId){ 
      this._context=context; 
      this._resId=resId; 
     } 
     public void playSong(){ 
      MediaPlayer mp=MediaPlayer.create(_context, _resId); 
      if(mp!=null) 
       mp.start(); 
     } 
    } 

然后从活动,服务或广播接收器称之为:

new mMP(this,id).playSong(); 

或使静态无效的,如:从活动

class yourClass{public static void playMusic(Context c,int resId){MediaPlayermp=MediaPlayer.create(c,resId);if(mp!=null) mp.start()}} 

然后调用你的函数。 .. yourClass.playMusic(this,resId);

+0

但我不想从活动中调用它。我需要从一个对象中调用它 – Stupe

0

它被引用到一个活动,所以你可以在活动类:

public static Activity activity; 

然后在您的类,你可以得到活动:

MediaPlayer mediaPlayer = MediaPlayer.create(ActivityClassName.activity, R.); 
mediaPlayer.start();