参考了一些代码,实现了局域网的实时语音对讲功能,只要同网段局域网即可通话,文字聊天,传输文件等,包含了飞鸽传输的功能。
主要是录音发送和接收播放录音比较重要。录音线程:
public class AudioSend extends Thread {
Person person = null;
public AudioSend(Person person) {
this.person = person;
// android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
}
@Override
public void run() {
super.run();
Socket socket = null;
OutputStream os = null;
AudioRecord recorder = null;
try {
socket = new Socket(person.ipAddress, Constant.AUDIO_PORT);
socket.setSoTimeout(5000);
os = socket.getOutputStream();
// 获得录音缓冲区大小
int bufferSize = AudioRecord.getMinBufferSize(FlyGeonApplication.getInstance().sampRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT);
Log.e("", "录音缓冲区大小"+bufferSize);
// 获得录音机对象
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, FlyGeonApplication.getInstance().sampRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, bufferSize * 10);
recorder.startRecording();// 开始录音
byte[] readBuffer = new byte[640];// 录音缓冲区
int length = 0;
while (!isStopTalk) {
length = recorder.read(readBuffer, 0, 640);// 从mic读取音频数据
if (length > 0 && length % 2 == 0) {
os.write(readBuffer, 0, length);// 写入到输出流,把音频数据通过网络发送给对方
}
}
recorder.stop();
recorder.release();
recorder = null;
os.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
接收播放线程
public class AudioPlay extends Thread {
Socket socket = null;
public AudioPlay(Socket socket) {
this.socket = socket;
// android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
}
@Override
public void run() {
super.run();
try {
InputStream is = socket.getInputStream();
// 获得音频缓冲区大小
int bufferSize = android.media.AudioTrack.getMinBufferSize(FlyGeonApplication.getInstance().sampRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT);
Log.e("", "播放缓冲区大小"+bufferSize);
// 获得音轨对象
AudioTrack player = new AudioTrack(FlyGeonApplication.getInstance().getVoiceMode(), FlyGeonApplication.getInstance().sampRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize,
AudioTrack.MODE_STREAM);
// 设置喇叭音量
player.setStereoVolume(1.0f, 1.0f);
// 开始播放声音
player.play();
byte[] audio = new byte[160];// 音频读取缓存
int length = 0;
while (!isStopTalk) {
length = is.read(audio);// 从网络读取音频数据
byte[] temp = audio.clone();
if (length > 0 && length % 2 == 0) {
// for(int
// i=0;i<length;i++)audio[i]=(byte)(audio[i]*2);//音频放大1倍
player.write(audio, 0, temp.length);// 播放音频数据
}
}
player.stop();
player.release();
player = null;
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
AudioTrack player = new AudioTrack(FlyGeonApplication.getInstance().getVoiceMode(), FlyGeonApplication.getInstance().sampRate,
AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize,
AudioTrack.MODE_STREAM);
其中第二个参数与机器有关,一般为8000。我在解决这个问题时 就是遍历一遍常见的可能数值,直到正确为止。
第一个参数是声音的播放模式,可以为听筒模式和扬声器模式。由于扬声器模式会有回音,所以一般用听筒模式即可。
以下是软件截图
以下是程序包,解压为apk即可安装
- 大小: 246.4 KB
- 大小: 246.4 KB
- 大小: 85 KB
- 大小: 53.2 KB
- 大小: 84.4 KB
- 大小: 68.1 KB
分享到:
相关推荐
这份"android局域网对讲软件源码"提供了一种方法,让Android设备能够在同一个局域网内进行语音通话,无需依赖外部服务器,极大地降低了通信成本。下面将详细解析这一技术的关键知识点。 1. **Socket编程**:Android...
在Android平台上开发一款名为"WifiTalk"的WIFI局域网对讲机应用,涉及到的技术领域广泛,包括网络通信、多媒体处理以及Android应用开发等多个方面。以下是对这些知识点的详细阐述: 1. **Android应用开发基础**:...
总的来说,“局域网对讲机”项目涵盖了Android应用开发中的Socket通信、网络编程、音频处理和多线程等多个关键知识点。通过实际操作这个项目,初学者可以深入了解这些技术,并提升自己的编程技能。同时,这个项目也...
综上所述,这个Android局域网视频聊天项目涵盖了网络通信、视频音频处理、UI设计、数据库操作等多个方面的技术。通过这些技术的综合运用,开发者为用户提供了一个半成品但功能完善的视频聊天应用。
该工程的目标是实现Android局域网内的语音对讲。 目前已实现的功能: 通过UDP广播实现Android局域网Peer Discovering; 实时Android语音对讲系统架构; 改进Android语音对讲系统的方法。
局域网内的Android系统两个apk可视通话,只要把apk安装到两个手机中,两个手机wifi连接同一个局域网,互相输入对方IP即可通信
实现了android端实时语音通话,可以本机自连也可以和别的端连接通话,默认的模式是外连模式,要想自连测试需要把Global.java中的sendToSelf静态变量改为true。本例子实现的是局域网的实时语音.rar,太多无法一一验证...
对讲机不同于移动电话,它不用根据通话时间计费。比较移动电话和双向对讲机的成本,用户会发现对讲机更经济...只要你的手机可以使用WiFi你就可以在局域网内像使用对讲机一样和同一个局域网内的所有成员进行对话和沟通。
包含了一系列经典的Java学习视频资料,Java初级开发 Java集合框架 AWT/Swing 多线程 网络 I/O 反射技术 泛型 注解 基本的设计模式 Java的项目开发 全套配套的ppt和源代码 ...Android局域网对讲机 等一系列的视频资料
Android应用源码代码规范功能完善Wifi对讲机是一个安卓对讲机应用的项目源码,代码规范注释清晰,功能完整界面简单。无论是做二次开发还是参考借鉴都是绝佳的项目源码。一个简单的按钮,按下就可以实时对讲,而且...
描述中提到的关键技术是“socket通信”,它在局域网内设备间传输语音数据,从而模拟对讲机的双向通话效果。 在Android平台上,实现Wi-Fi对讲机功能主要涉及以下几个关键技术点: 1. **Wi-Fi Direct**:这是一种...
在IT行业中,局域网视频聊天技术是一种常见且实用的应用,尤其在移动设备上,如Android平台。"局域网视频聊天demo"是为开发者提供的一款示例应用,旨在帮助大家理解和实现同类功能。这个项目可能包含源代码、配置...
在Android平台上实现P2P(点对点)语音对话,主要涉及到网络通信、音频处理以及实时性等技术。以下是对这个主题的详细说明: 一、P2P语音对话概述 P2P语音对话是一种直接在两个设备之间进行的即时通讯方式,它允许...
7. **局域网通信**:由于是局域网对讲,两部手机需要在同一网络环境下,可以通过Wi-Fi或移动热点建立连接。IP地址的填写通常是发送端的IP,接收端则需知道这个IP来建立Socket连接。 8. **错误处理和状态提示**:...
总的来说,"时时对讲机"的成功完善,体现了开发者在面对网络通信挑战时的技巧和经验,包括选择合适的网络协议、优化音频处理、以及充分利用Android平台的API。这份源码对于学习和研究Android实时通讯应用的开发具有...
在移动设备领域,实时对讲功能常常被用于各种应用程序中,如对讲机模拟应用、游戏内的语音聊天系统等。本篇将深入探讨一个基于Android平台的实时对讲实现案例——"android-recorder-2",通过分析项目的核心技术和...
综上,WiFi对讲APP源码涉及到的技术包括WiFi通信、Android应用开发、实时音频处理、网络编程、权限管理、性能优化以及安全性等多个方面。对于开发者来说,理解和掌握这些知识点是实现高效、稳定、安全的WiFi对讲应用...
一个简单的demo源码,通过填写局域网中海康威视摄像头的ip地址,端口号(默认8000),用户名(默认admin)和密码(海康的默认密码是“admin”+机身验证码),可以在登录后浏览摄像头,还有回放、捕获、对讲等简单功能...
这是在两个设备之间建立语音连接,就是把两个昂贵的蓝牙设备变成廉价的对讲机。 20. 蓝牙协议LAP(LAN Access Profile): LAP 是局域网接入协议。本功能定义了蓝牙设备如何通过点对点协议(PPP)连接 LAN 的程序....
第三代楼宇对讲多功能的可视对讲(局域网型)采用网络可视对讲系统,控制数字信号使用网线传输,音视频使用同轴电缆传输的楼宇对讲系统。第四代楼宇对讲(PDH型)通过结合楼宇对讲和智能家居技术,实现了小区综合...