uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)

这篇具有很好参考价值的文章主要介绍了uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uni-app/vue 文字转语音朗读(小程序语音识别和朗读)

uniapp小程序功能集合(三 )

1、uniapp小程序文字转语音播报

一、第一种方式:直接加语音包

固定的文本
先利用工具生成了 文本语音mp3文件,放入项目中,直接用就好了

这里用到的工具:知意配音
链接地址:https://peiyin.wozhiyi.com/newproduction.html

接下来,代码部分。

  1. 在min.js文件里加入以下代码:
Vue.prototype.ScanAudio = function() {
	var music = null;
	music = uni.createInnerAudioContext(); //创建播放器对象 
	music.src = "../../static/cjcg.mp3";  //这里引入自己生成的mp3音频文件地址
	music.play(); //执行播放
	music.onEnded(() => {
		//播放结束
		music = null;
	});
}

2.在需要使用的页面直接调用:

//这里为接口请求成功的回调里 播放语音提示  
this.ScanAudio();//播放语音  结合自己项目需求调用

二、第二种方式:微信官方同声传译

第一步:登陆微信公众平台,侧边栏的设置-----第三方设置-----插件管理----添加插件(搜索–同声传译)

uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读),UniApp,uni-app,vue.js,语音识别
第二步:打开 hbiuider-x,找到当前项目,打开manifest.json,找到源码视图,配置插件

uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读),UniApp,uni-app,vue.js,语音识别

代码块:

// provider是你查看详情以后的appId
"plugins": {
		    "WechatSI": {
		      "version": "0.3.5",
		      "provider": "wx069ba97219f66d99"
		    }
}

第三步,页面引入使用
uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读),UniApp,uni-app,vue.js,语音识别

let plugin = requirePlugin("WechatSI");
let manager = plugin.getRecordRecognitionManager();
 
 
// 语音播报
			bobao(){
				let _this=this;
				plugin.textToSpeech({
				lang: "zh_CN",
				tts: true,
				content: '我是智能语音播报',
				success: function(res) {
				// console.log("succ tts", res.filename)   
				let music = null;
				music = uni.createInnerAudioContext(); //创建播放器对象
				music.src = res.filename;
				music.play(); //执行播放
				music.onEnded(() => {
					//播放结束
					music = null;
						});
				},
				fail: function(res) {
				     // console.log("fail tts", res)
						}
				})
},

功能实现 ok

2、uniapp小程序人脸识别

已实现

3、uni-app设置安卓系统闹钟

setAlarm(hour,minutes,message) {
 
	var that = this;
	var Intent = plus.android.importClass('android.content.Intent');
	var AlarmClock = plus.android.importClass("android.provider.AlarmClock");
	var intent = new Intent(AlarmClock.ACTION_SET_ALARM);
				
	//闹钟的小时
	intent.putExtra(AlarmClock.EXTRA_HOUR, hour);
 
	//闹钟的分钟
	intent.putExtra(AlarmClock.EXTRA_MINUTES, minutes);
 
	//响铃时提示的信息
	intent.putExtra(AlarmClock.EXTRA_MESSAGE, message);
 
	//对于一次性闹铃,无需指定此 extra
	//一个 ArrayList,其中包括应重复触发该闹铃的每个周日。
	// 每一天都必须使用 Calendar 类中的某个整型值(如 MONDAY)进行声明。
	//例如[this.Calendar.MONDAY,this.Calendar.TUESDAY,this.Calendar.WEDNESDAY]
	intent.putExtra(AlarmClock.EXTRA_DAYS, this.alarmDayList);
 
	//用于指定该闹铃触发时是否振动
	intent.putExtra(AlarmClock.EXTRA_VIBRATE, true);
				
	//如果为true,则调用startActivity()不会进入手机的闹钟设置界面
	intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    
    //清空任务中在其之上的Activity
	intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	
	var main = plus.android.runtimeMainActivity();
	plus.android.importClass("android.app.Activity");
 
	if (intent.resolveActivity(main.getPackageManager()) != null) {
		main.startActivity(intent);
	}
},

4、uniapp调用震动(uniapp开启短震动、触感反馈实现)

uniapp官网文档
在文档中只找到了uni.vibrateShort的方法,来开启短震动。对应安卓效果还行

uni.vibrateShort({
	success: ()=>{
		console.log('success');
	}
});

注意
iOS上只有长震动,没有短震动
iOS上需要手机设置“打开响铃时震动”或“静音时震动”,否则无法震动
IOS 开启触感反馈
iPhone 使用触感反馈需要手机支持并且在设置中打开,否则并不能触发。所以必须使用H5+的api方法,其核心代码如下:

let UIImpactFeedbackGenerator = plus.ios.importClass(
	'UIImpactFeedbackGenerator'
)
let impact = new UIImpactFeedbackGenerator()
impact.prepare()
impact.init(1)
impact.impactOccurred()

在需要在需要触感反馈的地方,把这段代码复制进去即可!

代码封装
安卓和ios实现公用代码如下:

