You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓应用中Matrix API、Google TTS与位置追踪集成的代码实现求助

实现代码(基于JavaScript开发安卓的主流React Native场景)

前置配置

  • 先安装所需依赖:
npm install @react-native-community/geolocation @react-native-firebase/app @react-native-firebase/database axios react-native-tts
  • 安卓Manifest文件中添加必备权限:
<!-- 位置权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET" />

核心功能代码

import Geolocation from '@react-native-community/geolocation';
import database from '@react-native-firebase/database';
import axios from 'axios';
import TTS from 'react-native-tts';

// 新页面加载后触发执行
const initFeature = async () => {
  try {
    // 1. 获取用户当前坐标
    const currentCoords = await new Promise((resolve, reject) => {
      Geolocation.getCurrentPosition(
        pos => resolve(`${pos.coords.longitude},${pos.coords.latitude}`),
        err => reject(err)
      )
    })

    // 2. 读取Firebase中存储的用户选定目标坐标
    const targetSnapshot = await database()
      .ref('users/[替换为你的用户标识路径]/targetCoord') // 替换为你实际的Firebase存储路径
      .once('value')
    const targetCoords = targetSnapshot.val()

    // 3. 调用Matrix API计算通行时长
    const MAPBOX_TOKEN = '替换为你自己的Mapbox访问令牌'
    const apiRes = await axios.get(
      `https://api.mapbox.com/directions-matrix/v1/mapbox/driving/${currentCoords},${targetCoords}`,
      {
        params: {
          approaches: 'curb;curb',
          access_token: MAPBOX_TOKEN
        }
      }
    )

    if (apiRes.data.code === 'Ok') {
      // 4. 提取时长转换为分钟
      const durationSec = apiRes.data.durations[0][1]
      const durationMin = Math.round(durationSec / 60)

      // 5. 调用TTS朗读提示文本
      const speakText = `车辆将在${durationMin}分钟后抵达`
      TTS.speak(speakText)
    }
  } catch (e) {
    console.error('执行出错:', e)
  }
}

// 页面生命周期管理,销毁时释放TTS资源
useEffect(() => {
  // 执行前先校验位置权限已获取,避免权限拒绝崩溃
  initFeature()
  return () => {
    TTS.destroy()
  }
}, [])

适配说明

如果使用Cordova、NativeScript等其他JS安卓开发框架,仅需替换上述代码中位置获取、Firebase读取、TTS调用三部分对应框架的API即可,核心的接口请求、数据解析逻辑保持不变。

内容的提问来源于stack exchange,提问作者Mahaboss

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:15:01