下面列出了android.media.AudioTrack#setVolume ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@TargetApi(21)
private static void setVolumeInternalV21(AudioTrack audioTrack, float volume) {
audioTrack.setVolume(volume);
}
@TargetApi(21)
private static void setVolumeInternalV21(AudioTrack audioTrack, float volume) {
audioTrack.setVolume(volume);
}
@TargetApi(21)
private static void setVolumeInternalV21(AudioTrack audioTrack, float volume) {
audioTrack.setVolume(volume);
}
@Override
public void onCompleted() {
// create a new AudioTrack to workaround audio routing issues.
AudioTrack audioTrack = new AudioTrack.Builder()
.setAudioFormat(mAudioOutputFormat)
.setBufferSizeInBytes(mAudioOutputBufferSize)
.setTransferMode(AudioTrack.MODE_STREAM)
.build();
if (mAudioOutputDevice != null) {
audioTrack.setPreferredDevice(mAudioOutputDevice);
}
audioTrack.setVolume(AudioTrack.getMaxVolume() * mVolume / 100.0f);
audioTrack.play();
mConversationHandler.post(new Runnable() {
@Override
public void run() {
mConversationCallback.onResponseStarted();
}
});
for (ByteBuffer audioData : mAssistantResponses) {
final ByteBuffer buf = audioData;
mConversationHandler.post(new Runnable() {
@Override
public void run() {
mConversationCallback.onAudioSample(buf);
}
});
audioTrack.write(buf, buf.remaining(),
AudioTrack.WRITE_BLOCKING);
}
mAssistantResponses.clear();
audioTrack.stop();
audioTrack.release();
mConversationHandler.post(new Runnable() {
@Override
public void run() {
mConversationCallback.onResponseFinished();
}
});
if (mMicrophoneMode == MicrophoneMode.DIALOG_FOLLOW_ON) {
// Automatically start a new request
startConversation();
} else {
// The conversation is done
mConversationHandler.post(new Runnable() {
@Override
public void run() {
mConversationCallback.onConversationFinished();
}
});
}
}
@TargetApi(21)
private static void setVolumeInternalV21(AudioTrack audioTrack, float volume) {
audioTrack.setVolume(volume);
}
@TargetApi(21)
private static void setVolumeInternalV21(AudioTrack audioTrack, float volume) {
audioTrack.setVolume(volume);
}