Cordova入門系列(三)Cordova插件調用 轉發 https://www.cnblogs.com/lishuxue/p/6018416.html...

Cordova入門系列(三)Cordova插件調用

版權聲明:本文為博主原創文章,轉載請注明出處

?

?

  上一章我們介紹了cordova android項目是如何運行的,這一章我們介紹cordova的核心內容,插件的調用。演示一個例子,通過cordova插件,去調用攝像頭。

?

一、插件的安裝以及基本信息:

  我們先在項目中安裝調用攝像頭的插件cordova-plugin-camera,cd到hello下,執行:

cordova plugin add cordova-plugin-camera

  然后它會為我們的hello/plugins文件夾下添加cordova-plugin-camera插件(這個是整個這個插件模塊,可用于安卓和ios。卸載插件用cordova plugin remove?cordova-plugin-camera);

  同時也會在我們的platforms/android/platform_www/plugins下面添加對應的安卓的插件cordova-plugin-camera(這個是根據對應的平臺生成的對應的插件內容,只可用于本安卓平臺);

  也會在我們的資源文件夾assets/www/plugins下添加cordova-plugin-camera插件(這個資源文件夾下的所有的文件,才是真正的app運行的時候調用的,加載的文件);

  還會為我們的src下添加org.apache.cordova.camera包以及對應的java文件。

  為什么要在項目中加這么多,這只是cordova的機制,我們不作重點研究。這三個目錄是有不同的作用的,但我們只重點關注assets/www目錄下。

?

  除了上面這些,加完這個插件也會改變一些其他文件的內容,首先看res/xml/config.xml,最后多了一項配置信息:

<feature name="Camera"><param name="android-package" value="org.apache.cordova.camera.CameraLauncher" />
</feature>

  feature · name:"js中間件通過它調用java方法"。
  (中間件就是我們的插件對應的一些js文件。我們寫的js程序通過這些插件(中間件)去調用Jjava原生內容)
  param · name:"android-package" ? ? value:原生插件類的包類路徑。


  打開assets/www下cordova_plugins.js,發現其中也增加了很多內容:

復制代碼
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [{"id": "cordova-plugin-camera.Camera","file": "plugins/cordova-plugin-camera/www/CameraConstants.js","pluginId": "cordova-plugin-camera","clobbers": ["Camera"]},{"id": "cordova-plugin-camera.CameraPopoverOptions","file": "plugins/cordova-plugin-camera/www/CameraPopoverOptions.js","pluginId": "cordova-plugin-camera","clobbers": ["CameraPopoverOptions"]},{"id": "cordova-plugin-camera.camera","file": "plugins/cordova-plugin-camera/www/Camera.js","pluginId": "cordova-plugin-camera","clobbers": ["navigator.camera"]},{"id": "cordova-plugin-camera.CameraPopoverHandle","file": "plugins/cordova-plugin-camera/www/CameraPopoverHandle.js","pluginId": "cordova-plugin-camera","clobbers": ["CameraPopoverHandle"]}
];
module.exports.metadata = 
// TOP OF METADATA
{"cordova-plugin-whitelist": "1.3.0","cordova-plugin-compat": "1.0.0","cordova-plugin-camera": "2.3.0"
};
// BOTTOM OF METADATA
});
復制代碼

  id:插件中某個模塊或具體功能的id

  file:這個id對應的js文件(實現這個模塊或功能的文件)

  pluginId:插件的ID,通過這個ID可以進行插件的安裝和卸載

  clobbers:H5或js通過它去調用js中間件(插件)中定義的方法

?

二、在代碼中如何調用攝像頭插件

  上面我們說的都是在執行了cordova plugin add cordova-plugin-camera,安裝好插件之后所產生的內容以及插件的一些基本信息,配置信息。接下來我們說一下如何簡單使用這個插件。

  首先我們修改index.html(指的assets/www下的)

復制代碼
<!DOCTYPE html>
<html><head><meta name="format-detection" content="telephone=no"><meta name="msapplication-tap-highlight" content="no"><meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"><link rel="stylesheet" type="text/css" href="css/index.css"><title>Hello World</title></head><body><div class="app"><!-- 這里添加一個button去調用自己寫的拍照函數 --><button onClick="takePhoto()">拍照</button></div><script type="text/javascript" src="cordova.js"></script><script type="text/javascript" src="js/index.js"></script></body>
</html>
復制代碼

  接下來再修改index.js

復制代碼
//自己定義的拍照函數
function takePhoto() {//拍照//navigator.camera就是上面我們所說的clobbers定義的東西,用來調用插件中的方法的//getPicture就是插件中調用攝像頭拍照的方法navigator.camera.getPicture(takeSuccess, takeFail, {destinationType : Camera.DestinationType.FILE_URI});//拍照成功后回調function takeSuccess(imageURI) {console.log('success' + imageURI);}//失敗后回調function takeFail(message) {navigator.notification.alert("拍照失敗,原因:" + message);}
}
復制代碼

  至此,我們的Cordova攝像頭插件已經在代碼中調用好了,運行我們的項目,就可以拍照了。(當然,模擬器上是不行的,得用真機)

