Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >工作记录,使用Uniapp开发安卓应用

工作记录,使用Uniapp开发安卓应用

作者头像
房东的狗丶
发布于 2023-02-17 06:13:47
发布于 2023-02-17 06:13:47
6.2K10
代码可运行
举报
文章被收录于专栏:友人a的笔记丶友人a的笔记丶
运行总次数:0
代码可运行

起步

项目需求:录制视频和语音,在app页面的上半部分实时显示。下半部分显示文字提示,提醒用户回答确认。最后将录制的视频提交到服务器保存。

1.Android studio (不是必要的)

安装 :https://developer.android.google.cn/,作为开发过程中App的调试工具。(Android Studio基于IntelliJ Platform)。

插件市场搜索不到中文插件,手动下载:https://plugins.jetbrains.com/plugin/13710-chinese-simplified-language-pack,下载对应版本号的插件。

2.Virtual Device

随便打开一个项目,点右上角运行,按提示安装android Virtual Device.

启动虚拟机时报错:haxm device is not found

下载安装:haxm-windows_v7_5_1.zip。重新启动,进入android studio-->AVD Manager-->启动虚拟设备-->OK。

3.uniapp 配置安卓模拟器

检测不到模拟器的解决办法:https://ask.dcloud.net.cn/article/97

公司电脑上各种方法试变了,回家用自己电脑,那真是一气呵成。设置好adb工具路径,端口都不用管,然后打开模拟器,Hbuilder自己就检测到了。这................🤣🤣

总结关闭360这些软件,然后重启试试。

Uniapp之App开发

关于week:http://doc.weex.io/zh/

uni-app App端内置了一个基于 weex 改进的原生渲染引擎,提供了原生渲染能力。

在App端,如果使用vue页面,则使用webview渲染;如果使用nvue页面(native vue的缩写),则使用原生渲染。一个App中可以同时使用两种页面,比如首页使用nvue,二级页使用vue页面,hello uni-app示例就是如此。

虽然nvue也可以多端编译,输出H5和小程序,但nvue的css写法受限,所以如果你不开发App,那么不需要使用nvue。

以往的 weex ,有个很大的问题是它只是一个高性能的渲染器,没有足够的API能力(比如各种push sdk集成、蓝牙等能力调用),使得开发时非常依赖原生工程师协作,开发者本来想节约成本,结果需要前端、iOS、Android 3拨人开发,适得其反。 nvue 解决了这个问题,让前端工程师可以直接开发完整 App,并提供丰富的插件生态和云打包。这些组合方案,帮助开发者切实的提高效率、降低成本。

App端的webview组件是非常强大的,可以更灵活的控制和拥有更丰富的API:https://www.html5plus.org/https://ask.dcloud.net.cn/article/34922

1. App端请求系统权限相关说明:https://blog.csdn.net/weixin_45416117/article/details/121354191

2.H5调用摄像头相关说明:https://www.cnblogs.com/kuangke/p/14278565.html

3.uniapp 安卓Api权限申请:https://www.html5plus.org/doc/zh_cn/android.htmlhttps://blog.csdn.net/superlover_/article/details/113646369

4.uniapp APP端运行时对象:https://www.html5plus.org/doc/zh_cn/runtime.html

5.权限检测插件:https://ext.dcloud.net.cn/plugin?id=594

H5 摄像头操作

已废弃的媒体调用API:navigator.getUserMedia

最新的API:navigator.mediaDevices.getUserMedia()

mediaDevices 是 Navigator 只读属性,返回一个 MediaDevices 对象,该对象可提供对相机和麦克风等媒体输入设备的连接访问,也包括屏幕共享。MediaDevices 是一个单例对象。通常,您只需直接使用此对象的成员。

1.WebRTC API 

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

2.MediaDevices.getUserMedia() 

调用时提示用户给予使用媒体输入的许可,媒体输入会产生一个MediaStream,里面包含了请求的媒体类型的轨道。此流可以包含一个视频轨道(来自硬件或者虚拟视频源,比如相机、视频采集设备和屏幕共享服务等等)、一个音频轨道(同样来自硬件或虚拟音频源,比如麦克风、A/D转换器等等),也可能是其它轨道类型。

