Merge "Add callbacks when TextClassifierService connection status change"

This commit is contained in:
Joanne Chung
2019-10-29 02:06:51 +00:00
committed by Android (Google) Code Review
4 changed files with 55 additions and 0 deletions

View File

@@ -6962,9 +6962,11 @@ package android.service.textclassifier {
method @Deprecated public final android.view.textclassifier.TextClassifier getLocalTextClassifier();
method @Nullable public final android.os.IBinder onBind(android.content.Intent);
method @MainThread public abstract void onClassifyText(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextClassification.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextClassification>);
method public void onConnected();
method @MainThread public void onCreateTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationContext, @NonNull android.view.textclassifier.TextClassificationSessionId);
method @MainThread public void onDestroyTextClassificationSession(@NonNull android.view.textclassifier.TextClassificationSessionId);
method @MainThread public void onDetectLanguage(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLanguage.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLanguage>);
method public void onDisconnected();
method @MainThread public abstract void onGenerateLinks(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.TextLinks.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.TextLinks>);
method @Deprecated @MainThread public void onSelectionEvent(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.SelectionEvent);
method @MainThread public void onSuggestConversationActions(@Nullable android.view.textclassifier.TextClassificationSessionId, @NonNull android.view.textclassifier.ConversationActions.Request, @NonNull android.os.CancellationSignal, @NonNull android.service.textclassifier.TextClassifierService.Callback<android.view.textclassifier.ConversationActions>);

View File

@@ -74,4 +74,6 @@ oneway interface ITextClassifierService {
in TextClassificationSessionId sessionId,
in ConversationActions.Request request,
in ITextClassifierCallback callback);
void onConnectedStateChanged(int connected);
}

View File

@@ -17,6 +17,7 @@
package android.service.textclassifier;
import android.Manifest;
import android.annotation.IntDef;
import android.annotation.MainThread;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -51,6 +52,8 @@ import android.view.textclassifier.TextSelection;
import com.android.internal.util.Preconditions;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -98,6 +101,18 @@ public abstract class TextClassifierService extends Service {
public static final String SERVICE_INTERFACE =
"android.service.textclassifier.TextClassifierService";
/** @hide **/
public static final int CONNECTED = 0;
/** @hide **/
public static final int DISCONNECTED = 1;
/** @hide */
@IntDef(value = {
CONNECTED,
DISCONNECTED
})
@Retention(RetentionPolicy.SOURCE)
public @interface ConnectionState{}
/** @hide **/
private static final String KEY_RESULT = "key_result";
@@ -195,6 +210,12 @@ public abstract class TextClassifierService extends Service {
mMainThreadHandler.post(
() -> TextClassifierService.this.onDestroyTextClassificationSession(sessionId));
}
@Override
public void onConnectedStateChanged(@ConnectionState int connected) {
mMainThreadHandler.post(connected == CONNECTED ? TextClassifierService.this::onConnected
: TextClassifierService.this::onDisconnected);
}
};
@Nullable
@@ -206,6 +227,26 @@ public abstract class TextClassifierService extends Service {
return null;
}
@Override
public boolean onUnbind(@NonNull Intent intent) {
onDisconnected();
return super.onUnbind(intent);
}
/**
* Called when the Android system connects to service.
*/
public void onConnected() {
}
/**
* Called when the Android system disconnects from the service.
*
* <p> At this point this service may no longer be an active {@link TextClassifierService}.
*/
public void onDisconnected() {
}
/**
* Returns suggested text selection start and end indices, recognized entity types, and their
* associated confidence scores. The entity types are ordered from highest to lowest scoring.

View File

@@ -30,6 +30,7 @@ import android.os.UserHandle;
import android.service.textclassifier.ITextClassifierCallback;
import android.service.textclassifier.ITextClassifierService;
import android.service.textclassifier.TextClassifierService;
import android.service.textclassifier.TextClassifierService.ConnectionState;
import android.util.ArrayMap;
import android.util.Slog;
import android.util.SparseArray;
@@ -129,6 +130,10 @@ public final class TextClassificationManagerService extends ITextClassifierServi
mLock = new Object();
}
@Override
public void onConnectedStateChanged(@ConnectionState int connected) {
}
@Override
public void onSuggestSelection(
@Nullable TextClassificationSessionId sessionId,
@@ -579,6 +584,11 @@ public final class TextClassificationManagerService extends ITextClassifierServi
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
init(ITextClassifierService.Stub.asInterface(service));
try {
mService.onConnectedStateChanged(TextClassifierService.CONNECTED);
} catch (RemoteException e) {
Slog.e(LOG_TAG, "error in onConnectedStateChanged");
}
}
@Override