private static Ringtone mRingtone;
public synchronized void playSound() {
if (mRingtone == null) {
Log.e("initial Ringtone", "===");
String uriPath = "android.resource://" + getPackageName() + "/"+R.raw.call_mp3;
Uri uri = Uri.parse(uriPath);
mRingtone = RingtoneManager.getRingtone(getApplicationContext(),uri);
}
if (!mRingtone.isPlaying()) {
Log.e("play Ringtone", "===" + mRingtone.isPlaying());
setRingtoneRepeat(mRingtone);
mRingtone.play();
}
}
public void stopSound() {
mRingtone.stop();
}
//重复播放
private void setRingtoneRepeat(Ringtone ringtone) {
Class<Ringtone> clazz =Ringtone.class;
try {
Field field = clazz.getDeclaredField("mLocalPlayer");
field.setAccessible(true);
MediaPlayer target = (MediaPlayer) field.get(ringtone);
if(target != null)target.setLooping(true);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}