- Популярные видео
- Авто
- Видео-блоги
- ДТП, аварии
- Для маленьких
- Еда, напитки
- Животные
- Закон и право
- Знаменитости
- Игры
- Искусство
- Комедии
- Красота, мода
- Кулинария, рецепты
- Люди
- Мото
- Музыка
- Мультфильмы
- Наука, технологии
- Новости
- Образование
- Политика
- Праздники
- Приколы
- Природа
- Происшествия
- Путешествия
- Развлечения
- Ржач
- Семья
- Сериалы
- Спорт
- Стиль жизни
- ТВ передачи
- Танцы
- Технологии
- Товары
- Ужасы
- Фильмы
- Шоу-бизнес
- Юмор
How to build your own internet based walkie talkie telephony Android App? - firebase Realtime db
Walkie Talkie Android App
This video shows the steps and code to develop your own walkie talkie Android app. It uses Firebase Realtime database to exchange the audio data over internet.
I hope you like this video. For any questions, suggestions or appreciation please contact us at: https://programmerworld.co/contact/ or email at: programmerworld1990@gmail.com
Details:
https://programmerworld.co/android/how-to-build-your-own-internet-based-walkie-talkie-telephony-android-app-firebase-realtime-database/
Java Code:
public class MainActivity extends AppCompatActivity {
private Button btnStartRecord, btnStopRecord, btnPlay;
private AudioRecord audioRecord;
private AudioTrack audioTrack;
private boolean isRecording = false;
private static final int SAMPLE_RATE = 16000;
private static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(
SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
private DatabaseReference audioRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
ActivityCompat.requestPermissions(this,
new String[]{RECORD_AUDIO},
PackageManager.PERMISSION_GRANTED);
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
SAMPLE_RATE,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE,
AudioTrack.MODE_STREAM);
btnStartRecord = findViewById(R.id.btnStartRecord);
btnStopRecord = findViewById(R.id.btnStopRecord);
btnPlay = findViewById(R.id.btnPlay);
// Firebase setup
FirebaseDatabase database = FirebaseDatabase.getInstance();
audioRef = database.getReference("audioStream");
// Start recording
btnStartRecord.setOnClickListener(v1 - startRecording());
// Stop recording
btnStopRecord.setOnClickListener(v1 - stopRecording());
// Play received audio
btnPlay.setOnClickListener(v1 - playAudioStream());
// Listen to Firebase for audio data
audioRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String encodedAudio = snapshot.getValue(String.class);
if (encodedAudio != null) {
byte[] decodedAudio = Base64.getDecoder().decode(encodedAudio);
audioTrack.write(decodedAudio, 0, decodedAudio.length);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(MainActivity.this, "Failed to receive audio.", Toast.LENGTH_LONG).show();
}
});
return insets;
});
}
private void startRecording() {
if (ActivityCompat.checkSelfPermission(this, RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Audio Recording permission not available!", Toast.LENGTH_LONG).show();
return;
}
audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
SAMPLE_RATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE);
// Add noise suppressor
if (NoiseSuppressor.isAvailable()) {
NoiseSuppressor.create(audioRecord.getAudioSessionId());
}
// Add echo canceller
if (AcousticEchoCanceler.isAvailable()) {
AcousticEchoCanceler.create(audioRecord.getAudioSessionId());
}
audioRecord.startRecording();
isRecording = true;
btnStartRecord.setVisibility(View.GONE);
btnStopRecord.setVisibility(View.VISIBLE);
// Start sending audio data to Firebase
new Thread(() - {
byte[] buffer = new byte[BUFFER_SIZE];
while (isRecording) {
int read = audioRecord.read(buffer, 0, BUFFER_SIZE);
if (read 0) {
String encodedAudio = Base64.getEncoder().encodeToString(buffer);
audioRef.setValue(encodedAudio);
}
}
}).start();
}
private void stopRecording() {
if (audioRecord != null) {
isRecording = false;
audioRecord.stop();
audioRecord.release();
audioRecord = null;
btnStartRecord.setVisibility(View.VISIBLE);
btnStopRecord.setVisibility(View.GONE);
}
}
private void playAudioStream() {
audioTrack.play();
}
}
--
Видео How to build your own internet based walkie talkie telephony Android App? - firebase Realtime db канала Programmer World
This video shows the steps and code to develop your own walkie talkie Android app. It uses Firebase Realtime database to exchange the audio data over internet.
I hope you like this video. For any questions, suggestions or appreciation please contact us at: https://programmerworld.co/contact/ or email at: programmerworld1990@gmail.com
Details:
https://programmerworld.co/android/how-to-build-your-own-internet-based-walkie-talkie-telephony-android-app-firebase-realtime-database/
Java Code:
public class MainActivity extends AppCompatActivity {
private Button btnStartRecord, btnStopRecord, btnPlay;
private AudioRecord audioRecord;
private AudioTrack audioTrack;
private boolean isRecording = false;
private static final int SAMPLE_RATE = 16000;
private static final int BUFFER_SIZE = AudioRecord.getMinBufferSize(
SAMPLE_RATE, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
private DatabaseReference audioRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
ActivityCompat.requestPermissions(this,
new String[]{RECORD_AUDIO},
PackageManager.PERMISSION_GRANTED);
audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
SAMPLE_RATE,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE,
AudioTrack.MODE_STREAM);
btnStartRecord = findViewById(R.id.btnStartRecord);
btnStopRecord = findViewById(R.id.btnStopRecord);
btnPlay = findViewById(R.id.btnPlay);
// Firebase setup
FirebaseDatabase database = FirebaseDatabase.getInstance();
audioRef = database.getReference("audioStream");
// Start recording
btnStartRecord.setOnClickListener(v1 - startRecording());
// Stop recording
btnStopRecord.setOnClickListener(v1 - stopRecording());
// Play received audio
btnPlay.setOnClickListener(v1 - playAudioStream());
// Listen to Firebase for audio data
audioRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String encodedAudio = snapshot.getValue(String.class);
if (encodedAudio != null) {
byte[] decodedAudio = Base64.getDecoder().decode(encodedAudio);
audioTrack.write(decodedAudio, 0, decodedAudio.length);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(MainActivity.this, "Failed to receive audio.", Toast.LENGTH_LONG).show();
}
});
return insets;
});
}
private void startRecording() {
if (ActivityCompat.checkSelfPermission(this, RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Audio Recording permission not available!", Toast.LENGTH_LONG).show();
return;
}
audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
SAMPLE_RATE,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
BUFFER_SIZE);
// Add noise suppressor
if (NoiseSuppressor.isAvailable()) {
NoiseSuppressor.create(audioRecord.getAudioSessionId());
}
// Add echo canceller
if (AcousticEchoCanceler.isAvailable()) {
AcousticEchoCanceler.create(audioRecord.getAudioSessionId());
}
audioRecord.startRecording();
isRecording = true;
btnStartRecord.setVisibility(View.GONE);
btnStopRecord.setVisibility(View.VISIBLE);
// Start sending audio data to Firebase
new Thread(() - {
byte[] buffer = new byte[BUFFER_SIZE];
while (isRecording) {
int read = audioRecord.read(buffer, 0, BUFFER_SIZE);
if (read 0) {
String encodedAudio = Base64.getEncoder().encodeToString(buffer);
audioRef.setValue(encodedAudio);
}
}
}).start();
}
private void stopRecording() {
if (audioRecord != null) {
isRecording = false;
audioRecord.stop();
audioRecord.release();
audioRecord = null;
btnStartRecord.setVisibility(View.VISIBLE);
btnStopRecord.setVisibility(View.GONE);
}
}
private void playAudioStream() {
audioTrack.play();
}
}
--
Видео How to build your own internet based walkie talkie telephony Android App? - firebase Realtime db канала Programmer World
Комментарии отсутствуют
Информация о видео
19 декабря 2024 г. 23:30:48
00:14:51
Другие видео канала




















