【问题标题】:How to avoid sounds from overlapping when I press Next button using Fragments? (Android Studio)使用 Fragments 按 Next 按钮时如何避免声音重叠? (安卓工作室)
【发布时间】:2019-05-04 19:21:54
【问题描述】:

我在 Android Studio 中使用 Fragments,每个 Fragment 都包含一些教育课程。我决定在其中加入配音,这样用户就可以听配音,而不是单独阅读课程。顺便说一句,我使用 MediaPlayer。但是,当我按下 Next 按钮进入下一页时,声音会重叠。上一个声音不停止,与下一个声音重叠。

这是我的代码:

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;
    }
}

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

【问题讨论】:

  • 您应该添加代码以便我们检查您当前的实现

标签: java android fragment


【解决方案1】:

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

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

【讨论】:

  • 我仍然无法解决问题。有人帮我拜托了
  • 在开始新的播放器之前停止媒体播放器
  • 当我尝试写 mp.stop();应该播放的下一个声音将是停止播放的声音。
  • 好的,停止媒体播放器并使用新对象开始新的播放器
猜你喜欢
  • 2018-01-08
  • 2023-03-24
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 2022-01-21
相关资源
最近更新 更多