phonegap-android硬件設備的調用





環境配置


插件安裝


在創建phonegap工程後,進入到plugins文件夾下
根據自己所需要的功能添加響應插件

各項功能對應插件安裝方法如下
//設備API
cordovaplugin add org.apache.cordova.device                    
//網絡(事件)      
cordovaplugin add org.apache.cordova.network-information       
//電池(事件)
cordovaplugin add org.apache.cordova.battery-status               
//加速器   
cordovaplugin add org.apache.cordova.device-motion               
//羅盤 
cordovaplugin add org.apache.cordova.device-orientation          
//定位
cordovaplugin add org.apache.cordova.geolocation                   
//攝像頭
cordovaplugin add org.apache.cordova.camera                      
//媒體文件處理
cordovaplugin add org.apache.cordova.media-capture               
//媒體文件處理
cordovaplugin add org.apache.cordova.media                              
//文件訪問
cordovaplugin add org.apache.cordova.file                            
//文件傳輸    
cordovaplugin add org.apache.cordova.file-transfer                    
//對話框
cordovaplugin add org.apache.cordova.dialogs                          
//震動
cordovaplugin add org.apache.cordova.vibration                       
//聯繫人
cordovaplugin add org.apache.cordova.contacts                      
//全球化 
cordovaplugin add org.apache.cordova.globalization               
//閃屏  
cordovaplugin add org.apache.cordova.splashscreen         
//打開新的瀏覽器窗口
cordovaplugin add org.apache.cordova.inappbrowser                    
//調試控制檯
cordovaplugin add org.apache.cordova.console 

權限設置


