홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
MediaPlayer 클래스 사용법
6년 전
1.  레이아웃  설정  (activity_main.xml)

  간단하게  재생,  중지,  일시중지의  3가지  버튼을  삽입합니다.


2.  레이아웃에  따른  Java  클래스  작성  (MainActivity.java)

  3개의  버튼을  Java  클래스의  Button  형  인스턴스에  연결하고  클릭할  때  곧이어  정의  할  updateActivity  함수가  호출되도록  합니다.

  Java  클래스에는  재생  상태와  관련된  4가지  상수를  정의하고  있습니다.

PLAYER_INIT:  앱이  실행되고  재생  관련  함수에서는  아직  아무것도  수행하지  않은  상태입니다.
PLAYER_STOP:  소리  재생이  중지된  상태입니다.
PLAYER_PLAY:  소리가  재생중인  상태입니다.
PLAYER_PAUSE:  소리  재생이  일시중지된  상태입니다.
package  com.example.audiotest;

import  java.io.*;
import  android.app.*;
import  android.content.res.*;
import  android.media.*;
import  android.os.*;
import  android.util.*;
import  android.view.*;
import  android.widget.*;

public  class  MainActivity  extends  Activity
{
        private  static  final  int  PLAYER_INIT  =  0;  //  처음  상태
        private  static  final  int  PLAYER_STOP  =  1;  //  중지  상태
        private  static  final  int  PLAYER_PLAY  =  2;  //  재생  상태
        private  static  final  int  PLAYER_PAUSE  =  3;  //  일시정지  상태
        
        private  MediaPlayer  mediaPlayer  =  null;  //  미디어  재생  클래스
        private  int  mediaPlayerStatus  =  PLAYER_INIT;  //  액티비티의  처음  상태
        
        private  Button  buttonPlay  =  null;  //  재생  버튼
        private  Button  buttonStop  =  null;  //  정지  버튼
        private  Button  buttonPause  =  null;  //  일시정지  버튼
        
        @Override
        protected  void  onCreate(Bundle  savedInstanceState)
        {        
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                
                this.buttonPlay  =  (Button)this.findViewById(com.example.audiotest.R.id.buttonPlay);
                this.buttonStop  =  (Button)this.findViewById(com.example.audiotest.R.id.buttonStop);
                this.buttonPause  =  (Button)this.findViewById(com.example.audiotest.R.id.buttonPause);
                
                this.buttonPlay.setOnClickListener(new  View.OnClickListener()
                {
                        @Override
                        public  void  onClick(View  v)
                        {
                                //  TODO  Auto-generated  method  stub
                                MainActivity.this.updateActivity(PLAYER_PLAY);
                        }
                });
                
                this.buttonStop.setOnClickListener(new  View.OnClickListener()
                {
                        @Override
                        public  void  onClick(View  v)
                        {
                                //  TODO  Auto-generated  method  stub
                                MainActivity.this.updateActivity(PLAYER_STOP);
                        }
                });
                
                this.buttonPause.setOnClickListener(new  View.OnClickListener()
                {        
                        @Override
                        public  void  onClick(View  v)
                        {
                                //  TODO  Auto-generated  method  stub
                                MainActivity.this.updateActivity(PLAYER_PAUSE);
                        }
                });
        }
        //  ...  생략  ...  
}  
  

재생,  중지,  일시정지  함수

  updateActivity  함수는  액티비티의  재생  상태를  변경하는  함수입니다.

  매개변수인  mediaPlayerStatus는  버튼을  누름으로써  새로  설정될  상태를  의미합니다.  매개변수로  받은  mediaPlayerStatus와  액티비티의  현재  재생  상태인  this.mediaPlayerStatus를  비교하여  재생  관련  작동을  제어할  것입니다.

