如何解决如何在视图寻呼机中停止媒体播放器声音?
我是 Android 开发的新手,我的活动中有滑块片段。我正在尝试为不同的滑块播放不同的声音。但是,当我从一页滑到另一页时,声音会重叠。任何人都可以帮助我们吗?这是我的代码:
public class Diabetes1 extends Fragment {
MediaPlayer mp;
View rootView;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.slidertopimagecardlayout,container,false);
SharedPreferences prefs = this.getActivity().getSharedPreferences("MY_LANGUAGE",MODE_PRIVATE);
if (prefs.getString("myLanguage","").equals("en")) {
mp = MediaPlayer.create(getActivity().getBaseContext(),getResources().getIdentifier("diab1en","raw",this.getActivity().getPackageName()));
mp.start();
} else if (prefs.getString("myLanguage","").equals("es")) {
mp = MediaPlayer.create(getActivity().getBaseContext(),this.getActivity().getPackageName()));
mp.start();
}
return rootView;
}
@Override
public void setUserVisibleHint(boolean isVisibletoUser) {
super.setUserVisibleHint(isVisibletoUser);
// Make sure that we are currently visible
if (this.isVisible()) {
// If we are becoming invisible,then...
if (!isVisibletoUser) {
mp.stop();
} else {
// do what you like
}
}
}
@Override
public void onPause() {
super.onPause();
if(mp.isPlaying()) {
mp.stop();
}
}
@Override
public void onResume() {
super.onResume();
}
}
解决方法
Viewpager 不适用于您的目的,因为它会为页面之间的快速转换创建离屏片段。对于您的问题 onCreateView 被调用,但 onPause 不是。要处理此问题,您可以将 pageChangeListener 与 pagerAdapter 一起使用。每次页面更改后,您都可以切换到另一种声音并停止当前的声音。为此,您必须从页面片段中提取媒体播放器逻辑。
,试试这个代码,看看它是否有效
public class Diabetes1 extends Fragment {
MediaPlayer mp;
View rootView;
Boolean isPLaying = false;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.slidertopimagecardlayout,container,false);
SharedPreferences prefs = this.getActivity().getSharedPreferences("MY_LANGUAGE",MODE_PRIVATE);
if (prefs.getString("myLanguage","").equals("en")) {
mp = MediaPlayer.create(getActivity().getBaseContext(),getResources().getIdentifier("diab1en","raw",this.getActivity().getPackageName()));
mp.start();
isPLaying = true;
} else if (prefs.getString("myLanguage","").equals("es")) {
mp = MediaPlayer.create(getActivity().getBaseContext(),this.getActivity().getPackageName()));
mp.start();
isPLaying = true;
}
return rootView;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
// Make sure that we are currently visible
if (this.isVisible()) {
// If we are becoming invisible,then...
if (!isVisibleToUser) {
mp.stop();
} else {
// do what you like
}
}
}
@Override
public void onPause() {
super.onPause();
if(isPlaying) {
mp.stop();
isPLaying = false;
}
}
@Override
public void onResume() {
super.onResume();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。