onFeedTap() {
	let platform=uni.getSystemInfoSync().platform
	// #ifdef APP-PLUS
	if (platform == "ios") {
		let UIImpactFeedbackGenerator = plus.ios.importClass('UIImpactFeedbackGenerator');
		let impact = new UIImpactFeedbackGenerator();
		impact.prepare();
		impact.init(1);
		impact.impactOccurred();
	}
	if (platform == "android") {
		uni.vibrateShort();
	}
	// #endif
},

5、uniapp内置组件Map高德地图的使用

地址:
https://uniapp.dcloud.net.cn/component/map.html

<template>
	<view>
		<view class="page-body">
			<view class="page-section page-section-gap">
				<map style="width: 100%; height: 300px;" :latitude="latitude" :longitude="longitude" :markers="covers">
				</map>
			</view>
		</view>
	</view>
</template>




<script>
export default {
	data() {
		return {
			id:0, // 使用 marker点击事件 需要填写id
			title: 'map',
			latitude: 39.909,
			longitude: 116.39742,
			covers: [{
				latitude: 39.909,
				longitude: 116.39742,
				iconPath: '../../../static/location.png'
			}, {
				latitude: 39.90,
				longitude: 116.39,
				iconPath: '../../../static/location.png'
			}]
		}
	},
	methods: {

	}
}
</script>

实现轨迹polyline和标记点markers最终实现效果

添加轨迹图的外层
uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读),UniApp,uni-app,vue.js,语音识别

<!-- 轨迹地图st -->
<view class="mapbox">
	<map class="mapstyle" :latitude="latitude" :longitude="longitude" :markers="markers" :polyline="polyline">
										<cover-view slot="callout">
											<block v-for="(item, index) in customCalloutMarkerIds" :key="index">
												<cover-view class="customCallout" :marker-id="item">
													<cover-view class="content">
														{{markersinit[index].stationName}}
													</cover-view>
												</cover-view>
											</block>
										</cover-view>
									</map>
							</view> 
<!-- 轨迹地图end -->

给图层上样式

/* 地图st */
	.mapbox {
		width: 100%;
		height: 100%;
		position: relative;
	}
	 
	.mapstyle {
		width: 100%;
		height: 100%;
		position: relative;
	}
	.customCallout {
		padding: 2rpx 8rpx;
		text-align: center;
		color: #2A7BE2;
		font-size: 26rpx;
		font-weight: bold;
		background: #ffffffb8;
		border-radius: 30rpx;
	}
/* 地图end */

放上图层经纬度数据以及mark标记点


// 轨迹地图
				latitude: 39.904600,
				longitude: 116.358258,
				customCalloutMarkerIds: [0],
				markersinit: [
				{
					id: 0,
					polylineId: 1,
					longitude: 116.358258,
					latitude: 39.904600,
					iconPath: "./image/location.png",
					width: 38,
					height: 38,
					stationName: '1',
					customCallout: {
						anchorY: 22,
						anchorX: 0,
						display: 'ALWAYS',
					}
				},{
					id: 1,
					polylineId: 1,
					longitude: 116.388258,
					latitude: 39.914600,
					iconPath: "./image/location.png",
					width: 38,
					height: 38,
					stationName: '1',
					customCallout: {
						anchorY: 22,
						anchorX: 0,
						display: 'ALWAYS',
					}
				},
				],
				markers: [],
				polylineinit: [{
						name: '健康轨迹',
						arrowLine: true,
						color: '#27bd09e6',
						width: 8,
						id: 2,
						points: [{
								longitude: 116.358258,
								latitude: 39.904600
							},
				 
							{
								longitude: 116.388258,
								latitude: 39.914600
							},
						],
					},
				],
polyline: [], //展示值
方法渲染
 // 渲染地图
 initMap() {
				//全天轨迹
				this.polyline = JSON.parse(JSON.stringify(this.polylineinit));
				this.markers = JSON.parse(JSON.stringify(this.markersinit));
},


动态
this.markersinit=[
								 {
								 	id: 0,
								 	polylineId: 1,
								 	longitude: res.data.data.trace[0].lon,
								 	latitude: res.data.data.trace[0].lat,
								 	iconPath: "./image/location.png",
								 	width: 38,
								 	height: 38,
								 	stationName: '1',
								 	customCallout: {
								 		anchorY: 22,
								 		anchorX: 0,
								 		display: 'ALWAYS',
								 	}
								 },{
								 	id: 1,
								 	polylineId: 1,
								 	longitude: res.data.data.trace[res.data.data.trace.length].lon,
								 	latitude: res.data.data.trace[res.data.data.trace.length].lat,
								 	iconPath: "./image/location.png",
								 	width: 38,
								 	height: 38,
								 	stationName: '1',
								 	customCallout: {
								 		anchorY: 22,
								 		anchorX: 0,
								 		display: 'ALWAYS',
								 	}
								 },
								 ];
								//全天轨迹
								this.polyline = JSON.parse(JSON.stringify(this.polylineinit));
								this.markers = JSON.parse(JSON.stringify(this.markersinit));

