如何从gsm网络获取数据

时间:2015-02-03 12:03:39

标签: android gsm

我正试着看看gsm如何影响电话号码。这就是我想要做的。一个人将通过电话交谈,我将在他说话的同时通过电话的麦克风录制他的声音,而在另一部电话上,我将获得来自gsm的数据并进行比较。我想编写一个Android应用程序来获取该数据。这可能在Android上,或者你能建议另一种方法来实现这一目标吗?

1 个答案:

答案 0 :(得分:1)

一些背景(你可能已经知道了) ......

当您拨打GSM电话时,与您的语音对应的电话麦克风中的模拟信号将转换为一系列数字值,然后使用语音编解码器进行编码。这基本上是一种聪明的算法,可以尽可能少地捕获尽可能多的语音。

这个想法是保持非常好的语音质量,同时节省呼叫所需的带宽量。使用的技术包括不传输相当长的时间段(当你不说话时)和各种压缩和预测编码算法。在GSM中已经存在并且仍然存在许多编解码器,但是最新的和通用的优选编解码器被称为AMR-Narrowband。

几乎所有的GSM部署都会对手机和基站之间的语音进行加密 - 虽然各种加密算法都存在公开的弱点,但我假设(希望......)解密不是您正在寻找的。

您的问题 - '我希望看到当语音达到gsm时会有数据丢失或损坏

首先,值得注意的是,演讲是相对而言的。至少与数据相比,容忍少量数据丢失和损坏。在VoIP网络中突发丢包是很常见的,并且可能导致语音质量暂时降低。其次,VoIP网络中的数据包丢失将包括可能令人困惑的延迟数据包 - 如果数据包到达太晚而无法包含在“声音”中。在接收器扬声器中播放然后从VoIP的角度来看它有效地丢失了,即使其他措施可能表明它只是迟到了。

要实际测量GSM手机和基站之间的损耗,您需要访问基站收到的数据,除非您是运营商,否则通常不会拥有这些数据。

如果您进行端到端测试,从一个GSM到另一个GSM,您的语音路径也将遍历其他网络节点,因此您不会知道是否通过GSM空中接口或一个或多个发生任何丢失或损坏其他节点。

您还需要了解从一个小区到另一个小区的切换以及从2G到3G(GSM到UMTS)的切换,这可能会影响您的测试(即使固定电话在某些情况下也可以切换)。

如果您的兴趣纯粹是学术性的,那么最简单的方法就是创建自己的GSM基站并对此进行测试 - 在一个盒子中存在多个开源GSM'网络'应该允许你这样做的项目。我自己没有使用它,但是这个看起来最受支持的是这个 - 请查看社区标签下的邮件列表,以便找到可能跟进调查的好地方:

http://openbts.org