当我使用“片段”按“下一步”按钮时,如何避免声音重叠? (Android Studio)

时间:2019-05-04 10:12:22

标签: java android fragment

我在Android Studio中使用片段,每个片段都包含一些教育课程。我决定在其中添加语音,以便用户可以收听语音内容,而不必独自阅读课程。顺便说一下,我使用MediaPlayer。但是,当我按“下一步”按钮进入下一页时,声音重叠。前一个声音不会停止,而与下一个声音会重叠。

这是我的代码:

package com.pau.papsirehv.knowledge;


import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.MediaController;
import android.widget.TextView;


public class Fragment1 extends Fragment {

    TextView next;
    ViewPager viewPager;
    Button btnSound;

    public Fragment1() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        btnSound = (Button)getActivity().findViewById(R.id.btnSound);
        MediaPlayer mp = MediaPlayer.create(getActivity().getApplicationContext(), R.raw.two);
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_fragment1, container, false);
        viewPager = getActivity().findViewById(R.id.viewPager);

        next = view.findViewById(R.id.slideOneNext);

        next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                viewPager.setCurrentItem(1);
               mp.start();
            }


        });
        return view;
    }
}

当我按下“下一步”按钮时,上一个声音应停止,而下一页的声音将开始。你们能给我一些代码吗?

1 个答案:

答案 0 :(得分:0)

您应该更改媒体源,否则,每次按下按钮时都应创建MediaPlayer。您的下一个按钮代码看起来像...

next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           mp.setDataSource(getApplicationContext(), myUri);
           mp.prepare();
           viewPager.setCurrentItem(1);
           mp.start();               
        }
    });