`
hkk
  • 浏览: 55352 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

参考了一些代码,实现了局域网的实时语音对讲功能,只要同网段局域网即可通话,文字聊天,传输文件等,包含了飞鸽传输的功能。

主要是录音发送和接收播放录音比较重要。录音线程:

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
分享到:
评论
43 楼 longli625 2016-01-14  
http://112.74.131.61/ZnWatch/xcWalkieTalkie.apk android 网络对讲机中文版,在任何地方只要连上网,语音可以广播,大家可以下载玩下
42 楼 wb1456 2015-05-22  
可以发一个源码学习一下吗?非常感谢!!715562435@qq.com
41 楼 qq877693928 2015-05-04  
求源码,877693928@qq.com,谢谢
40 楼 shaos 2014-10-31  
可以发一个源码学习一下吗?非常感谢!!921536602
39 楼 peng22102 2014-02-07  
求源码学习一下,非常感谢  1213362494@qq.com
38 楼 dangerous_man 2014-01-22  
博主你好,请问这个软件是你写的吗?感觉很不错,能不能发份源码学习一下,谢谢!
37 楼 kuangpuhua 2013-11-17  
求源码学习,81898538@qq.com
36 楼 8851314a 2013-09-02  
求一份源码。我想学习。邮箱是499643913@qq.com、求源码。楼主
35 楼 15112472836 2013-08-17  
850561034@qq.com 谢谢麻烦也给份我,正需要呢。
34 楼 oaichina 2013-08-16  
长沙满哥,求个源码啊,现在要做这个,都是长沙滴,13402512@qq.com
33 楼 8851314a 2013-07-31  
楼主可以给我份源码吗499643013@qq.com万分感谢。求源码
32 楼 272954437 2013-07-16  
楼主,,,,求一份源码深入学习,,,xiongw@ehualu.com,,,万分感谢!!!
31 楼 msibigbang 2013-07-15  
楼主可不可以发份源码?  cqluotingting@sina.com  万分感谢  
30 楼 chen646531623 2013-04-12  
大哥,发份源码给小弟吧,实在需要,先谢过了!
646531623@qq.com
29 楼 bobo508 2013-04-03  
大哥,真心求一份源码,感激不尽!!jqbo84@163.com
28 楼 whj_mengniu 2013-02-06  
求源码, whj_mengniu@yahoo.com.cn
谢谢!
27 楼 overloving 2013-01-24  
真心需要一份源码..谢谢!
wello@139.com
26 楼 fiona_zi2012 2013-01-16  
楼主,分享一下吧。或者qq354095197讨论一下,可以吗??
25 楼 dndxcsy 2012-12-26  
楼主可以发源码么?  dndxcsy@163.com  万分感谢啊
24 楼 bing_zz 2012-11-27  
一个个人都在要源码,没发现楼主给的apk里值入广告了吗?
都存心来砸饭碗的。。。
楼主植入的是万普平台的广告吧。
楼主这应用不错,不知道收益如何?
到这个水平的应用每月能有多少下载量?

相关推荐

    android局域网对讲软件源码

    这份"android局域网对讲软件源码"提供了一种方法,让Android设备能够在同一个局域网内进行语音通话,无需依赖外部服务器,极大地降低了通信成本。下面将详细解析这一技术的关键知识点。 1. **Socket编程**:Android...

    局域网对讲机

    总的来说,“局域网对讲机”项目涵盖了Android应用开发中的Socket通信、网络编程、音频处理和多线程等多个关键知识点。通过实际操作这个项目,初学者可以深入了解这些技术,并提升自己的编程技能。同时,这个项目也...

    Android局域网视频聊天

    综上所述,这个Android局域网视频聊天项目涵盖了网络通信、视频音频处理、UI设计、数据库操作等多个方面的技术。通过这些技术的综合运用,开发者为用户提供了一个半成品但功能完善的视频聊天应用。

    Android开发WIFI局域网对讲机WifiTalk

    在Android平台上开发一款名为"WifiTalk"的WIFI局域网对讲机应用,涉及到的技术领域广泛,包括网络通信、多媒体处理以及Android应用开发等多个方面。以下是对这些知识点的详细阐述: 1. **Android应用开发基础**:...

    android实现的对讲机

    该工程的目标是实现Android局域网内的语音对讲。 目前已实现的功能: 通过UDP广播实现Android局域网Peer Discovering; 实时Android语音对讲系统架构; 改进Android语音对讲系统的方法。

    局域网内的Android系统两个apk可视通话

    局域网内的Android系统两个apk可视通话,只要把apk安装到两个手机中,两个手机wifi连接同一个局域网,互相输入对方IP即可通信

    安卓对讲机录音机相关-实现了android端实时语音通话可以本机自连也可以和别的端连接通话默认的模式是外连模式要想自连测试需要把Global.java中的sendToSelf静态变量改为true。本例子实现的是局域网的实时语音.rar

    实现了android端实时语音通话,可以本机自连也可以和别的端连接通话,默认的模式是外连模式,要想自连测试需要把Global.java中的sendToSelf静态变量改为true。本例子实现的是局域网的实时语音.rar,太多无法一一验证...

    WifiTalk-Android-手机对讲

    对讲机不同于移动电话,它不用根据通话时间计费。比较移动电话和双向对讲机的成本,用户会发现对讲机更经济...只要你的手机可以使用WiFi你就可以在局域网内像使用对讲机一样和同一个局域网内的所有成员进行对话和沟通。

    全套Java经典学习视频资料

    包含了一系列经典的Java学习视频资料,Java初级开发 Java集合框架 AWT/Swing 多线程 网络 I/O 反射技术 泛型 注解 基本的设计模式 Java的项目开发 全套配套的ppt和源代码 ...Android局域网对讲机 等一系列的视频资料

    Android应用源码代码规范功能完善Wifi对讲机

    Android应用源码代码规范功能完善Wifi对讲机是一个安卓对讲机应用的项目源码,代码规范注释清晰,功能完整界面简单。无论是做二次开发还是参考借鉴都是绝佳的项目源码。一个简单的按钮,按下就可以实时对讲,而且...

    Wifi对讲机.zip

    描述中提到的关键技术是“socket通信”,它在局域网内设备间传输语音数据,从而模拟对讲机的双向通话效果。 在Android平台上,实现Wi-Fi对讲机功能主要涉及以下几个关键技术点: 1. **Wi-Fi Direct**:这是一种...

    局域网视频聊天demo

    在IT行业中,局域网视频聊天技术是一种常见且实用的应用,尤其在移动设备上,如Android平台。"局域网视频聊天demo"是为开发者提供的一款示例应用,旨在帮助大家理解和实现同类功能。这个项目可能包含源代码、配置...

    android p2p 语音对话

    在Android平台上实现P2P(点对点)语音对话,主要涉及到网络通信、音频处理以及实时性等技术。以下是对这个主题的详细说明: 一、P2P语音对话概述 P2P语音对话是一种直接在两个设备之间进行的即时通讯方式,它允许...

    Android语音实时传输

    7. **局域网通信**:由于是局域网对讲,两部手机需要在同一网络环境下,可以通过Wi-Fi或移动热点建立连接。IP地址的填写通常是发送端的IP,接收端则需知道这个IP来建立Socket连接。 8. **错误处理和状态提示**:...

    时时对讲机最终完善版本

    总的来说,"时时对讲机"的成功完善,体现了开发者在面对网络通信挑战时的技巧和经验,包括选择合适的网络协议、优化音频处理、以及充分利用Android平台的API。这份源码对于学习和研究Android实时通讯应用的开发具有...

    android-recorder-2

    在移动设备领域,实时对讲功能常常被用于各种应用程序中,如对讲机模拟应用、游戏内的语音聊天系统等。本篇将深入探讨一个基于Android平台的实时对讲实现案例——"android-recorder-2",通过分析项目的核心技术和...

    wifi对讲APP源码

    综上,WiFi对讲APP源码涉及到的技术包括WiFi通信、Android应用开发、实时音频处理、网络编程、权限管理、性能优化以及安全性等多个方面。对于开发者来说,理解和掌握这些知识点是实现高效、稳定、安全的WiFi对讲应用...

    海康威视摄像头调用Android源码示例.zip

    一个简单的demo源码,通过填写局域网中海康威视摄像头的ip地址,端口号(默认8000),用户名(默认admin)和密码(海康的默认密码是“admin”+机身验证码),可以在登录后浏览摄像头,还有回放、捕获、对讲等简单功能...

    Android 蓝牙开发相关知识总结

    这是在两个设备之间建立语音连接,就是把两个昂贵的蓝牙设备变成廉价的对讲机。 20. 蓝牙协议LAP(LAN Access Profile): LAP 是局域网接入协议。本功能定义了蓝牙设备如何通过点对点协议(PPP)连接 LAN 的程序....

    安卓楼宇对讲系统方案.doc

    第三代楼宇对讲多功能的可视对讲(局域网型)采用网络可视对讲系统,控制数字信号使用网线传输,音视频使用同轴电缆传输的楼宇对讲系统。第四代楼宇对讲(PDH型)通过结合楼宇对讲和智能家居技术,实现了小区综合...

Global site tag (gtag.js) - Google Analytics