2024年《移动软件开发》实验三:垃圾分类

一、效果展示:

1.热搜显示:

2.搜索功能

3.图像识别

4.语音识别

二、实现功能

1.热搜显示。

2.利用文本搜索的功能。

3.图像识别功能。

4.语音识别功能。

三、实现步骤

1.首先,使用微信开发工具导入实验项目。开启微信云开发服务。

2. 注册百度智能云并实名认证百度智能云-管理中心 (baidu.com), 创建一个图像识别应用, 记录应用API KEY 和 SECRET KEY, 创建资源之后记得领取免费资源

3. 使用微信开发者工具创建一个云开发环境, 并复制环境ID

4. 添加百度API KEY \ SECRET 和 小程序appid, 云环境ID

5. 将实验代码部署到云服务平台

包括getHotItems、login、search、type的函数

// getHotItems
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
  const db = cloud.database()
  try {
    return await db.collection('trash').orderBy('click_times', 'desc').limit(20).get()
  } catch (e) {
    console.error(e)
  }
}
// login
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}
// search
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const db = cloud.database()
  try {
    return await db.collection('trash').where({
      name: db.RegExp
        ({
          regexp: event._txt,
          //从搜索栏中获取的value作为规则进行匹配。
          options: 'i'
          //大小写不区分
        })}).get()
  } catch (e) {
    console.error(e)
  }
}
// type
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
  const db = cloud.database()
  try {
    return await db.collection('type').get()
  } catch (e) {
    console.error(e)
  }
}

6. 部署云数据库

7. 修改和更换部分代码

修改getBaiduToken函数:

  getBaiduTaken: function () {
    var that = this;
    const tokenUrl = `https://aip.baidubce.com/oauth/2.0/token`;
​
    wx.request({
      url: tokenUrl,
      method: 'POST',
      dataType: "json",
      header: {
        'content-type': 'application/json; charset=UTF-8'
      },
      data:{
        grant_type:"client_credentials",
        client_id:that.data.apikey,
        client_secret:that.data.apisecret,
      },
      success: function (res) {
        console.log("【getBaiduTaken提示pass】", res);
        that.setData({
          baiduToken: res.data.access_token
        })
      },
      fail: function (res) {
        console.log("【getBaiduTaken提示fail】", res);
      }
    })
  },

8.增加语音识别功能:

<!--在UI界面增加录音图标-->
<image src="../../images/lu.png" class="image-lu" bind:longpress="onLuYin"></image>

修改search.js中的代码,增加录音管理器和定时器,添加百度语音识别接口:

  onLoad: function (options) {
    this.setData({
      kindList: getApp().globalData.kindList,
    });
​
    this.onPullDownRefresh();
    this.data.recorderManager.onStart(() => {
      console.log('录音开始');
    });
​
    this.data.recorderManager.onStop((res) => {
      console.log('录音停止', res);
      const { tempFilePath } = res;
      this.setData({
        audioFilePath: tempFilePath
      });
​
      // 获取Access Token并进行语音识别
      getBaiduAccessToken().then(accessToken => {
        return recognizeVoice(tempFilePath, accessToken);
      }).then(resultText => {
        wx.showModal({
          title: '识别结果',
          content: resultText,
          showCancel: false
        });
      }).catch(err => {
        console.error('语音识别失败', err);
        wx.showToast({
          title: '识别失败',
          icon: 'none'
        });
      });
    });
  },
      
onLuYinStart() {
  const options = {
    duration: 60000,
    sampleRate: 16000,
    numberOfChannels: 1,
    encodeBitRate: 192000,
    format: 'aac',
    frameSize: 50
  };
  this.data.recorderManager.start(options);
    },
​
onLuYinStop() {
  this.data.recorderManager.stop();
},
​
onLuYin() {
  this.onLuYinStart();
}

四、遇到问题

描述实验过程中所遇到的问题,以及是如何解决的。有哪些收获和体会,对于课程的安排有哪些建议。

问题:在上传和部署云函数的过程中,出现Error: 请在编辑器云函数根目录(cloudfunctionRoot)选择一个云环境,创建云函数失败的问题。

解决方案:根文件夹右键,选择当前环境:development。

收获和体会:我学会了使用微信云服务大大简化了小程序开发的流程。开发者无需关注服务器运维和数据库管理等复杂技术,只需专注于业务逻辑开发即可。云函数、云数据库、云存储等功能的无缝集成,加快了开发速度,降低了维护成本,同时提高了应用的扩展性和稳定性

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值