使用ionic开发一款android或ios应用,估计少不了使用到Camera API,这里记录下使用过程。

创建空的ionic应用

ionic start myTabs tabs

通过cd demo命令,可以看到已经为我们创建了多个文件夹,如下所示:

ls -l
total 48
-rw-r--r--  1 nancy  staff  2786  6  5 01:14 README.md
-rw-r--r--  1 nancy  staff   125  6  5 01:14 bower.json
-rw-r--r--  1 nancy  staff  1062  6  5 01:14 config.xml
-rw-r--r--  1 nancy  staff  1353  6  5 01:14 gulpfile.js
drwxr-xr-x  4 nancy  staff   136  6  5 01:14 hooks
-rw-r--r--  1 nancy  staff    73  6  5 01:12 ionic.project
-rw-r--r--  1 nancy  staff   356  6  5 01:14 package.json
drwxr-xr-x  3 nancy  staff   102  6  5 01:14 platforms
drwxr-xr-x  3 nancy  staff   102  6  5 01:14 plugins
drwxr-xr-x  3 nancy  staff   102  6  5 01:14 scss
drwxr-xr-x  6 nancy  staff   204  6  5 01:14 www

安装并使用Camera插件

在plugins文件夹中放着的是各个使用的插件,通过命令cordova plugin add 插件名来安装我们所需插件,安装Camera插件:

cordova plugin add org.apache.cordova.camera

使用Camera插件api

function takePicture() {navigator.camera.getPicture(function(imageURI) {// imageURI is the URL of the image that we can use for// an <img> element or backgroundImage.}, function(err) {// Ruh-roh, something bad happened}, cameraOptions);
}

创建service

在文件www/js/services.js中,通过添加angular service提供拍照服务:

.factory('Camera', ['$q', function($q) {return {getPicture: function(options) {var q = $q.defer();navigator.camera.getPicture(function(result) {// Do any magic you needq.resolve(result);}, function(err) {q.reject(err);}, options);return q.promise;}}
}])

其中,插件Camera说明,详见这里。

修改Controller,添加拍照按钮事件

我们修改Controllers.js中第一个controller(DashCtrl),如下:

.controller('DashCtrl', function($scope, Camera) {$scope.getPhoto = function() {Camera.getPicture().then(function(imageURI) {console.log(imageURI);$scope.lastPhoto = imageURI;}, function(err) {console.err(err);}, {quality: 75,targetWidth: 320,targetHeight: 320,saveToPhotoAlbum: false});};
})  

其中,quality、targetWidth、targetHeight等参数说明,见这里。

使用AngularJS Whitelisting

添加config:

module.config(function($compileProvider){
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|file|  tel):/);
})

修改html,添加拍照按钮和返回照片

在www/templates/tab-dash.htm中添加拍照按钮和事件,并返回照片信息,显示:

<ion-view title="Dashboard"><ion-content class="has-header padding"><h1>Dash</h1><button ng-click="getPhoto()" class="button button-block button-primary">Take Photo</button><img ng-src="{{lastPhoto}}" style="max-width: 100%"></ion-content>
</ion-view>

在android下运行

执行命令:

ionic build android
ionic run android

运行结果:

转自:http://www.yemeishu.com/using_camera/

转载于:https://www.cnblogs.com/yemeishu/p/3771077.html

Using the Cordova Camera API相关推荐

  1. cordova camera插件——摄像头插件的使用及上传图片

    介绍 cordova提供照相机API与设备相机进行交互. 通过照相机API.我们可以拍摄或者访问照片库中的照片,返回图片的base64编码字符串或者图片的url文件路径. 安装插件 需要cordova ...

  2. android 音视频流采集,Android 音视频开发(四):使用 Camera API 采集视频数据(示例代码)...

    本文主要将的是:使用 Camera API 采集视频数据并保存到文件,分别使用 SurfaceView.TextureView 来预览 Camera 数据,取到 NV21 的数据回调. 注: 需要权限 ...

  3. Android Camera API 2使用OpenGL ES 2.0和GLSurfaceView对预览进行实时二次处理(黑白滤镜)

    这段时间有点忙,一直没时间写第三篇教程,其实代码很早之前就写好了.本系列教程会有三篇文章讲解Android平台滤镜的实现方式,希望在阅读本文之前先阅读前面两篇文档. 第一篇 Android Camer ...

  4. 调用Camera API实现自己的拍照和摄像程序

    参考博客: http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html 根据Camera API实现自己的拍照和摄像程序 通过上 ...

  5. Android Camera API/Camera2 API 相机预览及滤镜、贴纸等处理

    Android Lollipop 增加了Camera2 API,并将原来的Camera API标记为废弃了.相对原来的Camera API来说,Camera2是重新定义的相机 API,也重构了相机 A ...

  6. Android使用Camera2 替代过时的Camera API

    因为考虑到想要新增新的5.0以上的Camera2 API,发现变得太多,有重构的意思,还好先发现了这篇文章,目前对5.0以下的版本都没有兼容包和支持,所以建议按照文中最后一条做一下API版本判断 以下 ...

  7. Camera API : Camera.getNumberOfCameras()分析

    文章目录 高通 Camera API: Camera.getNumberOfCameras()分析 背景 接口实现分析 为什么? 如何处理? 拓展 高通 Camera API: Camera.getN ...

  8. Android 新老两代 Camera API 大起底

    https://blog.csdn.net/Byeweiyang/article/details/80515192 0.背景简介 最近有一部分相机相关的需求,专注于对拍摄的照片.视频的噪点.色温.明暗 ...

  9. Android开发:调用camera API 创建MediaRecorder

    本文出自 "whithin's" 博客,请务必保留此出处http://whithin.blog.51cto.com/690417/1063573 1. add  below thr ...

最新文章

  1. Java之IO,BIO,NIO,AIO
  2. 关于JavaScript为何要限制跨域访问
  3. vue中监听input框获取焦点,失去焦点的问题
  4. 强人工智能是潘多拉魔盒吗
  5. 半导体公司IC设计环境概况
  6. 威联通服务器显示磁盘为挂载,如何在 QNAP NAS 上使用虚拟磁盘?
  7. PAT乙级(1015 德才论)
  8. 高一信息技术练习软件_信息技术高手段 网络教研新形式
  9. vs设计窗口不见了_VS厂欧米茄海马300系列女王密使腕表评测
  10. 网站中使用中文个性字库字体--@font-face解决方案探索 l(转)
  11. [渝粤教育] 西南科技大学 机械设计基础 在线考试复习资料
  12. 物联网技术概论:第1章
  13. 模糊查询和sql语句的拼接
  14. Android NFC开发概述
  15. python可视化丨从1896年说起,用数据看 120 年奥运变迁
  16. Mac 终端提示You have not agreed to the Xcode license agreements
  17. 【观察】掘金医疗大数据,如何四两拨千斤?
  18. 震惊科学界!DeepMind AI破解「蛋白质折叠」难题
  19. 什么是FIR filter?
  20. 用面包板搭建4bit加法器

热门文章

  1. linux如何映射Windows下的磁盘为网络盘
  2. [Z]如何使用OpenGL扩展
  3. Nacos的服务注册表结构是怎样的?
  4. 关于Topic和Partition
  5. 原本挂起的线程继续执行
  6. PrepareStatement 和Statement 的区别?
  7. Hive的安装-Hive的交互方式
  8. shiro的会话管理:应用场景分析
  9. [坑] IDEA Unable to import maven project 解决办法
  10. spring事务管理-概念部分