You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuzix M300开发:无法调用继承BroadcastReceiver类的公共方法

解决Vuzix M300语音命令接收器中公共方法无法调用的问题

嘿,我来帮你搞定这个Vuzix M300语音命令的问题!你遇到的核心问题是BroadcastReceiver的调用逻辑和普通Java类不一样——不能直接实例化后调用sayHello(),得跟着Vuzix的语音命令注册、触发流程来走,具体步骤如下:

1. 检查AndroidManifest.xml的配置

首先要确保你的VoiceCmdReceiver在清单文件里正确注册,并且添加Vuzix要求的权限和Intent Filter,这样系统才能识别到你的接收器:

<!-- 添加Vuzix语音命令权限 -->
<uses-permission android:name="com.vuzix.permission.VOICE_COMMAND" />

<!-- 注册语音命令接收器 -->
<receiver android:name=".VoiceCmdReceiver">
    <intent-filter>
        <action android:name="com.vuzix.intent.action.VOICE_COMMAND" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>

2. 正确实现BroadcastReceiver的核心方法

BroadcastReceiver的触发入口是onReceive()方法,你需要在这里捕获Vuzix的语音命令,再调用你的sayHello()方法。修改你的VoiceCmdReceiver代码:

public class VoiceCmdReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 获取触发的语音命令内容
        String voiceCommand = intent.getStringExtra("com.vuzix.intent.extra.VOICE_COMMAND");
        
        // 匹配你要触发的命令关键词(比如你设置的"hello")
        if ("hello".equals(voiceCommand)) {
            // 调用你的公共方法,这里可以传入Context方便后续操作(比如Toast、语音反馈)
            sayHello(context);
        }
    }

    public void sayHello(Context context) {
        // 这里实现你的业务逻辑,比如弹出提示或播放语音
        Toast.makeText(context, "Hello from Vuzix M300!", Toast.LENGTH_SHORT).show();
    }
}

3. 在应用中注册语音命令到Vuzix设备

光有接收器还不够,你需要在应用启动时把你的语音命令注册到Vuzix的语音系统里,这样设备才能识别并触发你的接收器。比如在MainActivity的onCreate()里添加注册逻辑:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 注册"hello"语音命令
    Intent registerCmdIntent = new Intent("com.vuzix.intent.action.REGISTER_VOICE_COMMAND");
    registerCmdIntent.putExtra("com.vuzix.intent.extra.VOICE_COMMAND", "hello");
    registerCmdIntent.putExtra("com.vuzix.intent.extra.COMMAND_DESCRIPTION", "触发Hello功能");
    sendBroadcast(registerCmdIntent);
}

另外,记得在应用销毁时取消注册,避免命令残留:

@Override
protected void onDestroy() {
    super.onDestroy();
    Intent unregisterCmdIntent = new Intent("com.vuzix.intent.action.UNREGISTER_VOICE_COMMAND");
    unregisterCmdIntent.putExtra("com.vuzix.intent.extra.VOICE_COMMAND", "hello");
    sendBroadcast(unregisterCmdIntent);
}

4. 测试注意事项

  • 确保Vuzix M300设备的语音识别功能已经开启(可以在设备设置里找到语音命令选项)
  • 测试时说出你注册的关键词(比如"hello"),系统就会触发onReceive()方法,进而调用你的sayHello()

内容的提问来源于stack exchange,提问作者Sarthak mirajkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:29:58