2013-08-21 3 views
0

Я хочу достичь музыки, когда пользователь запускает приложение, и когда пользователь переходит к следующему действию, музыка останавливается (это отлично работает). Однако, когда пользователь выбирает кнопку «Назад», звук должен снова воспроизводиться из главного меню («Активность»). Теперь ничего не происходит, и музыка вообще не играет.Когда задняя клавиша нажата из активности, она должна снова воспроизводить музыку при предыдущем действии.

вот мой код MainActivity.java

import java.util.List; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ActivityManager; 
import android.app.ActivityManager.RunningTaskInfo; 
import android.content.ComponentName; 
import android.content.Context; 
import android.content.Intent; 
import android.content.pm.ActivityInfo; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 
MediaPlayer mp; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    mp = MediaPlayer.create(this, R.raw.audio); 
    mp.setLooping(true); 
    super.onResume(); 
     if(mp != null && !mp.isPlaying()) 
      mp.start(); 
     super.onResume(); 


    Button next = (Button) findViewById(R.id.button1); 

    next.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Introduction.class); 
      startActivityForResult(myIntent, 0); 
      } 

     }); 
    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


@Override 
protected void onPause() { 
if (this.isFinishing()){ //basically BACK was pressed from this activity 
mp.stop(); 
    } 
else{ 

} 
Context context = getApplicationContext(); 
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
List<RunningTaskInfo> taskInfo = am.getRunningTasks(1); 
if (!taskInfo.isEmpty()) { 
ComponentName topActivity = taskInfo.get(0).topActivity; 
if (!topActivity.getPackageName().equals(context.getPackageName())) { 
    mp.stop(); 

} 
else { 
    mp.stop(); 
} 
} 
    super.onPause(); 

} 
} 

И вот мой код Introduction.java

import android.app.Activity; 
import android.content.pm.ActivityInfo; 
import android.os.Bundle; 

public class Introduction extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.introduction); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

} 
} 

Должен ли я добавить что-то в классе введения или нет? Любая помощь будет принята с благодарностью!

ответ

0

у вас есть знакомый, которого вы называете super.onResumen внутри onCreate.

попытаться переопределить onResumen и поставить все ваши сотрудник там:

@Override 
public void onResumen(){ 
super.onResume(); 
mp = MediaPlayer.create(this, R.raw.audio); 
mp.setLooping(true); 

    if(mp != null && !mp.isPlaying()) 
     mp.start(); 

} 

becouse onResumen это вызов каждый раз, когда деятельность приходит на передний план снова

+0

Большое спасибо !!!!! Оно работает!!! – Allrounder

+0

, пожалуйста, проверьте ответ – Xenione

0

Поскольку вы начинаете Введение деятельность с startActivityForResult(), в MainActivy.java, переопределить метод onActivityResult(int requestCode, int resultCode, Intent data). Внутри этого метода вы можете снова запустить музыку.

@Override onActivityResult (int requestCode, int resultCode, Intent data) 
{ 
    if(mp != null && !mp.isPlaying()) 
     mp.start(); 
} 
Смежные вопросы