2012-07-20 47 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); 
相關問題