2017-05-06 26 views
0

나는 사용자가 특정 부분에서 버튼을 클릭하여 사운드를 재생할 수있는 Android 앱을 개발했습니다. 그러나이 조각을 종료하거나 앱을 종료하면 계속 재생됩니다. 조각을 종료하거나 앱을 종료하면 어떻게 중지합니까?Android : Mediaplayer는 백그라운드에서 계속해서 재생됩니다. 어떻게 그걸 막을 수 있니?

public class PageFragment_Bon extends Fragment implements View.OnClickListener{ 

    public static final String ARG_PAGE = "ARG_PAGE"; 

    private int mPage; 
    private Button start, stop, replay; 
    private MediaPlayer mediaPlayer; 
    int [] filer = new int[18]; 


    public static PageFragment_Bon newInstance(int page) { 
     Bundle args = new Bundle(); 
     args.putInt(ARG_PAGE, page); 
     PageFragment_Bon fragment = new PageFragment_Bon(); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mPage = getArguments().getInt(ARG_PAGE); 
      } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_boenner, container, false); 

     start = (Button) view.findViewById(R.id.start); 
     start.setOnClickListener(this); 

     stop = (Button) view.findViewById(R.id.stop); 
     stop.setOnClickListener(this); 

     replay = (Button) view.findViewById(R.id.replay); 
     replay.setOnClickListener(this); 

     if(filer[mPage] != 0){ 
      start.setVisibility(View.VISIBLE); 
      stop.setVisibility(View.VISIBLE); 
      replay.setVisibility(View.VISIBLE); 
      mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), filer[mPage]); 
     } 

    @Override 
    public void onClick(View v) { 

     if(v == start){ 
      mediaPlayer.start(); 
     } 

     else if(v == stop){ 
      mediaPlayer.pause(); 
     } 

     else if(v == replay){ 
      mediaPlayer.seekTo(0); 
      mediaPlayer.start(); 
     } 
    } 

    } 

답변

1

H123, 당신이 조각에서) onPause()와 onResume (에서 이벤트를 처리해야합니다

이 내가 소리를 재생하는 방법입니다.

OnPause :

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 

    if(mediaplayer != null) 
    { 
     mediaplayer.pause(); 
     media_length = mediaplayer.getCurrentPosition(); 
    } 

} 

OnResume :

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 

    if(mediaplayer != null) 
    { 
     mediaplayer.seekTo(media_length); 
     mediaplayer.start(); 
    } 

} 

은, 아래와 같이 내가 넣어 어떻게

@Override 
public void onClick(View v) { 

    if(mediaPlayer == null) 
     mediaPlayer = MediaPlayer.create(getActivity().getBaseContext(), filer[mPage]);//add this line 
    if(v == start){ 
     mediaPlayer.start(); 
    } 

    else if(v == stop){ 
     mediaPlayer.pause(); 
    } 

    else if(v == replay){ 
     mediaPlayer.seekTo(0); 
     mediaPlayer.start(); 
    } 
} 
+0

당신의 onclick 방법 변경 '의 OnClick을();' 이제 자동으로 재생되기 시작합니다. –

+0

onCreate에서 mediaplayer obj 생성을 제거합니다. mediaPlayer = MediaPlayer.create (getActivity(). getBaseContext(), filer [mPage]); 이 줄을 onclick –

+0

에 추가하십시오. 내 대답을 업데이트하십시오. onClick을 이와 같이 변경하십시오. –