1
在以下類中會觸發.ogg文件的播放。.ogg文件爲什麼會循環?
public class HomeScreenFragment extends Fragment {
...
private AudioPlayer mPlayer = new AudioPlayer();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
...
mStandbyButton = (Button)v.findViewById(R.id.standby_button);
mStandbyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPlayer.play(getActivity());
}
});
}
public void onDestroy() {
super.onDestroy();
mPlayer.stop();
}
}
儘管使用setOnCompletionListener()的文件繼續不像.WAV
public class AudioPlayer {
private MediaPlayer mPlayer;
public void stop() {
if(mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
}
public void play(Context c) {
stop();
mPlayer = MediaPlayer.create(c, R.raw.hassium);
mPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
stop();
}
});
mPlayer.start();
}
}
循環如何保證他們不這樣做一次循環播放完畢? 我可以使用.wav文件,但很好奇爲什麼發生這種情況,如果可能的話,防止它們循環。
看來是元數據標籤ANDROID_LOOP在th eogg文件負責行爲。此外MediaPlayer.setLooping(false)不會覆蓋此行爲。所以唯一的選擇是編輯ogg文件。如果有人有興趣,你可以查看[this](http://www.tytyweb.net/blog/2012/01/looping-ringtones-on-android/)。編輯:添加鏈接 – Ashish 2014-11-15 05:32:39