2012-07-20 42 views
0

我已经在MediaPActivity活动中声明了一个媒体播放器变量,然后想要在第二个活动中暂停或停止它。我已经在第二类中声明了意图,但是当我尝试在MediaPActivity中单击btn1时mediplayer中,第二个活动中的mediaplayer未被暂停/停止。下面给出的代码有什么问题?如何从其他活动中暂停/停止媒体播放器?

public class MediaPActivity extends Activity { 
Button btn, btn1; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    btn = (Button) findViewById(R.id.btn); 
    btn1 = (Button) findViewById(R.id.btn1); 
    btn.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MediaPActivity.this, Second.class); 
      startActivity(i); 
     } 
    }); 
    btn1.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MediaPActivity.this, Second.class); 
      i.setAction(Second.ACTION_PAUSE); 
      } 
    }); 
} 

}

第二活动:

 public class Second extends Activity { 
Button btnplay, btnpause; 
MediaPlayer player; 
public static final String ACTION_PLAY = "com.synapse.test.PLAY"; 
public static final String ACTION_PAUSE = "com.synapse.test.PAUSE"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.second); 

    btnplay = (Button) findViewById(R.id.button1); 
    btnpause = (Button) findViewById(R.id.button2); 
    player = new MediaPlayer(); 
    player = MediaPlayer.create(Second.this, R.raw.testsong_20_sec); 
    btnplay.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      player.start(); 
     } 
    }); 
    btnpause.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      player.pause(); 
     } 
    }); 
} 
@Override 
protected void onNewIntent(Intent intent) { 
    if(intent.getAction().equals(ACTION_PLAY)){ 
       player.start(); 
     } 
    else if(intent.getAction().equals(ACTION_PAUSE)){ 
       player.pause(); 
      } 
     } 

}

Manifest File: 

    <activity 
     android:name=".MediaPActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     </activity> 
     <activity android:name=".Second" android:launchMode="singleTop" /> 
+0

你是什么意思的“不工作”?不显示?请同时发布LogCat – 2012-07-20 07:50:11

+0

的输出让我得到这个正确的,当你尝试通过点击'btn'启动第二个活动时,第二个活动出现在前面,对吧?接下来你想要什么? – 2012-07-20 08:06:44

+1

您为什么不使用服务类来播放和暂停媒体播放器? – rajpara 2012-07-20 08:40:57

回答

0

使MediaPlayer对象Static。 静态变量可以从不同的类访问,并且只能初始化一次。

+0

它没有奏效。 – bkshukla 2012-07-20 08:01:23

0

您不会在您的btn1.ClickListener中调用startActivity()。 当你的活动是SingleTop那么它应该触发onNewIntent

+0

但我不想移动到第二个活动。 – bkshukla 2012-07-20 08:01:11

+0

首先,我点击btn后进入SecondActivity,进入后歌曲继续播放,当我在MediaPActivity上时,我想停止歌曲,如果正在播放,并且没有移动到第二个活动,只需点击btn1即可。 – bkshukla 2012-07-20 08:17:01

0

所有你需要做的就是这段代码添加到您的意图方法:

yourMediaPlayer.pause()

所以整个代码将是:

yourMediaPlayer.pause(); 
Intent i ... 
startActivity(i); 
相关问题