Ionic 调用 Device 设备 Api 获取手机的设备信息

1. 找到对应的Api: https://ionicframework.com/docs/native/device/

2. 安装相关的设备插件

 ionic cordova plugin add cordova-plugin-device
npm install --save @ionic-native/device

3. 在app.module.ts中引入注册相应模块

import { Device } from '@ionic-native/device';
providers: [
StatusBar,
SplashScreen,
Device,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]

在用到的页面引入看文档使用

import { Device } from '@ionic-native/device'; constructor(private device: Device) { }
...
console.log('Device UUID is: ' + this.device.uuid);

Ionic 调用照相机拍照功能。

1、找到对应的 Api: https://ionicframework.com/docs/native/camera/

2、安装相关的插件

 ionic cordova plugin add cordova-plugin-camera
npm install @ionic-native/camera

3、在 app.module.ts 中引入注册相应模块

providers: [ ...
Camera
... ]

参数

类型

说明

quality

Number

保存的图像质量,范围为 0 到 100

destinationType

Number

返回值格式
Camera.DestinationType.DATA_URL 返回 base64 编码
Camera.DestinationType.FILE_URI 返回文件地址

     

sourceType

Number

设置图片来源
Camera.PictureSourceType.CAMERA 摄像机获取
Camera.PictureSourceType.PHOTOLIBRARY 图库选择

allowEdit

Boolean

选择图片完成是否允许编辑
encodingType

Number

JPEG = 0, PNG = 1

targetWidth

Number

缩放图像的宽度(像素)

targetHeight

Number

缩放图像的高度(像素)

mediaType

String

设置媒体的类型

cameraDirection

Number

Back = 0, Front-facing = 1
popoverOptions

String

iOS,iPad 弹出位置

saveToPhotoAlbum

Boolean

是否保存到相册

correctOrientation

Boolean

设置摄像机拍摄的图像是否为正确的方向

Ionic4 调用 cordova 插件 cordova-plugin-file-transfer 实现 图片上传

1.安装插件:

 ionic cordova plugin add cordova-plugin-file-transfer
npm install @ionic-native/file-transfer

2. app.module.ts 引入依赖注入

import { FileTransfer } from '@ionic-native/file-transfer/ngx';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [
StatusBar,
SplashScreen,
Geolocation,
Device,
Camera,
FileTransfer,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})

使用:

<ion-header>
<ion-toolbar>
<ion-title>
Tab Three
</ion-title>
</ion-toolbar>
</ion-header> <ion-content> 设备相关插件
{{myDevice.uuid}} <br>
<br> <ion-button (click)="doCamera()">
执行拍照
</ion-button> <br>
<img [src]="imgSrc" />
</ion-content>
import { Component } from '@angular/core';

import { Device } from '@ionic-native/device/ngx';

import { Camera, CameraOptions } from '@ionic-native/camera/ngx';

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer/ngx';

@Component({
selector: 'app-tab3',
templateUrl: 'tab3.page.html',
styleUrls: ['tab3.page.scss']
})
export class Tab3Page { public myDevice: any;
public imgSrc: any; constructor(private device: Device, private camera: Camera, private transfer: FileTransfer) {
this.myDevice = this.device;
} doCamera() { const options: CameraOptions = {
quality: 100, //质量
destinationType: this.camera.DestinationType.DATA_URL, //返回图片的类型 base64 url
// encodingType: this.camera.EncodingType.JPEG, //返回格式
sourceType: this.camera.PictureSourceType.CAMERA, //从相册选择 还是摄像头拍照
// mediaType: this.camera.MediaType.PICTURE //设置媒体的类型
targetHeight: 400, //必须加
targetWidth: 400, //必须加
allowEdit: true
} this.camera.getPicture(options).then((imageData) => { let base64Image = 'data:image/jpeg;base64,' + imageData;
this.imgSrc = base64Image; this.doUpload(base64Image); }, (err) => {
// Handle error console.log(err);
}); } doUpload(fileSrc) { const fileTransfer: FileTransferObject = this.transfer.create(); let options: FileUploadOptions = {
fileKey: 'file',
fileName: 'name.jpg', //名称
mimeType: 'image/jpeg',
httpMethod: "POST",
params: {
username: "我是一个测试的名称",
age: "21",
height: "180"
} /*附带的一些信息*/
// headers: {}
} var api = 'http://127.0.0.1:8080/imgUpload'; fileTransfer.upload(fileSrc, api, options)
.then((data) => { console.log(data);
// success
alert(JSON.stringify(data)); }, (err) => {
// error alert(JSON.stringify(err));
}) } }

其他:

ionic cordova run browser 调试应用

ionic cordova run browser 这个命令可以让我们在浏览器上面运行 ionic 项目,并可以调用常用的 api。
如果特殊 api 建议真机调试。如果是拍照 、定位之类的 api 可以使用这种方法调试。


问题:

1. 安装cordova-plugin-file-transfer以及其他插件都报错提示信息和node_modules模块相

