HarmonyOS鸿蒙Next中如何将具备播放器能力的app与系统语音引擎的播放、暂停命令关联起来

HarmonyOS鸿蒙Next中如何将具备播放器能力的app与系统语音引擎的播放、暂停命令关联起来 手机HarmonyOS版本3.0,在QQ音乐里唤醒YoYo说“暂停”,正在播放的音乐就能被暂停掉,而我自己做的音乐播放app就不能被系统语音引擎识别到,说“播放”、“暂停”这些都没有反应,这是要接入什么系统能力才能实现吗

4 回复

楼主您好,需要接入MediaSession,具体操作可以参考以下文档:

https://blog.csdn.net/sinat_29256651/article/details/104170706

更多关于HarmonyOS鸿蒙Next中如何将具备播放器能力的app与系统语音引擎的播放、暂停命令关联起来的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主你好,关于此问题需要向相关部门咨询确认,请耐心等待。

在HarmonyOS鸿蒙Next中,将具备播放器能力的App与系统语音引擎的播放、暂停命令关联,可以通过以下步骤实现:

  1. 配置Ability:在config.json中声明Ability,确保Ability支持voicemedia的意图过滤。

    "abilities": [
        {
            "name": ".MainAbility",
            "description": "Main Ability",
            "icon": "$media:icon",
            "label": "MyApp",
            "type": "page",
            "visible": true,
            "skills": [
                {
                    "actions": [
                        "action.system.play",
                        "action.system.pause"
                    ],
                    "entities": [
                        "entity.system.media"
                    ]
                }
            ]
        }
    ]
    
  2. 处理语音命令:在Ability的onStartonNewIntent方法中,处理系统发送的播放和暂停命令。

    onStart(intent: Want) {
        if (intent.action === "action.system.play") {
            this.handlePlayCommand();
        } else if (intent.action === "action.system.pause") {
            this.handlePauseCommand();
        }
    }
    
    handlePlayCommand() {
        // 实现播放逻辑
    }
    
    handlePauseCommand() {
        // 实现暂停逻辑
    }
    
  3. 注册媒体会话:使用MediaSession类注册媒体会话,以便系统语音引擎能够识别和控制播放器。

    let mediaSession = new media.MediaSession();
    mediaSession.setPlaybackState(media.PlaybackState.PLAYING);
    
  4. 更新播放状态:在播放器状态变化时,更新MediaSession的播放状态,确保系统语音引擎能够同步状态。

    mediaSession.setPlaybackState(media.PlaybackState.PAUSED);
    

通过以上步骤,你的App可以与系统语音引擎的播放、暂停命令关联,实现语音控制播放器的功能。

在HarmonyOS鸿蒙Next中,可以通过实现MediaSession接口将具备播放器能力的App与系统语音引擎的播放、暂停命令关联。首先,在应用中创建MediaSession实例,并设置播放、暂停等回调方法。然后,通过MediaSessionsetCallback方法注册这些回调。系统语音引擎在接收到播放或暂停命令时,会通过MediaSession调用相应的回调方法,从而控制应用的播放行为。

回到顶部