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