Tôi hiện đang sử dụng mã sau đây để chuyển đổi các dòng âm thanh đến tai mảnh khi thiết bị được gần bất kỳ đối tượng:Exoplayer: Làm thế nào để phát âm thanh qua tai?
@Override
public void onSensorChanged(SensorEvent event) {
if (mAudioManager.isWiredHeadsetOn() || !(mCurrentPlaybackStatus == STATUS_PLAYING
|| mCurrentPlaybackStatus == STATUS_PREPARING)) {
return;
}
boolean isClose = event.values[0] < mSensor.getMaximumRange();
if (!mScreenDisabled && isClose) {
mAudioManager.setMode(AudioManager.STREAM_MUSIC);
mAudioManager.setSpeakerphoneOn(false);
disableScreen();
mScreenDisabled = true;
} else if (mScreenDisabled && !isClose) {
mAudioManager.setSpeakerphoneOn(true);
mAudioManager.setMode(mAudioManagerMode);
enableScreen();
mScreenDisabled = false;
}
}
Thật không may có sự chậm trễ đáng kể khi gọi .setMode(AudioManager.STREAM_MUSIC);
(> 500ms)
Với MediaPlayer mặc định của Android, luồng đầu ra có thể được thay đổi mà không bị chậm trễ:
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL); // ear piece
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); // speakerphone
Có cách nào để thay đổi luồng đầu ra của ExoPlayer không?
Điều này không liên quan đến ExoPlayer. – timoschloesser
@timoschloesser, thực ra nó liên quan đến ExoPlayer nếu mediaPlayer là một phiên bản của SimpleExoPlayer :) https://github.com/google/ExoPlayer/blob/270f68a/library/src/main/java/com/google/android/exoplayer2 /SimpleExoPlayer.java#L300 –