마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

고수님! 도와주시면 감사합니다!!ㅠ)노래1 재생되는 1액티비티에서 다른 2액티비티로 넘어갈때 노래가 멈추고 다시 1액티비티로 갈때 다시 노래 재생되게 만들고 십습니다....ㅠㅠ

–1 추천

노래1 재생되는 1액티비티에서 다른 2액티비티로 넘어갈때 노래가 멈추고 다시 1액티비티로 갈때 다시 노래 재생되게 만들고 싶습니다..ㅠㅠ

 

게임처럼

 

배경노래가 재생되는 메인액티비티에서 설명글 버튼 또는 게임시작버튼을 클릭해서 다른 액티비티로 가면 배경노래가 멈추고 다시 메인 액티비티에 가면 배경노래가 다시 처음부터 재생하게 하고 싶습니다...ㅠㅠ  

 

 

하지만 지금은 배경음악이 재생되는 메인액티비티에서 설명글 버튼과 게임시작버튼을 클릭해서 다른 액티비티로 가면 배경노래가 멈추고 다시 메인 액티비티에 가면 배경노래가 아에 안나옵니다..ㅜㅠㅠ

 

그 방법을 몇일동안 붙잡고 구글과 GitHub에서 다양하게 알아봐서 해보아도 잘 안됩니다..ㅠㅠ 

고수님..! 도와주시면 정말정말 감사합니다!!ㅠㅠ

 

============================================================

package com.example.qlrdk.gamebasic5;


import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class Activity1 extends AppCompatActivity {

    /*
     * 배경음악을 위해서 MediaPlayer클래스를 사용한다.
     * 본 예제에서는 배경 음악파일로 e.wav파일을 사용하기 위해 [raw] 폴더에 넣었다.
     * */


    //  1. MediaPlayer 클래스를 사용하기 위해 객체를 하나 만들고
    //    객체 명을 backMusic으로 하였다.
    MediaPlayer backMusic;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout1);
        Button b = (Button)findViewById(R.id.button01);  // 게임 시작 버튼
        Button a = (Button)findViewById(R.id.button02);  // 게임 설명글 버튼

        /*
         *  2. create 메소드를 활용해서 [rew] 폴더에 있는 a.wav파일을 로드한다.
         *
         *  3. setLooping 메소드 안에 true 값을 넣으면 무한반복으로 재생이 되고 false 값을 넣으면
         * 한번만 실행된다.
         *
         *  4. start() 메소드를 이용해서 배경음악을 재생하면 된다.
         * */

        backMusic = MediaPlayer.create(this,R.raw.e);
        backMusic.setLooping(true); //노래를 무한반복으로 나오게하기  (true와 false로 조정 가능)
        backMusic.start();  // 재생하기


        b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Activity1.this,
                        com.example.qlrdk.gamebasic5.MainActivity.class);
                startActivity(intent);

                backMusic.stop();
//                backMusic.release();
            }


        });

        a.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Activity1.this,
                        com.example.qlrdk.gamebasic5.Instruction.class);
                startActivity(intent);

                backMusic.stop();
//                backMusic.release();
            }


        });





    }



    public void open(View view) {


        //빌더 객체를 생성한다.
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);

        alertDialogBuilder.setMessage("게임을 종료하겠습니까?"); // 대화 상자의 메시지 부분 설정

        // 대화 상자의 "yes" 버튼 부분 설정
        alertDialogBuilder.setPositiveButton("네",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        Toast.makeText(Activity1.this,"게임이 종료되였습니다.",
                                Toast.LENGTH_LONG).show();
                        finish();
                    }
                });

        // 대화 상자의 "no" 버튼 부분 설정
        alertDialogBuilder.setNegativeButton("아니요",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(Activity1.this, "게임 종료를 취소하였습니다.",
                                Toast.LENGTH_LONG).show();

                    }
                });

        AlertDialog alertDialog = alertDialogBuilder.create(); // 알람창 객체 생성
        alertDialog.show(); // 알림창 띄우기

    }

  //  @Override
  //  protected void onPause() {
  //      super.onPause();
  //      backMusic.stop(this);
  //  }

 //   @Override
 //   protected void onResume() {
 //       backMusic.play(this, R.raw.e);
 //       super.onResume();
 //   }

//    public void stopMusic()
//    {
//        backMusic.stop();
//        backMusic.release();
//        backMusic = null;
//    }
//
//    @Override
//    public void onDestroy ()
//    {
//        super.onDestroy();
//        if(backMusic != null)
//        {
//            try{
//                backMusic.pause();
//                backMusic.release();
//            }finally {
//                backMusic = null;
//            }
//        }
//    }





}

 

============================================================

 

글문 (170 포인트) 님이 2018년 12월 1일 질문

2개의 답변

0 추천
OnResume를 주석 처리하셨는데 당연히 안나오는거 아닌가요 .
산적 (1,360 포인트) 님이 2018년 12월 2일 답변
주석처리한 이유가요.. ㅠ


@Override
   protected void onResume() {
               backMusic.play(this, R.raw.e);
               super.onResume();
           }
====================

에서 play가 붉은 글로 되어 오류나서 주석처리 했어요..ㅠ
0 추천
액티비티 넘어갈때 정지하고 돌아오면 다시 스타트 하면 될듯요

pause 에서 정지 resume에서 스타트 근데 처음에 문제가 되니가 if문으로  play가 null인지 체크하고요
0993 님이 2018년 12월 3일 답변
...