在config.xml中
根據自己所需要實現的功能開放相應權限
各項權限設置方法如下
//允許應用程序訪問和修改checkin數據庫中”properties”表數據
android.permission.ACCESS_CHECKIN_PROPERTIES
//允許應用程序通過WiFi或移動基站獲取粗略的位置信息
android.permission.ACCESS_COARSE_LOCATION
//允許應用程序通過GPS獲取精確的位置信息
android.permission.ACCESS_FINE_LOCATION
//允許應用程序訪問額外的位置提供者命令
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
//允許應用程序獲取模擬定位信息用於開發者調試應用
android.permission.ACCESS_MOCK_LOCATION
//允許應用程序獲取網絡信息狀態
android.permission.ACCESS_NETWORK_STATE
//允許應用程序使用SurfaceFlinger底層圖形顯示支持,一般用於遊戲或照相機預覽界面和底層模式的屏幕截圖
android.permission.ACCESS_SURFACE_FLINGER
//允許應用程序訪問Wi-Fi網絡狀態信息
android.permission.ACCESS_WIFI_STATE
//允許應用程序獲取賬戶驗證信息,主要爲GMail賬戶信息,只有系統級進程才能訪問的權限
android.permission.ACCOUNT_MANAGER
//允許應用程序使用語音郵件
com.android.voicemail.permission.ADD_VOICEMAIL
//允許應用程序通過賬戶驗證方式訪問賬戶管理ACCOUNT_MANAGER相關信息
android.permission.AUTHENTICATE_ACCOUNTS
//允許應用程序更新手機電池統計信息
android.permission.BATTERY_STATS
//允許應用程序綁定小插件,告訴appWidget服務需要訪問小插件的數據庫
android.permission.BIND_APPWIDGET
//允許應用程序綁定設備管理,請求系統管理員接收者receiver,只有系統才能使用
android.permission.BIND_DEVICE_ADMIN
//允許應用程綁定輸入法,請求InputMethodService服務,只有系統才能使用
android.permission.BIND_INPUT_METHOD
//允許應用程綁定RemoteView,必須通過RemoteViewsService服務來請求,只有系統才能用
android.permission.BIND_REMOTEVIEWS
//要求有一個TextService,如SpellCheckerService(拼寫檢查服務),來確保只有系統能夠與之交互
android.permission.BIND_TEXT_SERVICE
//要求有一個VpnService,來確保只有系統能夠與之交互
android.permission.BIND_VPN_SERVICE
//允許應用程綁定壁紙,必須通過WallpaperService服務來請求,只有系統才能用
android.permission.BIND_WALLPAPER
//允許應用程序連接配對過的藍牙設備
android.permission.BLUETOOTH
//允許應用程序管理藍牙,搜索和配對新的藍牙設備
android.permission.BLUETOOTH_ADMIN
//允許應用程序能夠禁用設備(非常危險)
android.permission.BRICK
//允許應用程序在刪除時觸發一個提示消息
android.permission.BROADCAST_PACKAGE_REMOVED
//允許應用程序收到短信時觸發一個廣播
android.permission.BROADCAST_SMS
//允許應用程序收到廣播後快速收到下一個廣播
android.permission.BROADCAST_STICKY
//允許應用程序WAP PUSH服務收到後觸發一個廣播
android.permission.BROADCAST_WAP_PUSH
//允許應用程序撥打電話,從非系統撥號器裏初始化一個電話撥號
android.permission.CALL_PHONE
//允許應用程序撥打任何號碼,包含緊急號碼無需通過撥號用戶界面
android.permission.CALL_PRIVILEGED
//允許應用程序訪問攝像頭
android.permission.CAMERA
//允許應用程序改變組件是否啓用的狀態
android.permission.CHANGE_COMPONENT_ENABLED_STATE
//允許應用程序修改當前設置,如本地化
android.permission.CHANGE_CONFIGURATION
//允許應用程序改變網絡連接狀態
android.permission.CHANGE_NETWORK_STATE
//允許應用程序設置WiFi連接多模式
android.permission.CHANGE_WIFI_MULTICAST_STATE
//允許應用程序改變Wi-Fi連接狀態
android.permission.CHANGE_WIFI_STATE
//允許應用程序清除應用緩存
android.permission.CLEAR_APP_CACHE
//允許應用程序清除應用的用戶數據
android.permission.CLEAR_APP_USER_DATA
//允許應用程序從無線模塊啓用/禁止位置更新提示
android.permission.CONTROL_LOCATION_UPDATES
//允許應用程序刪除緩存文件
android.permission.DELETE_CACHE_FILES
//允許應用程序刪除應用
android.permission.DELETE_PACKAGES
//允許應用程序底層電源管理
android.permission.DEVICE_POWER
//允許應用程序RW診斷資源
android.permission.DIAGNOSTIC
//允許應用程序禁用鍵盤鎖
android.permission.DISABLE_KEYGUARD
//允許應用程序從系統服務檢索狀態轉儲信息
android.permission.DUMP
//允許應用程序擴展或收縮狀態欄
android.permission.EXPAND_STATUS_BAR
//允許應用程序運行工廠測試模式
android.permission.FACTORY_TEST
//允許應用程序訪問閃光燈
android.permission.FLASHLIGHT
//允許應用程序強制使用back後退按鍵,無論Activity是否在頂層
android.permission.FORCE_BACK
//允許應用程序訪問GMail賬戶列表
android.permission.GET_ACCOUNTS
//允許應用程序獲取應用的文件大小
android.permission.GET_PACKAGE_SIZE
//允許應用程序獲取當前或最近運行的應用
android.permission.GET_TASKS
//允許應用程序使用全局搜索功能
android.permission.GLOBAL_SEARCH
//允許應用程序訪問硬件輔助設備,用於硬件測試
android.permission.HARDWARE_TEST
//允許應用程序訪問本程序的底層事件
android.permission.INJECT_EVENTS
//允許應用程序安裝定位提供者
android.permission.INSTALL_LOCATION_PROVIDER
//允許應用程序安裝應用
android.permission.INSTALL_PACKAGES
//允許應用程序開內部窗口,不對第三方應用程序開放此權限
android.permission.INTERNAL_SYSTEM_WINDOW
//允許應用程序訪問網絡連接
android.permission.INTERNET
//允許應用程序調用killBackgroundProcesses(String)方法結束後臺進程
android.permission.KILL_BACKGROUND_PROCESSES
//允許應用程序管理AccountManager中的賬戶列表
android.permission.MANAGE_ACCOUNTS
//允許應用程序管理程序引用
android.permission.MANAGE_APP_TOKENS
//允許應用程序執行軟格式化,刪除系統配置信息
android.permission.MASTER_CLEAR
//允許應用程序修改全局音頻設置
android.permission.MODIFY_AUDIO_SETTINGS
//允許應用程序修改電話狀態,如飛行模式等
android.permission.MODIFY_PHONE_STATE
//允許應用程序格式化可移動文件系統,比如格式化清空SD卡
android.permission.MOUNT_FORMAT_FILESYSTEMS
//允許應用程序掛載、卸載外部文件系統
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
//允許應用程序執行NFC近距離通訊操作
android.permission.NFC
//允許應用程序創建一個永久的Activity
android.permission.PERSISTENT_ACTIVITY
//允許應用程序監視、修改外撥電話
android.permission.PROCESS_OUTGOING_CALLS
//允許應用程序讀取用戶日曆數據
android.permission.READ_CALENDAR
//允許應用程序讀取通話記錄
android.permission.READ_CALL_LOG
//允許應用程序讀取聯繫人通訊錄信息
android.permission.READ_CONTACTS
//允許應用程序讀取擴展存儲器
android.permission.READ_EXTERNAL_STORAGE
//允許應用程序讀取幀緩存用於屏幕截圖
android.permission.READ_FRAME_BUFFER
//允許應用程序讀取瀏覽器收藏夾和歷史記錄
com.android.browser.permission.READ_HISTORY_BOOKMARKS
//允許應用程序讀取當前鍵的輸入狀態,僅用於系統
android.permission.READ_INPUT_STATE
//允許應用程序讀取系統底層日誌
android.permission.READ_LOGS
//允許應用程序讀取電話狀態
android.permission.READ_PHONE_STATE
//允許應用程序讀取用戶的個人信息資料
android.permission.READ_PROFILE
//允許應用程序讀取短信內容
android.permission.READ_SMS
//允許應用程序讀取用戶的社交流數據
android.permission.READ_SOCIAL_STREAM
//允許應用程序讀取同步設置,讀取Google在線同步設置
android.permission.READ_SYNC_SETTINGS
//允許應用程序讀取同步狀態,讀取Google在線同步設置
android.permission.READ_SYNC_STATS
//允許應用程序讀取用戶詞典Provider取得數據
android.permission.READ_USER_DICTIONARY
//允許應用程序重新啓動設備
android.permission.REBOOT
//允許應用程序開機自動運行
android.permission.RECEIVE_BOOT_COMPLETED
//允許應用程序接收彩信
android.permission.RECEIVE_MMS
//允許應用程序接收短信
android.permission.RECEIVE_SMS
//允許應用程序接收WAP PUSH信息
android.permission.RECEIVE_WAP_PUSH
//允許應用程序錄制音頻
android.permission.RECORD_AUDIO
//允許應用程序改變Z軸排列任務
android.permission.REORDER_TASKS
//允許應用程序重新啓動其他程序
android.permission.RESTART_PACKAGES
//允許應用程序發送短信
android.permission.SEND_SMS
//允許應用程序監控或控制系統中已經啓動的activities
android.permission.SET_ACTIVITY_WATCHER
//允許應用程序設置鬧鈴提醒
com.android.alarm.permission.SET_ALARM
//允許應用程序設置程序在後臺是否總是退出
android.permission.SET_ALWAYS_FINISH
//設置全局動畫縮放
android.permission.SET_ANIMATION_SCALE
//設置調試程序,一般用於開發
android.permission.SET_DEBUG_APP
//允許底層訪問設置屏幕方向和實際旋轉
android.permission.SET_ORIENTATION
//允許底層訪問設置指針速度
android.permission.SET_POINTER_SPEED
//允許應用程序設置應用的參數
android.permission.SET_PREFERRED_APPLICATIONS
//允許應用程序設置最大的運行進程數量
android.permission.SET_PROCESS_LIMIT
//允許應用程序設置系統時間
android.permission.SET_TIME
//允許應用程序設置系統時區
android.permission.SET_TIME_ZONE
//允許應用程序設置桌面壁紙
android.permission.SET_WALLPAPER
//允許應用程序設置壁紙建議
android.permission.SET_WALLPAPER_HINTS
//允許應用程序請求發送信號到所有顯示的進程中
android.permission.SIGNAL_PERSISTENT_PROCESSES
//允許應用程序打開、關閉或禁用狀態欄及圖標
android.permission.STATUS_BAR
//允許應用程序訪問訂閱RSS Feed內容提供者
android.permission.SUBSCRIBED_FEEDS_READ
//允許應用程序寫入或修改訂閱RSS Feed內容提供者的數據
android.permission.SUBSCRIBED_FEEDS_WRITE
//允許應用程序打開系統窗口,顯示其他應用程序
android.permission.SYSTEM_ALERT_WINDOW
//允許應用程序更新設備狀態
android.permission.UPDATE_DEVICE_STATS
//允許應用程序請求從AccountManager驗證
android.permission.USE_CREDENTIALS
//允許應用程序使用SIP視頻服務
android.permission.USE_SIP
//允許訪問振動設備
android.permission.VIBRATE
//允許應用程序在手機鎖屏後進程仍然運行
android.permission.WAKE_LOCK
//允許應用程序寫入網絡GPRS接入點設置
name="android.permission.WRITE_APN_SETTINGS
//允許應用程序寫入用戶日程,但不可讀取
android.permission.WRITE_CALENDAR
//允許應用程序寫入通話記錄
android.permission.WRITE_CALL_LOG
//允許應用程序寫入聯繫人,但不可讀取
android.permission.WRITE_CONTACTS
//允許應用程序寫入外部存儲,如SD卡上寫文件
android.permission.WRITE_EXTERNAL_STORAGE
//允許應用程序寫入Google Map服務數據
android.permission.WRITE_GSERVICES
//允許應用程序寫入瀏覽器歷史記錄或收藏夾,但不可讀取
com.android.browser.permission.WRITE_HISTORY_BOOKMARKS
//允許應用程序寫用戶個人檔案資料,但不可讀取
android.permission.WRITE_PROFILE
//允許應用程序寫入安全設置
android.permission.WRITE_SECURE_SETTINGS
//允許應用程序讀取或寫入系統設置
android.permission.WRITE_SETTINGS
//允許應用程序寫短信
android.permission.WRITE_SMS
//允許應用程序寫用戶的社交流數據,但不可讀取
android.permission.WRITE_SOCIAL_STREAM
//允許程序Google在線同步設置
android.permission.WRITE_SYNC_SETTINGS
//允許應用程寫入取用戶詞典Provider的數據
android.permission.WRITE_USER_DICTIONARY


