屏幕锁定时开始语音搜索

时间:2017-08-19 15:46:56

标签: android

我的目标:我希望能够在我开车时启动Google地图导航而无需拨打我的手机。

我的想法:我正在编写一个可以通过我的汽车使用智能设备链接通过蓝牙启动的应用。重要的是我可以发起一项活动。我的计划是,活动通过意图开始语音搜索,并使用结果进行查询以映射导航。

我的问题:只要屏幕已解锁,此功能就可以使用。但是当它被锁定时,它不会启动语音搜索并立即调用onActivityResult resultCode为0.正如您在下面看到的那样,我尝试打开屏幕,但那并没有&#39 ; t帮助。

我的问题:关于如何正确唤醒屏幕或如何使语音搜索工作的任何想法?

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

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
                WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startActivityForResult(intent, 1);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
        case 1: {
            if (resultCode == Activity.RESULT_OK && null != data) {
                String text = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).get(0);
                Uri gmmIntentUri = Uri.parse(String.format("google.navigation:q=%s", text));
                Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
                mapIntent.setPackage("com.google.android.apps.maps");
                mapIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(mapIntent);
            }
            break;
        }
    }
}

0 个答案:

没有答案