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
相关产品推荐
相关产品推荐

