安卓应用中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
相关产品推荐
相关产品推荐

