回答
是的,Hamibot 支持定位功能。以下是获取位置的方法:
获取当前位置(经纬度)
// 文档地址 https://docs.hamibot.com/
// 需要"读取位置信息"权限
// 首次运行会弹窗请求授权
var locationManager = context.getSystemService(android.content.Context.LOCATION_SERVICE);
var criteria = new android.location.Criteria();
criteria.setAccuracy(android.location.Criteria.ACCURACY_FINE);
var provider = locationManager.getBestProvider(criteria, true);
if (provider) {
var location = locationManager.getLastKnownLocation(provider);
if (location) {
var lat = location.getLatitude(); // 纬度
var lng = location.getLongitude(); // 经度
var acc = location.getAccuracy(); // 精度(米)
toastLog("纬度: " + lat + ", 经度: " + lng + ", 精度: " + acc + "米");
} else {
toastLog("无法获取位置,请检查GPS是否开启");
}
}
完整封装函数
// 文档地址 https://docs.hamibot.com/
function getLocation() {
try {
var locationManager = context.getSystemService(android.content.Context.LOCATION_SERVICE);
var criteria = new android.location.Criteria();
criteria.setAccuracy(android.location.Criteria.ACCURACY_FINE);
var provider = locationManager.getBestProvider(criteria, true);
if (!provider) {
return null;
}
var location = locationManager.getLastKnownLocation(provider);
if (location) {
return {
latitude: location.getLatitude(),
longitude: location.getLongitude(),
accuracy: location.getAccuracy(),
altitude: location.getAltitude(),
time: new Date(location.getTime())
};
}
} catch (e) {
log("获取位置失败: " + e);
}
return null;
}
// 使用
var loc = getLocation();
if (loc) {
log("当前位置: " + loc.latitude + ", " + loc.longitude);
log("精度: " + loc.accuracy + "米");
} else {
log("获取位置失败,请确保GPS已开启");
}
注意事项
| 要点 | 说明 |
|---|---|
| 权限 | 需要授予"读取位置信息"权限 |
| GPS | 手机 GPS 必须开启 |
| 室内 | 室内可能定位不准,建议在室外测试 |
| 精度 | ACCURACY_FINE 为 GPS 精度,ACCURACY_COARSE 为网络定位 |
应用场景
| 场景 | 说明 |
|---|---|
| 钉钉打卡 | 获取位置判断是否在公司范围内 |
| 附近的人 | 获取坐标后计算距离 |
| 位置打卡 | 记录当前位置用于签到 |
注意:Hamibot 本身不提供地图展示功能,只能获取坐标。如需地图界面,需配合其他地图 SDK 或应用。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实