它返回一个 Promise 对象,成功后会resolve回调一个 MediaStream 对象。若用户拒绝了使用权限,或者需要的媒体源不可用,promise会reject回调一个  PermissionDeniedError 或者 NotFoundError 。

提示:返回的promise对象可能既不会resolve也不会reject,因为用户不是必须选择允许或拒绝。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
  /* 使用这个stream stream */
})
.catch(function(err) {
  /* 处理error */
});

详细文档:

https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia

3.媒体流(MediaStream) 

将录制的视频流通过Video元素播放。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
video.src = CompatibleURL.createObjectURL(stream);
/* 或者 */
video.srcObject = stream;

相关文档:https://developer.mozilla.org/zh-CN/docs/Web/API/MediaStream

P2P Media Loader是一个开源 JavaScript 库,它使用现代 Web 浏览器(即 HTML5 视频和 WebRTC)的功能通过 P2P 传递媒体,并通过与许多流行的 HTML5 视频播放器的集成进行播放。它不需要任何网络浏览器插件或附加组件即可运行(参见演示)。

相关的优秀项目:

https://github.com/Novage/p2p-media-loaderhttps://github.com/muaz-khan/RecordRTChttps://github.com/streamproc/MediaStreamRecorder

H5媒体流

1.MediaStream.getTracks(),返回流中所有的MediaStreamTrack列表。 2.MediaStream.getAudioTracks(),返回流中kind属性为"audio"的MediaStreamTrack列表。顺序是不确定的,不同浏览器间会有不同,每次调用也有可能不同。 3.MediaStream.getVideoTracks(),顺序是不确定的,不同浏览器间会有不同,每次调用也有可能不同。

媒体流录制(MediaRecorder):https://developer.mozilla.org/zh-CN/docs/Web/API/MediaRecorder/MediaRecorder

用于录制媒体流,该接口在手机、PC端均受支持。

uniapp之打包app

1. manifest.json

文件说明:https://uniapp.dcloud.io/collocation/manifest

2. App启动图

相关说明:https://ask.dcloud.net.cn/article/35527https://www.jianshu.com/p/3fd048644e3f?tdsourcetag=s_pctim_aiomsg

3.android签名证书

生成指南:https://ask.dcloud.net.cn/article/35777

4.自定义调试基座

相关文档:https://ask.dcloud.net.cn/article/35115

5.uni-app运行环境版本和编译器版本不一致的问题

HBuilderX1.7.0及以上版本uni-app添加了运行环境版本和编译环境版本的校验机制,当两个版本不一致时会弹出以下提示:

应用弹窗提醒

相关文档

https://ask.dcloud.net.cn/article/35627

Webview

1.相关功能拓展方法:https://ask.dcloud.net.cn/article/35036

问题总结

1. 有时候听筒播放声音、有时候扬声器播放(使用h5plus直接指定扬声器):https://www.html5plus.org/doc/zh_cn/audio.html

2.支持的约束对象属性:https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints

3.定义媒体设备的相关约束:https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints

4.回声消除:https://baike.baidu.com/item/%E5%9B%9E%E5%A3%B0%E6%B6%88%E9%99%A4%E6%8A%80%E6%9C%AF/16479565?fr=aladdin

H5下的录音会默认打开回声消除,最终导致的就是录制音频的时候会自动过滤设备发出的声音,导致无法正常录制全部声音。用过定义约束对象关闭回声消除。

web-view使用uni api

1.在web-view加载的本地及远程HTML中调用uni的API及网页和vue页面通讯:https://ask.dcloud.net.cn/article/35083

2.Native.js:https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/88

3.安卓首屏关闭的机制:https://ask.dcloud.net.cn/article/35565,如果页面白屏(未加载完或者未渲染任何东西)会splash一直存在,10秒后无论如何都会关闭。

IOS相关问题

1.使用 Safari打开摄像头黑屏,但是可以成像,需要添加playsinline,webkit-playsinline属性为true,设置非全屏播放可正常使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<video v-show="!imgSrc" id="videoCamera" playsinline webkit-playsinline="true" :width="videoWidth" :height="videoHeight" autoplay>
 您的浏览器不支持 video 标签。
</video>

