HarmonyOS鸿蒙Next 5有没有获取手机电量和前台应用

HarmonyOS鸿蒙Next 5有没有获取手机电量和前台应用,正在播放媒体信息名称的API

8 回复

1.获取电池电量信息
示例:

Button('获取电量信息').onClick((event: ClickEvent) => {
  // 获取当前电量百分比
  let capacity = batteryInfo.batterySOC;
  AlertDialog.show({ message: JSON.stringify(capacity, null, 2) })
})

参考文档:[@ohos.batteryInfo (电量信息)-设备管理-ArkTS API-Basic Services Kit(基础服务)-基础功能-系统 - 华为HarmonyOS开发者](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-battery-info)

2.获取正在播放媒体信息名称的API:我刚查了一下没有找到查询第三方应用的监听,可以提一个工单查询一下相关信息
 

Button('获取播放信息').onClick((event: ClickEvent) => { //只能查询自己应用的播放状态
  this.avsessionController?.getAVQueueTitle().then((title: string) => {
    AlertDialog.show({ message: JSON.stringify(title, null, 2) })
    console.info(`GetAVQueueTitle : SUCCESS : title : ${title}`);
  }).catch((err: BusinessError) => {
    console.error(`GetAVQueueTitle BusinessError: code: ${err.code}, message: ${err.message}`);
  });
})

更多关于HarmonyOS鸿蒙Next 5有没有获取手机电量和前台应用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


获取手机电量

使用 @kit.PowerManager 模块的 BatteryInfo 接口:

import { powerManager } from '[@kit](/user/kit).PowerManager';

try {
  const batteryInfo = powerManager.getBatteryInfoSync();
  console.log(`电量:${batteryInfo.batteryLevel}%`); // 百分比电量
  console.log(`充电状态:${batteryInfo.chargingStatus}`); // 1-充电中,2-未充电
} catch (err) {
  console.error('获取电量失败:', err.code, err.message);
}

需要在 module.json5 中声明:

"requestPermissions": [
  "ohos.permission.POWER"
]

获取前台应用信息

通过 @kit.AbilityManager 模块的 MissionManager 接口:

import { missionManager } from '[@kit](/user/kit).AbilityManager';

try {
  const runningMissionInfo = await missionManager.getMissionInfo('', 0);
  const topAbility = runningMissionInfo; // 取第一个任务(前台应用)
  console.log(`包名:${topAbility.abilityBundleName}`); 
  console.log(`Ability名称:${topAbility.abilityName}`);
} catch (err) {
  console.error('获取前台应用失败:', err.code, err.message);
}

别忘了在 module.json5 中声明权限:

"requestPermissions": [
  "ohos.permission.MANAGE_MISSIONS"
]

获取正在播放的媒体信息

通过 @kit.AVSession 模块监听媒体会话元数据:

import { avSession } from '[@kit](/user/kit).AVSession';

// 创建会话监听器
const session = avSession.createAVSession(this.context, 'mySession', 'audio');
session.on('metadataChange', (metadata: avSession.AVMetaData) => {
  console.log(`媒体标题:${metadata.title}`); 
  console.log(`艺术家:${metadata.artist}`);
});

// 获取所有活跃会话
avSession.getAllSessionDescriptors().then((descriptors) => {
  descriptors.forEach(desc => {
    console.log(`会话ID:${desc.sessionId}`);
    console.log(`应用包名:${desc.elementName.bundleName}`);
  });
});

获取手机电量

需在 module.json5 中声明 ohos.permission.BATTERY_STATS

import batteryInfo from '[@kit](/user/kit).PowerManagement';

// 获取当前电量百分比
let capacity = batteryInfo.batterySOC;
// 监听电量变化
batteryInfo.on('batteryStatus', (status) => {
  hilog.info(0x0000, 'Battery', 'Current capacity: %{public}d', status.batterySOC);
});

判断应用前后台状态

通过 @kit.AbilityRuntime 的 appManager 接口获取进程状态

import appManager from '[@kit](/user/kit).AbilityRuntime';

// 获取当前所有运行进程信息
let processInfo = appManager.getRunningProcessInformation();
processInfo.forEach((info) => {
  if (info.pid === process.pid) { // 过滤当前应用进程
    hilog.info(0x0000, 'AppState', 'Current state: %{public}d', info.processState);
    // StateType.FOREGROUND 表示前台,StateType.BACKGROUND 表示后台
  }
});

获取媒体播放信息

通过 @kit.AVSession 模块的会话管理能力实现

import avSession from '[@kit](/user/kit).AVSession';

// 创建媒体会话
let session = avSession.createAVSession(context, 'mySession', 'audio');
// 设置元数据(需应用自身为播放器)
session.setAVMetadata({
  title: 'Sample Song',
  artist: 'Artist'
});

// 监听其他应用的媒体信息(需声明 ohos.permission.MANAGE_MEDIA_RESOURCES 权限)
let sessionManager = avSession.getAVSessionManager();
sessionManager.on('sessionCreate', (session) => {
  session.on('metadataChange', (metadata) => {
    hilog.info(0x0000, 'MediaInfo', 'Title: %{public}s', metadata.title);
  });
});

你好,鸿蒙 5 提供了标准系统接口(API),可通过 @ohos.batteryInfo 模块获取当前电量百分比

鸿蒙 5 支持通过 AbilityManager 获取当前前台应用的包名

import abilityManager from '[@ohos](/user/ohos).app.ability.abilityManager';

let ability = await abilityManager.getForegroundAbility();
let packageName = ability.bundleName;

鸿蒙 5 引入了 AVSession 模块,支持监听系统级媒体播放状态,包括当前播放的媒体信息

注意的是ohos.permission.MEDIA_LOCATION,仅对系统应用或具备媒体控制能力的应用开放

内容可能存在不足,您可以通过API参考来进行编写

HarmonyOS Next 5提供相关API。获取电量使用@ohos.batteryInfo模块的batteryInfo属性。获取前台应用通过@ohos.app.ability.appManagergetRunningProcessInfo接口。媒体播放信息可通过@ohos.multimedia.mediaSession模块的getActiveSessiongetController方法获取当前会话及元数据。具体接口定义参考鸿蒙官方API文档。

目前HarmonyOS Next暂未提供直接获取前台应用名称和媒体播放信息的公开API。获取手机电量可通过@ohos.batteryInfo模块的batterySOC属性实现。建议关注后续SDK版本更新,相关能力可能在后续迭代中开放。

回到顶部