<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > 基于Android的機(jī)頂盒CAS系統(tǒng)的開發(fā)

          基于Android的機(jī)頂盒CAS系統(tǒng)的開發(fā)

          作者: 時(shí)間:2012-08-21 來源:網(wǎng)絡(luò) 收藏

          3.1 搭建的NDK環(huán)境
          由于是在Windows下進(jìn)行,所以要在Windows下模擬Linux的環(huán)境,需要下載cygwin工具,下載地址為http://www.cygw in.com/setup.exe。安裝方法請參考相關(guān)文檔,這里就不贅述了。同樣也需要的NDK套件,下載地址為http://developer.a(chǎn)n droid.com/sdk/ndk/index.html;可以選擇最新的版本下載,下載完畢,直接解壓到同一路徑下。然后在cygwin的安裝目錄home/Adm inistrator下的./bash_profile文件添加NDK的路徑,就可以使用NDK下的ndk-build命令了,進(jìn)入samples/hello-jni。在cygwin中調(diào)用ndk-build,如果出現(xiàn)如圖7所示的結(jié)果,則NDK的環(huán)境已經(jīng)搭建成功。

          本文引用地址:http://www.ex-cimer.com/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時(shí)需要注意,若用到了posix的pthread庫,則需要添加“LDFLAGS+=-lpthread”,否則在執(zhí)行鏈接的時(shí)候會出現(xiàn)錯(cuò)誤。編譯完成之后如圖8所示。
          3.3 實(shí)現(xiàn)的JNI接口函數(shù)
          因?yàn)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/CAS">CAS提供給外部使用的API達(dá)20多個(gè),這里以CASTB_GetVersion()函數(shù)為例,其他都是如此實(shí)現(xiàn)。新建一個(gè)文件夾,命名為STBCA,在文件下建立兩個(gè)文件夾分別命名為JNI和SRC。JNI存放為CAS的JNI本地API,源文件為castb_api_jni.c;SRC存放的是上層JAVA應(yīng)用程序,根據(jù)JNI標(biāo)準(zhǔn)則需把CASTB_GetVersion()定義為“Java_com_jpf_stbca_STBCA_CASTB_GetVersion();”。只要調(diào)用3.2小節(jié)的中l(wèi)iBCAS.a(chǎn)庫中的源函數(shù)就實(shí)現(xiàn)了對原函數(shù)的包裝,在同一目錄下添加android.mk,內(nèi)容如下所示:
          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小節(jié)的步驟就可以生成cas_jni.so庫,上層如果曼調(diào)用cas_jni.so庫中的函數(shù)只要在JAVA文件中聲明public native CASTB _GetVersion()函數(shù),且使用“static{system.loadlibrary(“cas_jni”);}”把動態(tài)庫加載到連接器中,就完成了全部的設(shè)計(jì)。通過實(shí)踐,負(fù)責(zé)上層軟件編寫的同時(shí)能夠無縫地實(shí)現(xiàn)CAS系統(tǒng)API的調(diào)用。

          結(jié)語
          本文詳細(xì)闡述了CAS子系統(tǒng)的開發(fā)過程和系統(tǒng)移植。在Android的開發(fā)過程中,使用的是華為的H3716C平臺,筆者承擔(dān)了CAS系統(tǒng)和PSI/SI節(jié)目表解析的開發(fā)與移植。使用此CAS子系統(tǒng)播放加密節(jié)目,持續(xù)穩(wěn)定地播放一周而且沒有出現(xiàn)馬賽克或卡現(xiàn)象,說明此CAS子系統(tǒng)比較穩(wěn)定。但CAS是一套功能完整的獨(dú)立系統(tǒng),而筆者只是重點(diǎn)探討解密的過程,許多其他功能未有涉及,若想深入了解CAS系統(tǒng),請參考CAS系統(tǒng)標(biāo)準(zhǔn)。


          上一頁 1 2 3 4 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();