?

三、getPicture()方法詳解:

  camera.getPicture(cameraSuccess, cameraError, cameraOptions)
  選擇使用攝像頭拍照,或從設備相冊中獲取一張照片。圖片以base64編碼的字符串或圖片URI形式返回。返回值會按照用戶通過cameraOptions參數所設定的下列格式之一發送給cameraSuccess回調函數:

  1.一個字符串,包含Base64編碼的照片圖像(默認情況)。
  2.一個字符串,表示在本地存儲的圖像文件位置。

?

  cameraSuccess:

  提供圖像數據的onSuccess回調函數。

function(imageData) {// 對圖像進行處理
}

  參數imageData:根據cameraOptions的設定值,為Base64編碼的圖像數據或圖像文件的URI。(字符串類型)

?

  errorCallback:

  提供錯誤信息的onError回調函數。

function(message) {// 顯示有用信息
}

  參數:message:設備本地代碼提供的錯誤信息。(字符串類型)

?

  cameraOptions:
  定制攝像頭設置的可選參數。

復制代碼
{    quality : 75,destinationType : Camera.DestinationType.DATA_URL,sourceType : Camera.PictureSourceType.CAMERA,allowEdit : true,encodingType : Camera.EncodingType.JPEG,targetWidth : 100,targetHeight : 100
};
復制代碼

  quality:存儲圖像的質量,范圍是[0,100]。(數字類型)
  destinationType:選擇返回數據的格式。通過navigator.camera.DestinationType進行定義。(數字類型)
  備注:強烈建議將“Camera.destinationType”設為FILE_URI。
  sourceType:設定圖片來源。通過nagivator.camera.PictureSourceType進行定義。(數字類型)
  allowEdit:在選擇圖片進行操作之前允許對其進行簡單編輯。(布爾類型)
  EncodingType:選擇返回圖像文件的編碼方式,通過navigator.camera.EncodingType進行定義。(數字類型)
  targetWidth:以像素為單位的圖像縮放寬度,必須和targetHeight同時使用。相應的寬高比保持不變。(數字類型)
  targetHeight:以像素為單位的圖像縮放高度,必須和targetWidth同時使用。相應的寬高比保持不變。(數字類型)
  MediaType:設置選擇圖片的類型,只有當PictureSourceType is PHOTOLIBRARY or SAVEDPHOTOALBUM時才會生效,該參數由nagivator.camera.MediaType (數字類型)定義。

轉載于:https://www.cnblogs.com/Jeely/p/10791113.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277812.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277812.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277812.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

clojure with postgres

主要關注訪問pg。不關心其他db 1 clojure.java.jdbc https://github.com/clojure/java.jdbchttp://clojure-doc.org/articles/ecosystem/java_jdbc/reusing_connections.html這個最廣&#xff0c;需要配合不同DB[org.clojure/java.jdbc "0.7.9"] [org.postgresql/pos…

lua入門

https://en.blog.nic.cz/2015/08/12/embedding-luajit-in-30-minutes-or-so/

shell腳本傳可選參數 getopts 和 getopt的方法

寫了一個shell腳本&#xff0c;需要向shell腳本中傳參數供腳本使用&#xff0c;達到的效果是傳的參數可以是可選參數 下面是一個常規化的shell腳本&#xff1a; echo "執行的文件名為: $0";echo "第一個參數名為: $1";echo "第二個參數名為: $2"…

Teams Tab App 代碼深入淺出 - 配置頁面

上一篇文章我們使用Teams Toolkit 來創建、運行 tab app。這篇文章我們深入來分析看一下tab app 的代碼。 先打開代碼目錄&#xff0c;可以看到在 src 目錄下有入口文件 index.tsx&#xff0c;然后在 components 目錄下有更多的一些 tsx 文件&#xff0c;tsx 是 typescript的一…

labelme標注的json文件數據轉成coco數據集格式(可處理目標框和實例分割)

這里主要是搬運一下能找到的 labelme標注的json文件數據轉成coco數據集格式&#xff08;可處理目標框和實例分割&#xff09;的代碼&#xff0c;以供需要時參考和提供相關幫助。 1、官方labelme實現 如下是labelme官方網址&#xff0c;提供了源代碼&#xff0c;以及相關使用方…

EpSON TM-82II驅動在POS系統上面安裝問題處理

按照品牌名稱&#xff0c;在網上下載的安裝包為apstmt82.rar 下面講解一下&#xff0c;如何的解決愛普生打印機在POS機器上面的安裝問題&#xff0c;這個算是一個比較奇特的故障問題&#xff0c;不像其它的新北冰洋&#xff08;SN3C&#xff09;的U80_U80II&#xff0c;SeNor的…

打印圖片的屬性和實現另存圖片功能以及使用numpy

