Mam problem z nowym Android API21, w szczególności z VoiceInteractorService.Android API21: VoiceInteractionService onReady() nie nazywane
Chciałbym użyć nowego wykrywania Hotword w API21. Jeśli naciśniesz przycisk, powinno rozpocząć się wykrywanie słowa kluczowego dla słowa "google".
Kiedy mam aktywny (główną działalność) i chcę zadzwonić do createAlwaysOnHotwordDetector (keyphrase String, Locale lokalizacji, AlwaysOnHotwordDetector.Callback callback) metodę z VoiceInteractorService, pojawia się błąd: java.lang.IllegalStateException: Niedostępne aż Wywoływana jest funkcja onReady(). Próbowałem rozwiązać ten problem tymczasowo, wykorzystując chwilę przy próbie wywołania pętli catch, aby zobaczyć, kiedy wywoływana jest funkcja onReady() i mogę wywołać metodę createAlwaysOnHotwordDetector(). Dowiedziałem się, że onReady() nigdy nie jest wywoływany, nawet po zwolnieniu pętli systemu przez 15 minut.
Czy ktoś ma pomysł, jak rozwiązać ten problem?
Z góry dziękuję.
To jest moja aktywność w zakresie wywoływania usługi VoiceInteractor.
import java.util.Locale;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.service.voice.AlwaysOnHotwordDetector;
import android.service.voice.AlwaysOnHotwordDetector.Callback;
import android.service.voice.VoiceInteractionService;
import android.service.voice.AlwaysOnHotwordDetector.EventPayload;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btn;
VoiceInteractionService service;
AlwaysOnHotwordDetector.Callback callback;
Locale locale = new Locale("nl-NL");
Context ctx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
ctx = getApplicationContext();
service = new VoiceInteractionService();
btn.setOnClickListener(new OnClickListener() {
// Create Hotword detector on button click
@Override
public void onClick(View v) {
service.createAlwaysOnHotwordDetector("google", locale, callback);
}
});
callback = new Callback() {
@Override
public void onRecognitionResumed() {
// TODO Auto-generated method stub
}
@Override
public void onRecognitionPaused() {
// TODO Auto-generated method stub
}
@Override
public void onError() {
// TODO Auto-generated method stub
Log.d("error", "error");
}
@Override
public void onDetected(EventPayload eventPayload) {
// TODO Auto-generated method stub
// Display Toast message when Hotword is detected
Toast.makeText(ctx, "Google", Toast.LENGTH_LONG).show();
}
@Override
public void onAvailabilityChanged(int status) {
// TODO Auto-generated method stub
}
};
}
}
Chciałbym też to wiedzieć. – user1810737
Znaleziono tę aplikację testową od Google, ale wciąż niejasne, jak zadzwonić do OnReady. https://android.googlesource.com/platform/frameworks/base/+/fb30d6936a4793a3369fbf8bf51fa526b8a77272/tests/VoiceInteraction/src/com/android/test/voiceinteraction?autodive=0/ – LHeslenfeld