@Kaarel odpowiedział poprawnie, ale aby dostarczyć trochę więcej informacji:
Działalność musi zarejestrować następujące w manifeście:
<intent-filter >
<action android:name="android.speech.action.VOICE_SEARCH_HANDS_FREE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Google Search jest zarejestrowany na tym zamiarem, ale będzie tylko reagować na to, gdy ekran jest włączony i nie zablokowany patrz poniżej pochodzą z AudioService
private void startVoiceBasedInteractions(boolean needWakeLock) {
Intent voiceIntent = null;
// select which type of search to launch:
// - screen on and device unlocked: action is ACTION_WEB_SEARCH
// - device locked or screen off: action is ACTION_VOICE_SEARCH_HANDS_FREE
// with EXTRA_SECURE set to true if the device is securely locked
PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);
boolean isLocked = mKeyguardManager != null && mKeyguardManager.isKeyguardLocked();
if (!isLocked && pm.isScreenOn()) {
voiceIntent = new Intent(android.speech.RecognizerIntent.ACTION_WEB_SEARCH);
} else {
voiceIntent = new Intent(RecognizerIntent.ACTION_VOICE_SEARCH_HANDS_FREE);
voiceIntent.putExtra(RecognizerIntent.EXTRA_SECURE,
isLocked && mKeyguardManager.isKeyguardSecure());
}
// start the search activity
if (needWakeLock) {
mMediaEventWakeLock.acquire();
}
try {
if (voiceIntent != null) {
voiceIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
mContext.startActivity(voiceIntent);
}
} catch (ActivityNotFoundException e) {
Log.w(TAG, "No activity for search: " + e);
} finally {
if (needWakeLock) {
mMediaEventWakeLock.release();
}
}
Ta funkcja jest obecnie całkiem zbędny due to this linked bug, gdzie aplikacje systemowe zastępują priorytet, co uniemożliwia użytkownikowi wybór zainstalowanej alternatywy.
Który po utworzeniu takiej aplikacji i użytkownicy nie mogą z niej korzystać, jest naprawdę bardzo denerwujące ............. rzeczywiście.
@ Rai220: Oto co to jest RECORD_CODE? – Shiv