下面列出了android.media.MediaPlayer#setAudioAttributes ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private MediaPlayer createPlayer(@NonNull Uri ringtoneUri) {
try {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnErrorListener(new MediaPlayerErrorListener());
mediaPlayer.setDataSource(context, ringtoneUri);
mediaPlayer.setLooping(true);
if (Build.VERSION.SDK_INT <= 21) {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
} else {
mediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING)
.build());
}
return mediaPlayer;
} catch (IOException e) {
Log.e(TAG, "Failed to create player for incoming call ringer");
return null;
}
}
public static void playNotificationSound(MediaPlayer mediaPlayer, Context context, Uri uri) {
try {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
}
if (uri != null && !Uri.EMPTY.equals(uri)) {
mediaPlayer.setDataSource(context, uri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes attr = new AudioAttributes.Builder()
.setLegacyStreamType(AudioManager.STREAM_NOTIFICATION)
.build();
mediaPlayer.setAudioAttributes(attr);
} else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
}
mediaPlayer.prepare();
mediaPlayer.start();
}
} catch (IllegalArgumentException | SecurityException | IllegalStateException | IOException e) {
e.printStackTrace();
}
}
public static void playNotificationSound(MediaPlayer mediaPlayer, Context context, Uri uri) {
try {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.reset();
}
if (uri != null && !Uri.EMPTY.equals(uri)) {
mediaPlayer.setDataSource(context, uri);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes attr = new AudioAttributes.Builder()
.setLegacyStreamType(AudioManager.STREAM_NOTIFICATION)
.build();
mediaPlayer.setAudioAttributes(attr);
} else {
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
}
mediaPlayer.prepare();
mediaPlayer.start();
}
} catch (IllegalArgumentException | SecurityException | IllegalStateException | IOException e) {
e.printStackTrace();
}
}
private void prepareMediaPlayer(Uri uri) {
Log.d(TAG, "prepareMediaPlayer: " + uri);
try {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setDataSource(getContext(), uri);
mMediaPlayer.setSurface(mSurface);
mMediaPlayer.setAudioAttributes(mAudioAttributes);
mMediaPlayer.setLooping(true);
mMediaPlayer.prepare();
} catch (IOException | IllegalStateException e) {
Log.e(TAG, "prepareMediaPlayer: ", e);
}
}
public static void playSoundFile(String key) {
try {
if (!orsc.mudclient.optionSoundDisabled) {
File sound = orsc.mudclient.soundCache.get(key + ".wav");
if (sound == null)
return;
try {
MediaPlayer player = new MediaPlayer();
AudioAttributes audioAttrib = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build();
player.setDataSource(sound.getPath());
player.setAudioAttributes(audioAttrib);
player.setLooping(false);
player.prepare();
player.start();
player.setOnCompletionListener(MediaPlayer::release);
} catch (Exception ex) {
ex.printStackTrace();
}
}
} catch (RuntimeException ignored) {
}
}
@Override
void setAudioAttributes(MediaPlayer instance, AudioAttributes attributes) {
android.media.AudioAttributes attributes2;
attributes2 = (new android.media.AudioAttributes.Builder())
.setContentType(attributes.getContentType())
.setUsage(attributes.getUsage())
.setFlags(attributes.getFlags())
.build();
instance.setAudioAttributes(attributes2);
}