Improve playback

legacy
sh123 2022-08-10 13:07:35 +03:00
rodzic 035bb4bfe1
commit ad5b2b12e8
3 zmienionych plików z 25 dodań i 1 usunięć

Wyświetl plik

@ -12,6 +12,7 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-feature android:name="android.hardware.bluetooth_le"
android:required="true" />

Wyświetl plik

@ -4,7 +4,9 @@ import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.AudioAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaRecorder;
@ -117,6 +119,15 @@ public class AppWorker extends Thread {
AudioFormat.ENCODING_PCM_16BIT,
10 * _audioRecorderMinBufferSize);
/*
AudioManager audioManager = (AudioManager)_context.getSystemService(Context.AUDIO_SERVICE);
for (AudioDeviceInfo inputDevice : audioManager.getDevices(AudioManager.GET_DEVICES_INPUTS)) {
boolean isBuiltIn = inputDevice.getType() == AudioDeviceInfo.TYPE_BUILTIN_MIC;
Log.i(TAG, "input device: " + isBuiltIn + " " + inputDevice.getProductName());
if (isBuiltIn) _systemAudioRecorder.setPreferredDevice(inputDevice);
}
*/
int _audioPlayerMinBufferSize = AudioTrack.getMinBufferSize(
AUDIO_SAMPLE_SIZE,
AudioFormat.CHANNEL_OUT_MONO,
@ -140,6 +151,14 @@ public class AppWorker extends Thread {
.setTransferMode(AudioTrack.MODE_STREAM)
.setBufferSizeInBytes(10 * _audioPlayerMinBufferSize)
.build();
/*
for (AudioDeviceInfo outputDevice : audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)) {
boolean isBuiltIn = outputDevice.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER;
Log.i(TAG, "output device: " + isBuiltIn + " " + outputDevice.getProductName());
if (isBuiltIn) _systemAudioRecorder.setPreferredDevice(outputDevice);
}
*/
}
public static int getAudioMinLevel() {
@ -250,7 +269,10 @@ public class AppWorker extends Thread {
String note = (src == null ? "UNK" : src) + "→" + (dst == null ? "UNK" : dst);
sendStatusUpdate(AppMessage.EV_VOICE_RECEIVED, note);
sendRxAudioLevelUpdate(pcmFrame);
if (_systemAudioPlayer.getPlayState() != AudioTrack.PLAYSTATE_PLAYING)
_systemAudioPlayer.play();
_systemAudioPlayer.write(pcmFrame, 0, pcmFrame.length);
_systemAudioPlayer.stop();
}
@Override
@ -394,7 +416,6 @@ public class AppWorker extends Thread {
if (!_needTransmission && _systemAudioRecorder.getRecordingState() == AudioRecord.RECORDSTATE_RECORDING) {
_protocol.flush();
_systemAudioRecorder.stop();
_systemAudioPlayer.play();
sendTxAudioLevelUpdate(null);
}
}

Wyświetl plik

@ -3,7 +3,9 @@ package com.radio.codec2talkie.transport;
import android.content.Context;
import android.content.SharedPreferences;
import android.media.AudioAttributes;
import android.media.AudioDeviceInfo;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaRecorder;