2015-08-20 61 views
1

我有两个屏幕Main.javaHome.javaMain.java有按钮点击用户登录。更改屏幕后停止MediaPlayer

Main.java上登录按钮用户点击后是什么样的事情发生顺序:

  1. 按钮播放声音。
  2. 凭据与Microsoft SQL Server的数据库进行匹配
  3. 启动一个新的意向Home.java

Home.javaonCreate(Bundle),我创建了一个新的线程在后台播放的声音:

// Media Player 
Runnable backgroundSound = new Runnable() { 
    @Override 
     public void run() { 
      MediaPlayer mediaPlayer1= MediaPlayer.create(Home.this, R.raw.welcome_message); 
     mediaPlayer1.start(); 
      MediaPlayer mediaPlayer2= MediaPlayer.create(Home.this, R.raw.welcome_tone); 
     mediaPlayer2.start(); 
     } 
}; 

Thread media = new Thread(backgroundSound); 
media.start(); 
// Media Player 

但,如果我按下返回键,这个声音继续播放。即使我退出应用程序,此声音仍会继续播放。我应该怎么做,以便如果屏幕更改(后退按钮,退出应用程序或其他应用程序,电话事件的中间按钮发生),则应停止此声音。

知道这是线程media.stop可能不是好的选择。由于suspend()stop()都已弃用,我该怎么办?中断这个线程?或者是其他东西?什么应该停止这个线程在屏幕的变化(我上面讨论)

注意:我没有粘贴太多的源代码(所有java文件)。我认为可能没有必要在这里提供所有不需要的内容。如果它缺少任何细节,请告诉我我将编辑该问题。

回答

2

首先,给你的媒体播放器的静态媒体播放器参考objects.Then实现onBackPressed()你activity.in该方法写下面提供的代码中。

if(mediaPlayer1.isPlaying()) 
mediaPlayer1.stop(); 
if(mediaPlayer2.isPlaying()) 
mediaPlayer2.stop(); 

完整代码会是这样

public class Home extends Activity { 
public static MediaPlayer mediaPlayer1,mediaPlayer2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // Media Player 
Runnable backgroundSound = new Runnable() { 
@Override 
    public void run() { 
     mediaPlayer1= MediaPlayer.create(Home.this, R.raw.welcome_message); 
    mediaPlayer1.start(); 
     mediaPlayer2= MediaPlayer.create(Home.this, R.raw.welcome_tone); 
    mediaPlayer2.start(); 
    } 
}; 

Thread media = new Thread(backgroundSound); 
media.start(); 
// Media Player 

} 
@Override 
public void onBackPressed() 
{ 
    if(mediaPlayer1.isPlaying()) 
mediaPlayer1.stop(); 
if(mediaPlayer2.isPlaying()) 
mediaPlayer2.stop(); 
    super.onBackPressed();  
} 
} 
-2

您可以使用活动生命周期。就像暂停你停止媒体播放器一样。并且在简历中你再次播放它。 您也可以覆盖活动中的onbackpressed功能。一旦点击了返回,就停止了音乐。

@Override 
    public void onBackPressed() 
    { 
     // TODO stop the music 
     super.onBackPressed();  
    } 
+0

请你给我一个完整的答案。这只是后面的按钮按下。另外我问我应该触摸线程?或MediaPlayer()? – AbhimanyuAryan