Android 屏幕锁定时启动语音搜索

Android 屏幕锁定时启动语音搜索,android,Android,我的目标:我想在车内启动谷歌地图导航,而不必伸手去拿手机 我的想法:我正在编写一个应用程序,可以通过蓝牙由我的汽车使用智能设备链接启动。重要的一点是,我可以发起一项活动。我的计划是,该活动通过intent启动语音搜索,并将结果用于查询地图导航 我的问题:只要屏幕已解锁,此功能就可以工作。但锁定后,它不会启动语音搜索,并且会立即调用onActivityResult,其中resultCode为0。正如你在下面看到的,我试着打开屏幕,但是没有用 我的问题:关于如何正确唤醒屏幕或如何使语音搜索正常工作,

我的目标:我想在车内启动谷歌地图导航,而不必伸手去拿手机

我的想法:我正在编写一个应用程序,可以通过蓝牙由我的汽车使用智能设备链接启动。重要的一点是,我可以发起一项活动。我的计划是,该活动通过intent启动语音搜索,并将结果用于查询地图导航

我的问题:只要屏幕已解锁,此功能就可以工作。但锁定后,它不会启动语音搜索,并且会立即调用
onActivityResult
,其中
resultCode
为0。正如你在下面看到的,我试着打开屏幕,但是没有用

我的问题:关于如何正确唤醒屏幕或如何使语音搜索正常工作,有什么想法吗

@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;
        }
    }
}

您是否尝试过WakefulBroadcastReceiver:我刚刚尝试过,但IntentService中没有startActivityForResult,因此我无法在那里启动语音搜索,如果我尝试通过上述活动调用startActivityForResult(此时可见)我得到的结果与以前相同您是否尝试过WakefulBroadcastReceiver:我刚刚尝试过,但IntentService中没有startActivityForResult,因此我无法在那里启动语音搜索,如果我尝试从上面的活动(可见)调用服务调用startActivityForResult,我会得到与以前相同的结果