9、设备能力调用全攻略:调用相机、定位与系统分享(附实操代码) 原创

wx5eb6c0016c3c7
发布于 2025-5-13 11:25
浏览
0收藏

🎯 一、目标功能

实现一个页面,包含以下按钮和功能:

  • 📸 调用系统相机拍照,预览照片
  • 📍 获取当前定位信息(经纬度)
  • 📤 一键系统分享文本内容

最终效果如图👇


📷 二、相机拍照功能实现

1. 添加权限

module.json5 添加:

json
复制编辑
"requestPermissions": [
  { "name": "ohos.permission.CAMERA" },
  { "name": "ohos.permission.WRITE_MEDIA" }
]

2. 调用系统相机并保存图片

ts
复制编辑
import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import promptAction from '@ohos.promptAction';
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import featureAbility from '@ohos.ability.featureAbility';

async function takePhoto() {
  const context = featureAbility.getContext();
  const atManager = abilityAccessCtrl.createAtManager();
  const result = await atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA']);

  if (result.authResults[0] === 0) {
    // 打开系统相机(这里只做跳转,具体需集成子应用或系统调用)
    promptAction.showToast({ message: '📸 相机调用成功!此处可嵌入拍照组件' });
  }
}

📌 注:真实拍照功能在部分设备需使用 ohos.media.image 模块或子组件封装能力实现。


📍 三、获取当前定位功能实现

1. 添加定位权限

json
复制编辑
"requestPermissions": [
  { "name": "ohos.permission.LOCATION" }
]

2. 调用定位服务

ts
复制编辑
import geolocation from '@ohos.geoLocation';

async function getLocation() {
  try {
    const result = await geolocation.getCurrentLocation();
    promptAction.showToast({
      message: `当前经纬度:${result.latitude}, ${result.longitude}`
    });
  } catch (err) {
    promptAction.showToast({ message: '获取定位失败' });
  }
}

📤 四、一键分享内容

ts
复制编辑
import { ShareFeature } from '@ohos.share';

function shareText() {
  ShareFeature.shareText({
    text: '鸿蒙太强了,我正在开发 HarmonyOS App!',
    title: '分享内容',
    dialogTitle: '分享到'
  });
}

🧪 五、完整界面组件(含三功能)

ts
复制编辑
@Entry
@Component
struct DeviceToolkit {
  build() {
    Column() {
      Button('拍照').onClick(() => takePhoto())
      Button('获取定位').onClick(() => getLocation())
      Button('系统分享').onClick(() => shareText())
    }
    .space(20)
    .padding(30)
    .alignItems(HorizontalAlign.Center)
  }
}

📌 七、常见问题总结

问题 解决方案
权限请求无效 检查是否调用 requestPermissionsFromUser
相机无反应 使用模拟器调试需配置子应用相机模块
定位失败 确保开启 GPS 并授权系统定位权限
分享无效 分享组件需目标设备支持对应通道

📘 第十篇预告

《HarmonyOS NEXT适配与开发趋势:你准备好了吗?》
将全面解析 ArkTS 的未来、原生鸿蒙的挑战与红利!

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
标签
收藏
回复
举报
回复
    相关推荐