Ich arbeite an einem persönlichen Assistenten mit Pocketsphinx Spracherkenner in Android. So funktioniert meine App jedes Mal, wenn ein spezielles Wort gehört wird, antwortet der persönliche Assistent und führt eine Aufgabe aus. Ich hatte einige Probleme mit der Freigabe des Mikrofons. Ich weiß nicht, ob es ein Fehler ist. Es passiert nur manchmal, wenn ich die Anwendung schließe, sucht das Mikrofon immer noch nach dem Wort und antwortet mit Text-zu-Sprache. Obwohl der Bildschirm ausgeschaltet ist. Wenn ich ein Video aufnehmen wollte, heißt es, Mikrofon wird von einer anderen Anwendung verwendet. Also muss ich meine App erneut öffnen und die App schließen, um das Mikrofon freizugeben. Nach meinem Wissen sind onStop, onPause und onDestroy die einzigen Lebenszyklen, um Ressourcen freizugeben. Es kann nicht mein Telefon sein, das eine Fehlfunktion hat. Ich habe die App mit zwei verschiedenen Handys getestet und immer noch passiert es manchmal in Bot. Jede Hilfe wäre willkommen. So wird das Mikrofon, die Kamera und der Text in Sprache ausgegeben. Vielen Dank im VorausManchmal wird Mikrofon nicht für andere Anwendungen freigegeben
Antwort
Versuchen Sie, die Onbackpressed-Methode zu überschreiben und Ihren Rekorder-Stop-Code dorthin zu stellen. Und dann füge am Ende endlich yeractivity.finish hinzu; Dies soll deine Aktivität zerstören, sobald zurück gedrückt wird und den Recorder stoppen sollte
Ich werde das jetzt versuchen. Ich werde es testen und Sie wissen lassen. Gibt es irgendeine Methode auch für die Homebutton-Taste genauso wie die Onback-Taste? Danke – sptBot
Probieren Sie OnUserLeaveHint() Dies wird Instanzen der App in irgendeiner Weise wie Teilnahme an einem Anruf, drücken Honne-Taste usw. –
Ich habe bereits die onBackPressed-Methode implementiert. Ich werde die Onbackpresse für einige Zeit testen müssen. Wie ich schon sagte, es passiert nur manchmal. Ich versuche herauszufinden, wo das Mikrofon nicht freigegeben wird. Ich dachte, dass onStop, onPause und onDestroy ausreichend waren, um Ressourcen für andere Apps freizugeben. onUserLeaveHint() wird es auch die onBackpressed basierend auf [link] (https://stackoverflow.com/questions/6612058/android-onbackpressed-onuserleavehint) @AndyW Antwort behandeln? – sptBot
- 1. So routen Sie Audio für andere Anwendungen
- 2. Speicher wird nicht freigegeben
- 3. UITableViewHeaderFooterView wird nicht freigegeben, wenn UITableView freigegeben wird
- 4. Speicher wird nicht korrekt freigegeben?
- 5. Sächsischer Speicher wird nicht freigegeben
- 6. SpriteKit-Szene wird nicht freigegeben
- 7. AngularJS Richtlinie wird manchmal nicht
- 8. IntentService wird nicht manchmal aufgerufen
- 9. forkpty funktioniert für einige Terminal-Anwendungen, nicht für andere
- 10. Mikrofon simulieren (virtuelles Mikrofon)
- 11. Andere ähnliche Anwendungen nicht tun Erlaubnis Kontrollen
- 12. Enter-Taste manchmal nicht erkannt in Windows-Anwendungen unter Cygwin
- 13. QIODevice :: writedata für Mikrofon
- 14. Warum akzeptieren einige Anwendungen manchmal keine Sendkeys?
- 15. Wird Heap für mehrere Threads freigegeben?
- 16. Manchmal wird keine gedruckt - und manchmal nicht, warum nicht?
- 17. Speicher wird nicht freigegeben, nachdem Fragment entfernt wurde
- 18. Manuelles Sperren einer Datei für andere Anwendungen
- 19. UImage-Speicher wird nicht freigegeben VM: ImageIO_JPEG_DATA?
- 20. Kamera wird nicht freigegeben, nachdem App abstürzt
- 21. ShowInputAsync wird manchmal nicht angezeigt
- 22. MouseDragged nicht freigegeben beim Ziehen auf andere Ansichten
- 23. SQL-Verbindung wird freigegeben
- 24. Maximieren/minimieren andere Anwendungen
- 25. UIViewController Unterklasse (Mimics UITableViewController) wird nicht freigegeben
- 26. SignalR IIS-Arbeitsprozess wird nicht freigegeben
- 27. AVPlayerViewController wird nach dem Abnehmen nicht freigegeben
- 28. Wie wird SparkSession in Multiuser-Projekten freigegeben?
- 29. Manchmal wird der Service angerufen und manchmal nicht
- 30. Berühren Speicherdeallokationsroutinen den Block, der freigegeben wird?
Abbrechen nach dem Stopp in onPause ist wahrscheinlich keine gute Idee, versuchen Sie einfach abzubrechen. –