在HTML中調用android硬件設備


攝像頭的調用


 function onCamera(){
    destinationType=navigator.camera.DestinationType;
    //調用攝像頭
    navigator.camera.getPicture(onPhotoDataSuccess, cameraFail, {
                quality: 50,
                destinationType: destinationType.DATA_URL });
}
function onPhotoDataSuccess(imageData) {//調用攝像頭成功的回調函數
    alert(imageData);       
    //imageData即爲圖像路徑
}
function cameraFail(message) {//調用攝像頭失敗的回調函數
    alert('Failed because: ' + message);
}


獲取經緯度

function getCoordinates(){//獲取經緯度
    //獲取座標對象
    var geolocation=navigator.geolocation;
    //調用GPS獲取經緯度
    geolocation.getCurrentPosition(getCoordinatesSucceess, getCoordinatesError,{ maximumAge: 60000, timeout: 60000, enableHighAccuracy: true });
}
function getCoordinatesSucceess(position){//獲取經緯度成功回調函數
    alert('經度:'+position.coords.longitude+'\n緯度:'+position.coords.latitude);
}
function getCoordinatesError(error){//獲取經緯度失敗回調函數
    alert('獲取位置失敗');
    alert('code: '    + error.code    + '\n' +
    'message: ' + error.message + '\n');
}

