新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于Android的机顶盒CAS系统的开发

基于Android的机顶盒CAS系统的开发

作者:时间:2012-08-21来源:网络收藏

3.1 搭建的NDK环境
由于是在Windows下进行,所以要在Windows下模拟Linux的环境,需要下载cygwin工具,下载地址为http://www.cygw in.com/setup.exe。安装方法请参考相关文档,这里就不赘述了。同样也需要的NDK套件,下载地址为http://developer.an droid.com/sdk/ndk/index.html;可以选择最新的版本下载,下载完毕,直接解压到同一路径下。然后在cygwin的安装目录home/Adm inistrator下的./bash_profile文件添加NDK的路径,就可以使用NDK下的ndk-build命令了,进入samples/hello-jni。在cygwin中调用ndk-build,如果出现如图7所示的结果,则NDK的环境已经搭建成功。

本文引用地址:http://www.eepw.com.cn/article/154097.htm

a.JPG


3.2 编写的makefile
笔者使用的是android-ndk-r7b版本,也是目前最新版本,其交叉编译器位于其toolchains/arm-linux-an-droideabi-4.4.3/pre built/windows/arm-linux-android/bin中,库的头文件位于/platforms/android-xx/arch-arm/usr/include中,库位于platform /android-xx/arch-arm/usr/lib中。知道了编译器和C库的头文件,就可以容易地编写出 makefile。在编写makefile时需要注意,若用到了posix的pthread库,则需要添加“LDFLAGS+=-lpthread”,否则在执行链接的时候会出现错误。编译完成之后如图8所示。
3.3 实现的JNI接口函数
因为提供给外部使用的API达20多个,这里以CASTB_GetVersion()函数为例,其他都是如此实现。新建一个文件夹,命名为STBCA,在文件下建立两个文件夹分别命名为JNI和SRC。JNI存放为CAS的JNI本地API,源文件为castb_api_jni.c;SRC存放的是上层JAVA应用程序,根据JNI标准则需把CASTB_GetVersion()定义为“Java_com_jpf_stbca_STBCA_CASTB_GetVersion();”。只要调用3.2小节的中liBCAS.a库中的源函数就实现了对原函数的包装,在同一目录下添加android.mk,内容如下所示:
LOCAL PATH=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE=casjni
LOCAL_SRC FILES=castb_api_jni.c
LOCAL_LDLIBS+=-lcas\
-lpthread
include $(BUILD_SHARED LIBRARY)
通过3.1小节的步骤就可以生成cas_jni.so库,上层如果曼调用cas_jni.so库中的函数只要在JAVA文件中声明public native CASTB _GetVersion()函数,且使用“static{system.loadlibrary(“cas_jni”);}”把动态库加载到连接器中,就完成了全部的设计。通过实践,负责上层软件编写的同时能够无缝地实现CAS系统API的调用。

结语
本文详细阐述了CAS子系统的开发过程和系统移植。在Android的开发过程中,使用的是华为的H3716C平台,笔者承担了CAS系统和PSI/SI节目表解析的开发与移植。使用此CAS子系统播放加密节目,持续稳定地播放一周而且没有出现马赛克或卡现象,说明此CAS子系统比较稳定。但CAS是一套功能完整的独立系统,而笔者只是重点探讨解密的过程,许多其他功能未有涉及,若想深入了解CAS系统,请参考CAS系统标准。


上一页 1 2 3 4 下一页

评论


相关推荐

技术专区

关闭