`
w7849516230
  • 浏览: 18468 次
文章分类
社区版块
存档分类
最新评论
文章列表
从整理几款sip phone,到简单修改播放声音文件,发现少了最基本的环境搭建及源码的认识,现在重新记录下。 1.sip简要介绍 这里提及一些sip相关的必要知识,方便对该协议有个整体的了解,同时也可以为后续相关的应用开发 ...
在这一篇里记录下在Java sip softphone的基础上添加播放音乐文件的功能。前面介绍了几款sipphone,发现Java sip softphone这款开源软件功能简单易于修改,根据自己的需要选择是否保留其GUI,然后修改少部分代码即可实现在拨号后播放指定的音乐文件。但是仍然有几个问题有待以后解决:1是对整个源码的框架流程的分析,目前我也只是删除了其GUI部分,而底层的sip rtp传输没有涉及;2是我下载的版本在挂断、远端忙等情况时有问题;3是播放声音文件目前只是使用默认支持的wav格式,其它格式可以扩展,但是我实现的方式应该还是有问题,因为获取发送声音数据的间隔还没有确定,只是自己 ...
因为要做个跟sip phone相关又跟TTS扯点关系的东西;忙活了3周了初步拿着源码可以拨电话放个录音了,因此把些东西整理下。因为要求是使用Java,当然最初定的是jain-sip sip-servlet一个做客户端一个做服务端,而且服务端是不用改的。对于sip从零开始了。 首先是了解到服务端可以用Asterisk、sip-foundry,因为采用通用的sip协议,而且不用修改,因此直接拷贝了个sip-foundry,然后下载网上的X-Lite拨打测试了下。而后得知SIP(会话初始协议)从字面看是不关心你怎么在会话中交互数据的,因此光看jain-sip似乎没多大用处,当时看到Oracle官 ...
有些事情一直强调,一直不去遵守,到了某个时候,结果它自己成为了习惯。很不明白,就像小时候那么爱玩台球,怎么给自己施加压力还是不行;后来迷上了电脑、网络,居然就把台球给忽略了,想好好读书,还是天天跑网吧 ...
出来混的,总是要还的。看来做软件,写代码也是这样啦!这篇应该算是Java编程思想阅读笔记的续集,由一段写得非常垃圾的程序引起,牵出了垃圾回收等一些相关知识,至于原来程序出现的堆溢出(java.lang.OutOfMemoryError: Java heap space)原因,还得继续寻找。下面先看一段类似的垃圾代码:package com.javatest.gc.lixuan; import java.lang.ref.SoftReference; public class GCTest { public static void main(String[] args) { final ...
花了几天时间赶了个软件,功能是Telnet登录到一台Linux主机上,然后执行命令,将返回的信息解析后插入到Oracle数据库中(多线程登录,数据库连接池处理连接并发)。总的来说功能比较简单,但是对Oracle数据库使用完全是0,还是让人纠结,所以记录下来。 首先说Java下Telnet的实现。先提Apache基金会(http://projects.apache.org/index.html),下面的提供的开源软件非常多,进入Categories可以领略下。我这里用到了Commons Net(http://commons.apache.org/net/download_net.cgi),下 ...
不得不说在前面,这个是在做Android按键的监听与模拟时完成的环境搭建与测试,虽然没有用上,但是这个配置过程可以留着,参考的文章非常详细的叙述,确实没有遇到大的问题,但是Java本地调用(JNI)并不能解决访问Linux设备文件等操作的权限问题的,千万别忽略了。 1.NDK的理解 我的理解谈不上什么,借用他们的:NDK 提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so(Windows下位dll)和java 应用一起打包成apk。按照一般的理解,Android的运行环境是在ARM处理器上,那么你就必须有相应的交叉编译器等(工具链),意思是你用ARM平台上的 ...
最近碰到一个问题,就是Android的emulator只能打开16个,在网上找到文章有说adb连接数量是16个的,但是没说这个avd也只能16个(当然是在一台电脑上)。于是,看看官方文档,自己从源码里找原因吧。不过先说明的是官方对于avd的数量说是没有限制的,自己可以看看。后面我也会简单记录一下我所了解到的和简单的分析情况。下面主要介绍自己下载Android源码与单独编译emulator和adb的过程。 Android源码是我在出差的时候下的,直接把Android源码的全部同步下来,反正是晚上开了就没有管。记得原来在Windows下用Git单独下的时候,那个麻烦的,而且如果对Android ...
开篇先说些废话,提醒自己,因为每次都给自己找理由。在碰到并解决一些问题的时候完全可以记录下来,方便自己查看,也可以让碰到同样问题的人找到,免得再走些弯路,但是,老是以正在朝着目标迈进,时间紧,没法整理 ...
没有人可以随随便便成功。 出差的这一个多月的时间里,有很多事情令人快乐而难忘。在北京时,第一次参加了央视节目《谢天谢地你来啦》的节目录制,刚好也是这个节目正式播出的第一次录制。节目从九点半一直持续到快12点,虽然是录制,但是是一次性过,没有给人是录制的感觉,更像是充分的享受一个节目的欢乐时光。对于央视主持人,有着专业的声音,一致的沉稳,特别是崔永元,可能没有太多的娱乐节目,总给人有些刻板(不太恰当啊)的印象。但是真的在现场,他一点都不落于那个拉动节目录制开始前气氛的阿姐,让我们在见到他就兴奋之时,跟着他的气场,进入他的节目当中;是的他带动周围的所有人,跟着欢闹,跟着呐喊;即使在节目当中,不 ...
接着上篇说,好歹上面也加了个线程池,用好这概念,还是有些难度的,更不要说提出这些概念的人。可是看着看着发现技术又跟我前面记录的一样,是个熟悉的过程,我们逃脱不了技术工人,我不是个合格的,因为让我从无到 ...
这里的HttpServer,并不是哪里专门下载的类库了,而是在JDK1.6中自带的,在com.sun.net.httpserver包中,提供了简单的较高层次意义上的Http ServerAPI,可以构建内置的HTTP Server,支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现。程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServe ...
老是看了就忘,实在是不行啊,还是都一点一点记下来,帮着自己也帮着初学者吧。白话的描述自己的过程。首先说明的是这个用来做什么:处理http(超文本传输协议)报文,就是可以作为客户端,从网上获取个天气,手机归属 ...
自己的阅读笔记算是先告一段落了,现在也在出差,老是静不下心来去看书;本来对这次出来挺不满的,在慢慢的接触过一些人,见过一些事情之后,多少还是感谢这次出来的机会,至少乘机见了好多亲戚朋友啊。 先从自己的 ...
继续把笔记整理着。并发多线程的东西说起来就很多了,如果说复杂,要是线程之间的交集较多的话(交互啊,共享资源等等),确实很棘手,而且往往测试还是个大问题,再扯上性能稳定之类云云就。。。;如果说处理的逻辑清晰简单,那么它也挺简单的,似乎只要实现Runable接口,并通过Thread类或者Executor接口(Executor、ExecutorService)管理就好了;个人的感觉首先把逻辑、状态转换、交互理清了,后续会少很多麻烦的。 1.基本线程机制 (1)首先谈Runnable接口,可以看到其本身只有一个run方法,在类的run方法中开启另一个线程。而为了想对创建的线程增加些管理 ...
Global site tag (gtag.js) - Google Analytics