Чт янв 12, 2023 19:30:06
Вт янв 17, 2023 10:17:24
Ср янв 18, 2023 18:00:28
Чт янв 19, 2023 00:34:51
olegue писал(а):Мой андроид приемник принимает вроде как ровно, но идет какой-то периодический артефакт в виде щелчков каждый 0.3-0.5 сек
int buffersize = AudioRecord.getMinBufferSize(11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
AudioRecord arec = new AudioRecord(
MediaRecorder.AudioSource.MIC, 11025,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, buffersize);
byte[] buffer = new byte[buffersize];
arec.startRecording();
//arec.read(buffer, 0, buffersize);
public void RecvAudio()
{
Thread thrd = new Thread(new Runnable() {
@Override
public void run()
{
Log.e(LOG_TAG, "start2 recv thread, thread id: "
+ Thread.currentThread().getId());
AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC,
SAMPLE_RATE, AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_8BIT, BUF_SIZE,
AudioTrack.MODE_STREAM);
track.play();
DatagramSocket sock = null;
try
{
sock = new DatagramSocket(AUDIO_PORT);
byte[] buf = new byte[BUF_SIZE];
while(Server_aktiv)
{
DatagramPacket pack = new DatagramPacket(buf, BUF_SIZE);
sock.receive(pack);
Log.d(LOG_TAG, "recv pack: " + pack.getLength());
buf=pack.getData();
//track.write(pack.getData(), 0, pack.getLength());
track.write(buf, 0, buf.length);
}
}
catch (SocketException se)
{
Log.e(LOG_TAG, "SocketException: " + se.toString());
}
catch (IOException ie)
{
Log.e(LOG_TAG, "IOException" + ie.toString());
}
finally
{
if (sock != null)
{
sock.close();
Toast toast = Toast.makeText(getApplicationContext(),
"Сервер UDP остановлен. Пора покормить кота!", Toast.LENGTH_SHORT);
toast.show();
}
}
} // end run
});
thrd.start();
}
Чт янв 19, 2023 20:08:10
Пт янв 20, 2023 17:58:39
Пт фев 10, 2023 21:47:44
Сб фев 11, 2023 00:12:55
Ср авг 02, 2023 08:56:42
Ср авг 02, 2023 19:25:40
Ср авг 02, 2023 21:01:14
Ср авг 02, 2023 23:30:32
Чт авг 03, 2023 10:08:31
Чт авг 03, 2023 14:09:09
Чт авг 31, 2023 11:59:15
//////////////////////////////////////////////////// RX: > ta1
ta1.append(UDP_RX); // > TextArea
ta1.setCaretPosition(ta1.getDocument().getLength());
//////////////////////////////////////////////////// RX: > Console
//System.out.println(UDP_RX);
public static void TX_EEPROM() {
//EEPROM_len = 0; //сброс EEPROM_len
////////////////////////////////////////////////////////
//////////////////////////////////////////////////////// TX: EEPROM:
// ASCII UTF-8 !!! HEX
try
{
//"rw" -файл открыт для чтения и записи (если файла нет, то файл будет создан "w").
//"r" -файл открыт для чтения (если файла нет, error).
File uniqueFile = File.createTempFile("udp", ".raw", new File("E:/JAVA/"));
RandomAccessFile E_raf = new RandomAccessFile(uniqueFile, "rw");
//RandomAccessFile E_raf = new RandomAccessFile("E:/JAVA/Java2.txt", "rw");
///////////////////////////////////////////проверка файла EEPROM:
EEPROM_len = E_raf.length(); //Возвращает длину файла EEPROM long
if (EEPROM_len > 1000000) {EEPROM_len = 0;}//MAX
///////////////////////////////////////// запись файла EEPROM:
//курсор
E_raf.seek(EEPROM_len); //
for (xE=0; xE<RX_len; xE++) {
E_raf.writeByte(RX_int[xE]);// > write() // HEX
};
///////////////////////////////////////// закрываем файл EEPROM:
//закрываем файл
E_raf.close();
}catch(IOException e){
}
/////////////////////////////////////////// TX EEPROM END
}
Чт авг 31, 2023 16:12:17
//////////////////////////////////////////////////// RX: > ta1
ta1.append(UDP_RX); // > TextArea
ta1.setCaretPosition(ta1.getDocument().getLength());
//////////////////////////////////////////////////// RX: > Console
//System.out.println(UDP_RX);
roman.com писал(а):максимальный размер файла... я не проверял))
Чт авг 31, 2023 17:19:57
static String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmm").format(Calendar.getInstance().getTime());
public static void TX_EEPROM() {
//EEPROM_len = 0; //сброс EEPROM_len
////////////////////////////////////////////////////////
//////////////////////////////////////////////////////// TX: EEPROM:
// ASCII UTF-8 !!! HEX
try
{
//"rw" -файл открыт для чтения и записи (если файла нет, то файл будет создан "w").
//"r" -файл открыт для чтения (если файла нет, error).
// File uniqueFile = File.createTempFile("udp", ".raw", new File("E:/JAVA/"));
RandomAccessFile E_raf = new RandomAccessFile("E:/JAVA/Jv"+ timeStamp +".raw", "rw");
//RandomAccessFile E_raf = new RandomAccessFile(uniqueFile, "rw");
///////////////////////////////////////////проверка файла EEPROM:
EEPROM_len = E_raf.length(); //Возвращает длину файла EEPROM long
if (EEPROM_len > 1000000) {EEPROM_len = 0;x++;
timeStamp = new SimpleDateFormat("yyyyMMdd_HHmm").format(Calendar.getInstance().getTime());
}//MAX
///////////////////////////////////////// запись файла EEPROM:
//курсор
E_raf.seek(EEPROM_len); //
for (xE=0; xE<RX_len; xE++) {
E_raf.writeByte(RX_int[xE]);// > write() // HEX
};
///////////////////////////////////////// закрываем файл EEPROM:
//закрываем файл
E_raf.close();
}catch(IOException e){
}
//////////////////////////////////////////////
} //TX_EEPROM
Чт авг 31, 2023 17:35:07
Чт авг 31, 2023 17:48:20
Чт авг 31, 2023 17:59:50