实现自动缩放展示视图内所有的点标记

include-points文章来源地址https://www.toymoban.com/news/detail-724833.html

  <map id="map" :include-points="includePoints" style="height: 100vh; width:100%;" :latitude="latitude" :longitude="longitude" ></map>
 

this.getIncludePoints();

getIncludePoints(){
            //边界点
            let points = [
                {
			        longitude: "",
			        latitude: ""
		        },
                {
			        longitude: "",
			        latitude: ""
		        },
                ...
            ];
            this.includePoints.concat(points);
}
自适应视野范围
_this.includePoints=_this.polylineinit[0].points;

到了这里,关于uni-app/vue 文字转语音朗读(附小程序语音识别和朗读)uniapp小程序使用文字转语音播报类似支付宝收款播报小程序语音识别和朗读)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

    其中, pages 目录/ index 目录【必有】: index.js 编写业务逻辑 【初始数据,生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 直接输入敲回车,连尖括号都不需要就可以标签补全 1)初始数据写死 在 index.wxml 引入变

    2024年02月12日
    浏览(174)
  • uni-app基于vue实现商城小程序

    目录 一、前言 二、功能效果图 1.首页 2.分类 ​3.活动 4.我的 ​5.商品详情 6.购物车 三、代码实现 1.项目结构截图 uni-app,Hbuilder 2.首页源码 3.数据模拟通讯 四、总结 参考“网易严选”小程序 项目采用传统vue项目结构,即uni-app打包和运行成小程序,使用HBuilder开发工具开发项

    2024年02月03日
    浏览(53)
  • vue,小程序,uni-app的生命周期?

    Vue、小程序和Uni-App都有各自的生命周期,下面是它们的生命周期介绍: Vue 的生命周期 Vue 的生命周期分为创建、挂载、更新和销毁四个阶段,具体的生命周期函数如下: beforeCreate:实例刚在内存中被创建出来,此时还没有初始化好 data 和 methods 属性。 created:实例已经在内

    2024年01月25日
    浏览(52)
  • uni-app:vue3 + uni-app 在微信小程序中无法使用app.component全局注册组件

    按上文中的代码执行后,会发现在微信小程序开发中全局注册的组件是无法显示的,这是uniapp的一个未解决bug, 在uniapp中出了可以通过vue实例的component方法注册全局组件外,uniapp支持另一种全局注册的方式,就是通过 easycom 扫描注册,步骤如下 easycom 的扫描流程是:通过代码

    2024年02月16日
    浏览(98)
  • 小程序-uni-app:uni-app-base项目基础配置及使用 / uni-app+vue3+ts+vite+vscode

    目前(20230605)uni-app最新版本(3.8.4.20230531) 一、官网文档 微信开放文档 uni-app官网 二、创建项目 项目目标:vue3+ts+vite+vscode 创建以 typescript 开发的工程(如命令行创建失败,请直接访问 gitee 下载模板) npx degit dcloudio/uni-preset-vue#vite-ts uniapp-base ​ 本文创建成功 ​ 为了验

    2024年02月05日
    浏览(586)
  • 小程序-uni-app:uni-app-base项目基础配置及使用/uni-app+vue3+ts+vite+vscode

    目前(20230605)uni-app最新版本(3.8.4.20230531) 一、官网文档 微信开放文档 uni-app官网 二、创建项目 项目目标:vue3+ts+vite+vscode 创建以 typescript 开发的工程(如命令行创建失败,请直接访问 gitee 下载模板) npx degit dcloudio/uni-preset-vue#vite-ts uniapp-base ​ 本文创建成功 ​ 为了验

    2024年02月15日
    浏览(95)
  • uni-app+vue3微信小程序切换主题皮肤

    思路来源: https://blog.csdn.net/qq_42611074/article/details/128236458 引用store做全局css变量替换; store.js 添加全局的监听函数 common/themeMixin.js main.js 给要切换的页面加上css变量 login.vue 升级版 在base.css写好主题配色; 引用store做全局css变量替换; store.js 添加全局的监听函数 common/themeM

    2024年02月12日
    浏览(65)
  • uni-app微信小程序分享微信好友与分享到朋友圈功能【vue3+ts+uni-app+vite】

    微信小程序开发结束之后,点击右上角三个点显示: 1、创建share.ts文件 2、全局使用, 在 main.ts 里面 添加全局的 mixin 这样配置结束之后整个小程序所有页面点击右上角转发分享都走的这个文件,如果需要单个页面可以转发,可以看第三点 3、在需要的页面进行调用就行啦 a.

    2024年02月14日
    浏览(75)
  • VUE(uni-app框架)开发微信小程序③-显示隐藏

    uni-app控制显示隐藏的方式有两种,【v-if】 和   【v-show】 v-if:通过控制虚拟dom树的节点来达到控制式样的显示和隐藏,当参数为false的时候,该节点被删掉,当为true的时候则显示。 v-show:通过css样式中的dispaly:none来控制元素的显示和隐藏 代码如下: 显示效果如下:  通

    2024年02月16日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包