关错误解决办法。
删除 node_modules , cd 到项目目录 , 重新用 npm install 安装所有的模块

2. 安装其他的模块没有问题,安装cordova-plugin-file-transfer出现错误。多尝试几次,还是不行就切换npm源:

尝试npm切换源,然后重新安装

在命令行执行命令,npm install -g nrm,全局安装 nrm。 nrm use taobao 选择源 淘宝为默认源
nrm ls 查看默认源

Ionic Cordova 调用原生 Api 实现拍照上传 图片到服务器功能的更多相关文章

  1. 调用Web API将文件上传到服务器的方法(.Net Core)

    最近遇到一个将Excel通过Web API存到服务器的问题,其中涉及到Excel的读取.调用API.Web  API怎么进行接收. 一. Excel的读取.调用API Excel读取以及调用API的代 ...

  2. phonegap+cordova+ionic调用原生API

    上一篇博客讲了phonegap+cordova+ionic的环境搭建,今天再来分享一篇cordova调用原生API的文章.从技术角度上来讲,这并不是很难,只是有些细节要是没有注意,或者某些步骤不知道的 ...

  3. android 拍照上传文件 原生定位

    最近公司需要一个android拍照上传和定位功能的的单一功能页面,一开始选择ionic cordova angular的一套H5框架,但是遇到和上传文件报错的问题,bug找了一天没找到原因,怀疑是io ...

  4. html5调用手机摄像头,实现拍照上传功能

    今天做手机网站,想实现手机扫描二维码功能.首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析. 首先实现在浏览器中调用摄像头,当然用现在 ...

  5. 调用rest api杀死yarn上的应用

    调用rest api杀死yarn上的应用 调用yarn reat api,通过app name 获取application id public static String getApplication ...

  6. webAPP如何实现移动端拍照上传(Vue组件示例)?

    摘要:使用HTML5编写移动Web应用,主要是为了尝试一下“一套代码多处运行”,一个webapp几乎可以不加修改的运行在PC/Android/iOS等上面运行.但是写到现在觉得虽然这种方式弊大于利,不 ...

  7. Android4.4 + WebAPI 实现拍照上传

    网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了.主要原因是android从4.4版本开始通过intent.ACTION_GET_CONTENT打开选择器后, ...

  8. Android图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

  9. Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

    仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...

随机推荐

  1. Andrew Ng机器学习 五:Regularized Linear Regression and Bias v.s. Variance

    背景:实现一个线性回归模型,根据这个模型去预测一个水库的水位变化而流出的水量. 加载数据集ex5.data1后,数据集分为三部分: 1,训练集(training set)X与y: 2,交叉验证集(cr ...

  2. gensim中word2vec和其他一些向量的使用

    直接上代码吧,word2vec # test from gensim.models.word2vec import Word2Vec txt_file = open('data.txt') sente ...

  3. Murach ASP.NET 4.5 C# With Visual Studio 2013 翻译

    本书由我自己翻译完,省略书中练习部分,练习部分可以阅读原文   本书对新手友好,介绍了Web通讯的基本原理,ASP.NET开发,项目开发所需的各种开发与部署技术, Ajax,与WCF, Web API ...

  4. 2019牛客多校第三场 F.Planting Trees

    题目链接 题目链接 题解 题面上面很明显的提示了需要严格\(O(n^3)\)的算法. 先考虑一个过不了的做法,枚举右下角的\((x,y)\),然后二分矩形面积,枚举其中一边,则复杂度是\(O(n^3 ...

  5. 十.Protobuf3 JSON映射

    Protobuf3 JSON映射 proto 3支持JSON中的规范编码,使得系统之间更容易共享数据.下表按类型对编码进行了描述. 如果JSON编码的数据中缺少一个值,或者如果它的值为null,那么当 ...

  6. 五.Protobuf3 枚举

    Protobuf3 枚举 定义消息类型时,您可能希望它的一个字段有一个预定义的值列表.例如,假设您希望为每个SearchRequest添加一个corpus字段,其中语料库可以是UNIVERSAL.WE ...

  7. SIGAI机器学习第二十集 AdaBoost算法1

    讲授Boosting算法的原理,AdaBoost算法的基本概念,训练算法,与随机森林的比较,训练误差分析,广义加法模型,指数损失函数,训练算法的推导,弱分类器的选择,样本权重削减,实际应用 AdaBo ...

  8. SIGAI机器学习第十八集 线性模型2

    之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss ...

  9. sql server 视图的用法

    Sql server中 如何用sql语句创建视图 1.视图的作用 视图的作用: 第一点:使用视图,可以定制用户数据,聚焦特定的数据. 解释: 在实际过程中,公司有不同角色的工作人员,我们以销售公司为例 ...

  10. Hadoop上 Hive 操作

    数据dept表的准备: --创建dept表 CREATE TABLE dept( deptno int, dname string, loc string) ROW FORMAT DELIMITED ...