Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a3c9d31 authored by Valentin Kravtsov's avatar Valentin Kravtsov
Browse files

Fixing a bug when installing VoiceSearch cause error

Reinstalling VoiceIME created a problem because RecognitionService expected the first command to be setListener, in this version, such command is added
if the connection is broken.

Change-Id: Ia102fc1843053e2bdd330b380c2685a1227081b2
parent 1009e82e
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -216,7 +216,6 @@ public class RecognitionManager {
            throw new IllegalArgumentException("intent must not be null");
        }
        checkIsCalledFromMainThread();
        checkIsCommandAllowed();
        if (mConnection == null) { // first time connection
            mConnection = new Connection();
            if (!mContext.bindService(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),
@@ -243,7 +242,6 @@ public class RecognitionManager {
     */
    public void stopListening() {
        checkIsCalledFromMainThread();
        checkIsCommandAllowed();
        putMessage(Message.obtain(mHandler, MSG_STOP));
    }

@@ -254,7 +252,6 @@ public class RecognitionManager {
     */
    public void cancel() {
        checkIsCalledFromMainThread();
        checkIsCommandAllowed();
        putMessage(Message.obtain(mHandler, MSG_CANCEL));
    }

@@ -265,12 +262,6 @@ public class RecognitionManager {
        }
    }

    private void checkIsCommandAllowed() {
        if (mService == null && mPendingTasks.isEmpty()) { // setListener message must be there
            throw new IllegalStateException("Listener must be set before any command is called");
        }
    }

    private void putMessage(Message msg) {
        if (mService == null) {
            mPendingTasks.offer(msg);
@@ -281,6 +272,9 @@ public class RecognitionManager {

    /** sends the actual message to the service */
    private void handleStartListening(Intent recognizerIntent) {
        if (!checkOpenConnection()) {
            return;
        }
        try {
            mService.startListening(recognizerIntent, mListener);
            if (DBG) Log.d(TAG, "service start listening command succeded");
@@ -292,6 +286,9 @@ public class RecognitionManager {

    /** sends the actual message to the service */
    private void handleStopMessage() {
        if (!checkOpenConnection()) {
            return;
        }
        try {
            mService.stopListening(mListener);
            if (DBG) Log.d(TAG, "service stop listening command succeded");
@@ -303,6 +300,9 @@ public class RecognitionManager {

    /** sends the actual message to the service */
    private void handleCancelMessage() {
        if (!checkOpenConnection()) {
            return;
        }
        try {
            mService.cancel(mListener);
            if (DBG) Log.d(TAG, "service cancel command succeded");
@@ -312,6 +312,15 @@ public class RecognitionManager {
        }
    }
    
    private boolean checkOpenConnection() {
        if (mService != null) {
            return true;
        }
        mListener.onError(ERROR_CLIENT);
        Log.e(TAG, "not connected to the recognition service");
        return false;
    }

    /** changes the listener */
    private void handleChangeListener(RecognitionListener listener) {
        if (DBG) Log.d(TAG, "handleChangeListener, listener=" + listener);