值得注意的是
這裏調用GPS使用的函數是
geolocation.getCurrentPosition(getCoordinatesSucceess, getCoordinatesError,{ maximumAge: 60000, timeout: 60000, enableHighAccuracy: true });
而網上很多人分享出來的方法是調用geolocation.getCurrentPosition(getCoordinatesSucceess, getCoordinatesError);
如果你使用的是虛擬機,你需要將enableHighAccuracy 設爲true ,具體原因請仔細閱讀官網提供的API   

timeout 是爲你的APP獲取經緯度設定一個限定時間,如果超時仍未獲取成功,那麼將執行失敗回調函數。要不然很有可能程序將死在這裏,既不執行成功回調函數,也不執行失敗回調函數
還有一點需要注意:獲取經緯度的時間較長且需要你的移動設備(也就是你的手機)在戶外。不要因爲手機過了幾十秒鐘後仍沒有反應就斷定程序有問題

成功調用GPS後獲取的數據不僅僅有經度和緯度
還有
position.coords.latitude                           //緯度
position.coords.longitude                        //經度
position.coords.altitude                           //海拔高度
position.coords.accuracy                       //精度
position.coords.altitudeAccuracy        //海拔準確度
position.coords.heading                          //航向
position.coords.speed                             //速度
position.timestamp                                   //時間


手機撥號


其實android平臺已經可以對網頁上的各種鏈接調出相應的頁面,撥打電話也是如此
就像這樣
<a href= "tel:10086" >移動客服</a>
這就是一個撥號的鏈接,點擊之後android自動彈出撥號界面


當然,對於動態響應。我們可能需要在某些動作之後讓用戶進入撥號界面,這個動作也不一定是點擊
我們可以在函數裏面如是添加
function phone_call(){//打電話
    location.href="tel:10086";
}


發送短信


與撥打電話界面的調出一樣
<a href= "sms:10086" >發短信 </a>

函數方法如下
function phone_call(){//發短信
    location.href="sms:10086" ;
}

我們可以把問題處理的更加完善
sms:<phone_number>[,<phone-number>]*[?body=<message_body>]
例子如下
<a href="sms:10086">給 10086 發短信</a><br />
<a href="sms:10086?body=cxye">給 10086 發送內容爲"cxye"的短信</a><br />
<a href="sms:10086,10010?body=cxye">給 10086 和 10010 發送內容爲"cxye"的短信</a>



































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章