新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > JNI技術(shù)如何在嵌入式軟件開發(fā)中應(yīng)用?

        JNI技術(shù)如何在嵌入式軟件開發(fā)中應(yīng)用?

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

        本文引用地址:http://www.104case.com/article/201808/385730.htm

        ①發(fā)起該流程。

        ②發(fā)起流程后,建立文件用于存儲圖片。

        ③用指針獲得分配的緩沖器,用于存儲獲得的幀。

        ④ 將指針壓棧(序列化緩沖器)。由于的內(nèi)存較小,為了防止內(nèi)存泄漏,Symbian操作系統(tǒng)有一個(gè)Cleanup stack的要求,即在使用指針時(shí),用PushL把指針壓入棧中,使用完后再用Pop彈出棧.如果在中間調(diào)用導(dǎo)致崩潰的函數(shù)時(shí)果真出現(xiàn)了問題,那么 Clean up stack可以通過調(diào)用該指針的析構(gòu)函數(shù)回收占用的空間。

        ⑤操縱攝像頭,捕捉視頻,并將圖像流從攝像頭端傳到緩沖器。

        ⑥將攝像頭內(nèi)的圖像流存入緩沖器內(nèi),并將緩沖器內(nèi)的流轉(zhuǎn)化為文件流,存為jpg格式的文件,將指向緩沖器的指針彈棧。

        ⑦在過程⑥中,如果使用完了序列化的緩沖器,則要重新序列化緩沖器,以備后面使用。

        ⑧當(dāng)接收到停止視頻捕捉的信號后,關(guān)閉文件。

        ⑨流程結(jié)束。

        (2)運(yùn)用JNI技術(shù)的視頻捕捉

        子功能捕捉視頻的實(shí)現(xiàn)是由操縱攝像頭、視頻播放(解碼器準(zhǔn)備)以及建立攝像頭和之間的連接會(huì)話三個(gè)活動(dòng)組成的。其中操縱攝像頭是通過調(diào)用底層設(shè)備的驅(qū)動(dòng)來實(shí)現(xiàn)的,需要利用JNI來實(shí)現(xiàn),完成的方法包括準(zhǔn)備、建立、刪除、銷毀攝像頭等。視頻播放的一系列過程也是通過c++代碼來實(shí)現(xiàn)的,除了準(zhǔn)備、建立、刪除、銷毀解碼器外,還有開始、暫停、停止解碼等。建立攝像頭和之間的連接類似建立客戶端和服務(wù)器連接,視頻流從攝像頭傳到手機(jī)界面是通過多媒體會(huì)話來完成的。多媒體會(huì)話的建立、關(guān)閉、摧毀以及會(huì)話建立后的發(fā)送、取消、讀取數(shù)據(jù)等也是JNI的應(yīng)用范疇。

        結(jié) 語

        主張采用純Java的人們通常反對本地化代碼的使用,認(rèn)為JNI技術(shù)會(huì)影響程序的可移植性和安全性。還有一些人認(rèn)為,在Java程序執(zhí)行的過程中調(diào)用c/c++程序只是對過去混合編程技術(shù)的簡單擴(kuò)展,其實(shí)際目的是為了充分利用大量原有的c程序庫。

        其實(shí),不必拘泥于嚴(yán)格的平臺獨(dú)立性限制,因?yàn)椴捎肑NI技術(shù)只是針對一些嚴(yán)重影響Java性能的代碼段。該部分可能只占源程序的極少部分,所以幾乎可以不考慮該部分代碼在主流平臺之間移植的工作量。同時(shí),也不必過分擔(dān)心類型匹配問題,完全可以控制代碼不出現(xiàn)這種錯(cuò)誤。此外,也不必?fù)?dān)心安全控制問題,因?yàn)? Java安全模型已擴(kuò)展為允許非系統(tǒng)類加載和調(diào)用本地方法,即如果在Java程序中直接調(diào)用c/c++語言產(chǎn)生的機(jī)器碼,該部分代碼的安全性就由Java 虛擬機(jī)控制。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 临洮县| 丰原市| 广南县| 铁力市| 秦皇岛市| 明星| 桃江县| 吉木乃县| 阿拉善右旗| 周至县| 永和县| 沙河市| 长治县| 准格尔旗| 靖江市| 怀仁县| 嘉义县| 象州县| 尉氏县| 湖州市| 多伦县| 宁强县| 黑水县| 讷河市| 渭源县| 高淳县| 镇安县| 嘉荫县| 大化| 信宜市| 宁蒗| 彭泽县| 民勤县| 阳曲县| 义马市| 天柱县| 加查县| 和平区| 都安| 关岭| 奎屯市|