感谢您的时间。
我编写了一个通过蓝牙按钮按下触发的小应用程序。它通过文本转语音向用户打招呼,然后提示他们输入使用语音转文本处理的命令。
一切都很好,除了我的应用程序每次蓝牙连接只会启动一次。下次我按住蓝牙按钮时,我听到的只是哔声,但没有应用程序启动。如果我断开蓝牙并重新连接蓝牙,我的应用程序将成功启动,但只是第一次。我尝试了另一个应用程序作为我的默认蓝牙应用程序,每次调用它都可以正常工作,所以这一定是我的设计问题。
为了使我的应用程序有资格作为蓝牙按钮推送的默认设置,我在清单中包含了 voice_command 操作:
<intent-filter>
<action android:name="android.intent.action.VOICE_COMMAND" />
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
我所有的工作都集中在一个活动课上:
public class MainActivity extends Activity implements OnSharedPreferenceChangeListener, OnInitListener, OnAudioFocusChangeListener {
使用 text-to-speech,我知道应用程序第一次启动时,它会进入我在 onInit 函数中编写的第一个 text-to-speech 调用:
@Override
public void onInit(int status) {
}
当我的应用程序完成并调用finish() 时,文本转语音告诉我该应用程序执行以下顺序:
onPause();
onStop();
onDestroy();
当我在现有蓝牙连接上第二次按下蓝牙按钮时,我的应用程序没有进入 onInit()。我可以相当肯定这一点,因为文本到语音转换不是大声朗读的。这向我表明该应用程序根本没有启动。
在每个蓝牙连接首次成功启动应用程序后,我尝试清除应用程序的缓存并通过设置菜单强制关闭应用程序。没有什么帮助。
任何关于我可以在哪里继续调试的建议将不胜感激。我在 Nexus 4 上进行测试。
谢谢,
格雷格