Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1531424
  • 博文数量: 114
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 1357
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-19 18:13
文章分类
文章存档

2010年(8)

2009年(9)

2008年(27)

2007年(62)

2006年(8)

我的朋友

分类: LINUX

2007-08-19 12:48:59

北京理工大学 20981 陈罡
通过研究moto的tapi发现,他们底层的代码写的确实不错,结构清晰,接口简单明了。而且经过试验还发现,通过tapi拨打电话,可以不需要弹出类似短消息的那个是否允许的对话框。呵呵,这样很好,很方便。毕竟虽然说是体贴用户,但是让用户频繁的一遍又一遍的按允许,也是一件很让人不爽的事情。
拨打电话应该来说是非常容易的,呵呵,同样只是编译的时候麻烦一些。Makefile需要链接的库有一些注意的地方,上一篇忘记贴makefile了,参考本篇的,应该不难写出来。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define TEL_NUMBER    "xxxxxxxxxxxx"
using namespace std ;
int main(int argc, char * argv[])
{
 INT32               call_fd ;
 TAPI_APP_MSGID_T    msg_id[] = { TAPI_APP_ASYNC_VOICECALL_MSG_GRPID } ;
 TAPI_RESULT_E       res_id ;
 TAPI_CALL_ID_T      call_id ;
 TAPI_PHONE_NUMBER_A tel_num = {' '};
 const char *        tel_ptr = TEL_NUMBER ;
 int                 tel_length = strlen(tel_ptr) ;
 int                 i ;
 // create call_fd, seems moto make the tapi some how like socket operation
 call_fd = TAPI_CLIENT_Init( msg_id, sizeof(msg_id) / sizeof(TAPI_APP_MSGID_T) ) ;
 if((call_fd == TAPI_INVALID_SOCKETFD) || (call_fd == 0) ) {
  cout<<"failed to create a call fd..."<  return -1 ;
 }
 
 // assign tel number to TAPI var
 for(i = 0 ; i < tel_length ; i++) {
  tel_num[i] = tel_ptr[i] ;
 }
 
 // make a call now
 res_id = TAPI_VOICE_MakeCall( tel_num, &call_id) ;
 if(res_id != TAPI_RESULT_SUCC) {
  cout<<"failed to make a call..."<  return -2 ;
 }
 
 // finally release the tapi client
 TAPI_CLIENT_Fini() ;
 return 0 ;
}
 
代码很简单,很清晰,我就不多解释了。tapi还可以做各种电话接听,截获等操作,不过过程相对繁琐一些,就不多做讲解了。
Makefile ---- >
EZX_BASE=..
CXX=arm-linux-g++
LNK=arm-linux-g++
STP=arm-linux-strip
MOC=$(EZX_BASE)/moc/moc
D2U=dos2unix
CXXFLAGS=-fno-exceptions -fno-rtti -Wall -g
INCLUDE=-I$(EZX_BASE)/include/qt -I$(EZX_BASE)/include/ezx
LIBDIRS=-L$(EZX_BASE)/lib -L$(EZX_BASE)/lib/ezx/lib
LIBS= -lezxappbase -lqte-mt -lpthread -lezxappsdk -lipp-jp \
-lezxopenwindow -lipp-miscGen -lezxjpeg -lezxpm -lezxtapi
OBJS=call.o
APP=call
%.o: %.cpp
    $(D2U) $<
    $(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
%.moc: %.cpp
    $(MOC) $< -o $@
$(APP): $(OBJS)
    $(CXX) $^ -o $@ $(LIBDIRS) $(LIBS)
    $(STP) $^
clean:
    rm -f -r $(APP) *.o *~
阅读(2548) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-10-28 22:14:23

我想做你徒弟 290156881@qq.com