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. Python for Email

    SMTP 正如 HTTP 是计算机用来通过因特网发送网页的协议,简单邮件传输协议(SMTP) 是用于发送电子邮件的协议 import smtplib 发送电子邮件 连接到SMTP服务器 smtpObj ...

  2. virtual box 6.0 扩容原有磁盘空间 ubuntu18.04

    virtual box 6.0 扩容原有磁盘空间 ubuntu18.04 1虚拟介质管理 1.1点击菜单 1.2 修改磁罗容量大小(需要关闭虚拟机),点击应用 2使用ubuntu安装镜像将新加容量添加 ...

  3. Vuex状态管理总结

    一.什么是 Vuex 1.Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 2.Vuex 采用集中式存储和管理应用中所有组件的状态 3.Vuex 应用的核心是 store(仓库)-- 包 ...

  4. 小程序框架之视图层 View~获取界面节点信息

    获取界面上的节点信息 WXML节点信息 节点信息查询 API 可以用于获取节点属性.样式.在界面上的位置等信息. 最常见的用法是使用这个接口来查询某个节点的当前位置,以及界面的滚动位置. 示例代码: ...

  5. Spring4 -03 -Dependency Injection (依赖注入) : 代码体现/配置xml/测试

    DI:中文名称:依赖注入 英文名称((Dependency Injection) DI 是什么? 3.1 DI 和IoC 是一样的,差不多一样的技术和模板! 3.2 当一个类(A)中需要依赖另一个类( ...

  6. Hbase节点及原理

    1.Hbase架构:Clinet.Zookeeper.Master.RegionServer.Region.Store.MemStore.HLog 1.读过程 2.写过程 https://www.cn ...

  7. [RxJS] Groupby operator

    The use case is similar to Twitter "like" button, you can click "click" button o ...

  8. MySQL 索引原理以及慢查询优化

    本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree ...

  9. 013——MATLAB硬件支持包离线下载

    (一)参考文献:https://blog.csdn.net/hyperorbit/article/details/88095384 (二)去下列网址下载离线包下载工具:https://ww2.math ...

  10. Oracle trunc() 日期、数字截取函数

    --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013- ...