2.H5 录像在ios中,需要视频开始播放了才会显示图像。可以设置自动播放或者controls控制条来操作。

3. H5 ios录制不支持webm格式(支持mp4,安卓只支持webm不支持mp4):https://developer.mozilla.org/en-US/docs/Web/API/MediaRecorder/isTypeSupported

4. https://www.jianshu.com/p/274b5ebb917b

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
大佬,uni-app 打包成andriod app后,navigator.mediaDevices 方法不支持,会报 cannot read property mediaDevices of undefined,在pc端调用正常,这个应该怎么解决?
大佬,uni-app 打包成andriod app后,navigator.mediaDevices 方法不支持,会报 cannot read property mediaDevices of undefined,在pc端调用正常,这个应该怎么解决?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
js调用网页摄像头进行直播/拍照
具体文档可查看:https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia
仙士可
2022/02/18
5.3K0
js调用网页摄像头进行直播/拍照
Safari上使用WebRTC指南
原文:https://webrtchacks.com/guide-to-safari-webrtc/
LiveVideoStack
2021/09/01
3.6K0
给测试小妹做了一个js版屏幕录制工具iREC,她用后竟说喜欢我
周末,公司里的测试小妹给我发消息说,她昨晚又加班到很晚,原因是研发要求提复杂bug时需要附上具体的操作流程以便详细了解操作过程和复现。最好能提供一个录制视频,这不是难为我们测试小妹嘛?随后她问我有没有好用,免费的录制屏幕的软件。我答应帮她找找。 看到这里你可能以为这是一篇软件推荐文章,但其实这是一篇造轮子的文章,经过一番搜索,我发现大多数的录屏软件,不是比较笨重,就是有些需要付费,或者无法跨平台使用。于是我想能不能自己开发一个录屏工具,这个想法一旦产生就无法停止,在造轮子之前我需要简单整理一下需求范围,以便挑选合适的工具来实现。
拿我格子衫来
2022/01/24
1.4K0
给测试小妹做了一个js版屏幕录制工具iREC,她用后竟说喜欢我
Webrtc及WEB端音视频设备获取及流处理
注意本文和之前Electron获取设备的文章有重合,但是也不是一样的,因为在Electron中我们不但能用HTML的API,也能使用Electron的API,但是WEB中就有局限了,在WEB中就实现不了直接分享主屏幕,必须用户选择。
码客说
2022/09/23
2.6K0
Webrtc及WEB端音视频设备获取及流处理
Uniapp、Html5plus、Native.js开发记录
Android的四大组件之一的Activity(活动):Activity是一个应用程序的组件,他在屏幕上提供了一个区域,允许用户在上面做一些交互性的操作, 比如打电话,照相,发送邮件,或者显示一个地图!Activity可以理解成一个绘制用户界面的窗口, 而这个窗口可以填满整个屏幕,也可能比屏幕小或者浮动在其他窗口的上方!
房东的狗丶
2023/02/17
3.2K0
利用WebRTC录制采样的音视频
WebRTC录制音视频流之后,最终是通过Blob对象将数据保存成多媒体文件的,而Blob与ArrayBuffer和ArrayBufferView有着密切的关系。
码农帮派
2021/01/12
1.5K0
uni-app的app打包过程
https://nativesupport.dcloud.net.cn/AppDocs/README
达达前端
2020/11/16
4.7K0
uni-app的app打包过程
Web前端WebRTC攻略(一) 基础介绍
随着互联网高速发展,以及即将到来的5G时代,WebRTC作为前端互动直播和实时音视频的利器,也是将前端开发者们不可错过的学习领域。如果你现在只是听过而已,那你可能要好好学习一番。 01  什么是WebRTC? WebRTC 全称是(Web browsers with Real-Time Communications (RTC) 大概2011年,谷歌收购了 GIPS,它是一个为 RTC 开发出许多组件的公司,例如编解码和回声消除技术。Google 开源了 GIPS 开发的技术,并希望将其打造为行业标准。 收
用户1097444
2022/06/29
2.7K0
Web前端WebRTC攻略(一) 基础介绍
浅析 Web 录屏技术方案与实现
本文首发于政采云前端团队博客:浅析 Web 录屏技术方案与实现 https://www.zoo.team/article/webrtc-screen
政采云前端团队
2021/11/12
2.1K0
WebRTC 之 MediaRecorder_ 用你的浏览器录音和录像
既然现在的笔记本电脑,平板,手机都有摄像头和麦克风,那么录音和录像就是一件非常容易的事情了,但是如果不用别人写好的录音录像程序,让你自己来实现一个录音和录像应用,其实也没那么简单。
前端小tips
2021/11/30
1.9K0
WebRTC 之 MediaRecorder_ 用你的浏览器录音和录像
Web前端WebRTC攻略(二) 音视频设备及数据采集
2021年1月26日,W3C 和 IETF 同时宣布 WebRTC(Web Real-Time Communications,Web 实时通信)现发布为正式标准,标志着 WebRTC正式走进舞台。尽管如此,WebRTC 早已在视频会议和直播中得到了广泛的应用,成为了线上通信及协作服务的基石。IMWeb 团队是国内最早研究 WebRTC 的团队之一,在腾讯课堂、企鹅辅导等应用中都有实践。这是 WebRTC 系列的第二篇,希望可以帮助你更好的了解音视频。 一、音视频采集基本概念 在讲浏览器提供的用 JS 采集音
用户1097444
2022/06/29
3.7K0
Web前端WebRTC攻略(二) 音视频设备及数据采集
uni-app小程序开发
https://opendocs.alipay.com/mini/ide/download
码客说
2024/05/15
2120
uni-app小程序开发
HBuildX安装和uniapp的示例
标准版可直接用于web开发、markdown、字处理等,做App仍需要安装插件。App开发版提前打包了App/uni-app开发所需的插件,可以直接使用。
世平
2021/06/09
2K1
HBuildX安装和uniapp的示例
前端音视频WebRTC实时通讯的核心
通过上两个系列专栏的学习,我们对前端音视频及 WebRTC 有了初步的了解,是时候敲代码实现一个 Demo 来真实感受下 WebRTC 实时通讯的魅力了。还没有看过的同学请移步:
童欧巴
2020/11/02
2.8K0
前端音视频WebRTC实时通讯的核心
通过 web 录制视频(摄像头)并上传
在用户通过提示允许的情况下,打开系统上的相机或屏幕共享和/或麦克风,并提供 MediaStream 包含视频轨道和/或音频轨道的输入。
张云飞Vir
2021/04/28
2.1K0
uni-app的unipush实现通知栏推送服务全过程「建议收藏」
说明文档这个事情官方应该提供出来,可惜官方觉得是多余的,免费的东西凭啥给你做好。于是我在这里叙述一下实现消息通知推送的步骤。
全栈程序员站长
2022/09/05
8.4K0
uni-app的unipush实现通知栏推送服务全过程「建议收藏」
媒体数据获取与播放
     在学习 WebRTC 音视频开发前,我们先来学习了解一下音频、视频等媒体数据的获取与播放。了解一下入门级的 API 的使用。
前端小鑫同学
2022/12/26
1.1K0
WebRTC网页打开摄像头并录制视频
前面我们能打开本地摄像头,并且在网页上看到摄像头的预览图像。 本文我们使用MediaRecorder来录制视频。在网页上播放录制好的视频,并能提供下载功能。
落寞的鱼丶
2022/02/26
1.7K0
uni-app实战案例:实现H5页面麦克风权限获取与录音功能
你好,我是喵喵侠。在我们日常的前端开发中,时常会遇到需要获取设备麦克风权限并进行录音的需求。比如,接到一个需求,要求在聊天对话框中实现语音识别功能,用户点击按钮开始录音,再次点击按钮停止录音,并将录制的音频转换成文字进行显示。在这个过程中,技术上的难点主要集中在如何通过浏览器获取麦克风权限,以及如何处理麦克风接收到的音频流。
喵喵侠
2024/08/09
3.2K0
uni-app实战案例:实现H5页面麦克风权限获取与录音功能
『UniApp』核心语法
下载地址:https://www.dcloud.io/hbuilderx.html
程序员NEO
2023/12/26
5942
『UniApp』核心语法
相关推荐
js调用网页摄像头进行直播/拍照
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验