上一篇我們已經學了如何讀取圖片的功能了以及和opencv的環境搭建了&#xff0c;今天接著來學習&#xff0c;哈哈哈&#xff0c;今天剛好五一&#xff0c;也沒閑著&#xff0c;繼續學習。 1、 首先我們來實現打印出圖片的一些屬性功能&#xff0c; 先來看一段代碼&#xff1a; 1…

Ubuntu 18.04下命令安裝VMware Tools

2019獨角獸企業重金招聘Python工程師標準>>> sudo apt-get upgrade sudo apt-get install open-vm-tools-desktop -y sudo reboot 轉載于:https://my.oschina.net/u/574036/blog/1829455

phpstorm PHP language level無法選擇

phpstorm PHP7新特性一直提示紅色波浪線&#xff0c;應該是沒有設置PHP 版本&#xff0c;但是打開PHPstorm---preference--lannguage&frameworks--PHP &#xff0c; 發現PHP language level 無法選擇PHP7.2 &#xff0c;查看旁邊的提示信息說是同步了composer 的原因&#…

Qfile

打開方式&#xff1a; 1 void AddStudents::write_to_file(QString src){2 QFile file("stu.txt");3 if (!file.open(QIODevice::Append | QIODevice::Text)){4 QMessageBox::critical(this,"打開文件錯誤","確認");5 r…

多層裝飾器、帶參數裝飾器

# 帶參數的裝飾器 # import time # FLAGE False # 加個標志位&#xff0c;使全部的裝飾器可以失效或有效 # def timmer_out(flag): # def timmer(func): # def inner(*args,**kwargs): # if flag: # start time.time() # …

IDEA svn 菜單不見了,解決方法

2019獨角獸企業重金招聘Python工程師標準>>> 參考地址: http://www.cnblogs.com/signheart/p/193448a98f92bd0cc064dbd772dd9f48.html,我是第二種方法解決的! 轉載于:https://my.oschina.net/liuchangng/blog/1829679

蘇寧易購:Hadoop失寵前提是出現更強替代品

在筆者持續調研國內Hadoop生態系統生存現狀的同時&#xff0c;KDnuggets發布的2018年數據科學和機器學習工具調查報告再次將“Hadoop失寵”言論復活。報告一出&#xff0c;“Hadoop被拋棄”幾個字瞬時成為各大標題黨的最愛&#xff0c;充斥在不同的新聞平臺。這些報告和數據是否…

VS2017生成一個簡單的DLL文件 和 LIB文件——C語言

下面我們將用兩種不同的姿勢來用VS2017生成dll文件&#xff08;動態庫文件&#xff09;和lib文件&#xff08;靜態庫文件&#xff09;&#xff0c;這里以C語言為例&#xff0c;用最簡單的例子&#xff0c;來讓讀者了解如何生成dll文件&#xff08;動態庫文件&#xff09; 生成動…

Hive數據類型及文本文件數據編碼

本文參考Apache官網&#xff0c;更多內容請參考&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualTypes 1. 數值型 類型支持范圍TINYINT1-byte signed integer, from -128 to 127SMALLINT2-byte signed integer, from -32,768 to 32,767INT/INTEGE…

Python繪圖Turtle庫詳解

轉載&#xff1a;https://blog.csdn.net/zengxiantao1994/article/details/76588580 Turtle庫是Python語言中一個很流行的繪制圖像的函數庫&#xff0c;想象一個小烏龜&#xff0c;在一個橫軸為x、縱軸為y的坐標系原點&#xff0c;(0,0)位置開始&#xff0c;它根據一組函數指令…

(待完成)qbxt2019.05 總結2 - 數位DP

數位 DP 嚴格來說其實并不是 DP……它只是個單純的計數問題 但是怎么說呢……現在大家似乎都把數位 DP 叫這個名字&#xff0c;所以……我們還是……叫它 DP 額什么是數位 DP 呢&#xff1f; 一句話概括——一類求在 K 進制下m滿足條件的數的數量有多少個的算法 常見的問題形式…

mac使用brew update無反應解決辦法

為什么80%的碼農都做不了架構師&#xff1f;>>> mac系統中使用brew作為包管理工具&#xff0c;類似centos中的yum&#xff0c;ubuntu中的apt-get&#xff0c;在使用brew update的使用&#xff0c;有時候會長時間無反應&#xff0c;或者中途斷開連接&#xff0c;這是…

2018-2019-2 20175223 實驗三《敏捷開發與XP實踐》實驗報告

目錄 北京電子科技學院&#xff08;BESTI&#xff09;實驗報告實驗名稱&#xff1a;實驗三 敏捷開發與XP實踐實驗內容、步驟與體會&#xff1a;一、實驗三 敏捷開發與XP實踐-1二、實驗三 敏捷開發與XP實踐-2三、實驗三 敏捷開發與XP實踐-3四、實驗三 敏捷開發與XP實踐-4五、代碼…

(八)路徑(面包屑導航)分頁標簽和徽章組件

一&#xff0e;路徑組件 路徑組件也叫做面包屑導航。 <ol class"breadcrumb"><li><a href"#">首頁</a></li><li><a href"#">產品列表</a></li><li><a href"#">大…