//  this.mediaPlayerStatus  =  액티비티의  현재  재생  상태
private  void  updateActivity(int  mediaPlayerStatus)
{
        if  (this.mediaPlayer  ==  null)
        {
                AssetManager  assetManager  =  null;
                AssetFileDescriptor  assetFileDescriptor  =  null;
                        
                try
                {
                        //  asset에  있는  wav  파일을  재생하도록  설정
                        this.mediaPlayer  =  new  MediaPlayer();
                        
                        assetManager  =  this.getAssets();
                        assetFileDescriptor  =  assetManager.openFd("test.wav");
                        
                        this.mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(),  assetFileDescriptor.getStartOffset(),  assetFileDescriptor.getLength());
                        assetFileDescriptor.close();
                                
                        this.mediaPlayer.prepare();
                        
                }
                catch  (IOException  e)
                {
                        //  TODO  Auto-generated  catch  block
                        e.printStackTrace();
                }
        }
        //  새로  설정할  재생  상태
        switch  (mediaPlayerStatus)
        {
        case  PLAYER_PLAY:
                //  액티비티의  현재  상태와  새로  설정할  상태를  비교
                switch  (this.mediaPlayerStatus)
                {
                case  PLAYER_PLAY:  //  이미  재생중인데  또  재생을  누른  경우  아무  작업  안  함
                        break;
                case  PLAYER_STOP:  //  정지였다가  재생을  누른  경우  처음부터  재생  (MediaPlayer  생명주기  참조)
                        try
                        {
                                this.mediaPlayer.prepare();
                                this.mediaPlayer.seekTo(0);
                        }
                        catch  (IllegalStateException  e)
                        {
                                //  TODO  Auto-generated  catch  block
                                e.printStackTrace();
                        }
                        catch  (IOException  e)
                        {
                                //  TODO  Auto-generated  catch  block
                                e.printStackTrace();
                        }
                        this.mediaPlayer.start();
                        break;
                case  PLAYER_PAUSE:  //  일시정지였는데  재생을  누른  경우  이어서  재생
                        this.mediaPlayer.start();
                        break;
                case  PLAYER_INIT:  //  맨  처음상태에서  재생을  누른  경우  마찬가지로  재생
                        this.mediaPlayer.start();
                        break;
                }
                break;
        case  PLAYER_STOP:
                switch  (this.mediaPlayerStatus)
                {
                case  PLAYER_PLAY:  //  재생  중이었는데  정지를  누른  경우
                        this.mediaPlayer.stop();
                        break;
                case  PLAYER_STOP:  //  정지  상태에서  또  정지  누른  경우
                        break;
                case  PLAYER_PAUSE:  //  일시정지  상태에서  정지  누른  경우
                        this.mediaPlayer.stop();
                        break;
                case  PLAYER_INIT:  //  맨  처음  상태에서  정지를  누른  경우
                        break;
                }
                break;
        case  PLAYER_PAUSE:
                switch  (this.mediaPlayerStatus)
                {
                case  PLAYER_PLAY:  //  재생  중이었는데  일시정지를  누른  경우
                        this.mediaPlayer.pause();
                        break;
                case  PLAYER_STOP:  //  정지였는데  일시정지를  누른  경우
                        break;
                case  PLAYER_PAUSE:  //  일시정지인데  또  일시정지를  누른  경우
                        break;
                case  PLAYER_INIT:  //  맨  처음상태에서  일시정지를  누른  경우
                        break;
                }
                break;
        }
        
        this.mediaPlayerStatus  =  mediaPlayerStatus;  //  이  액티비티의  재생  상태를  새로  받은  상태로  변경
}
추천추천 : 216 추천 목록
번호 제목
1,340
 cmd 명령어 (명령 프롬프트 명령어) 모음
1,339
 Windows10 특정 프로그램(OCS 2007 R2)에서 첨부파일 드래그앤드롭이 안 되는 현상
1,338
 윈도우 로그, 관리 이벤트 삭제
1,337
 클린 부팅
1,336
 Windows 구성 요소 저장소에서 파일 손상 검사
1,335
 Windows Defender 검사 기록 삭제하기
1,334
 간단한 윈도우 10 정품 인증 (크랙프로그램 필요없음)
1,333
 오류난 폴더 강제삭제 방법
1,332
 크롬에서 플래시 항상 허용하도록 설정하기 (레지스트리) reg 파일 만들기
1,331
 GPT 디스크를 MBR 디스크로 변환
1,330
 MBR 디스크를 GPT 디스크로 변환
1,329
 구글 검색을 200% 활용하게 해주는 검색 명령어 총정리
1,328
 [Jquery] jQuery로 우클릭 방지, 드래그 방지, 선택 방지 (IE10, 파이어폭스, 크롬 확인)
1,327
 php 사용자 접속IP, 브라우저정보, os정보, http, https 접속프로토콜 알아오기
1,326
 [PHP] IE 브라우저 접속 검출하기
1,325
 윈도우10 시스템 예약 파티션 확인 및 삭제
1,324
 윈도우10 복구 파티션 삭제 방법
1,323
 윈도우10 부팅지연 검은화면에서 몇분간 머무는 현상 해결방법
1,322
 삼성노트북 바이오스 진입이 불가능한 경우 바이오스 재설치와 NVRAM 초기화
1,321
 익스플로러(IE)의 구글 검색공급자 한글로 변경 방법
1,320
 윈도우 10 기본 앱 삭제 및 복구
1,319
 meta 태그 http-equiv 설정방법과 차이점
1,318
 구글(Google)검색에서 고급연산자를 이용하여 많은 정보를 얻는 방법
1,317
 프로그램 없이 하드디스크 복사 및 백업하기
1,316
 Windows7 업데이트 기록 삭제방법
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.