Loading core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java +73 −32 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ package android.service.ondeviceintelligence; import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; import android.annotation.CallSuper; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.annotation.NonNull; Loading @@ -40,13 +43,16 @@ import android.content.Intent; import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.RemoteCallback; import android.os.RemoteException; import android.util.Log; import android.util.Slog; import com.android.internal.infra.AndroidFuture; Loading Loading @@ -88,6 +94,14 @@ public abstract class OnDeviceIntelligenceService extends Service { private static final String TAG = OnDeviceIntelligenceService.class.getSimpleName(); private volatile IRemoteProcessingService mRemoteProcessingService; private Handler mHandler; @CallSuper @Override public void onCreate() { super.onCreate(); mHandler = new Handler(Looper.getMainLooper(), null /* callback */, true /* async */); } /** * The {@link Intent} that must be declared as handled by the service. To be supported, the Loading @@ -107,38 +121,49 @@ public abstract class OnDeviceIntelligenceService extends Service { @Override public final IBinder onBind(@NonNull Intent intent) { if (SERVICE_INTERFACE.equals(intent.getAction())) { // TODO(326052028) : Move the remote method calls to an app handler from the binder // thread. return new IOnDeviceIntelligenceService.Stub() { /** {@inheritDoc} */ @Override public void ready() { OnDeviceIntelligenceService.this.onReady(); mHandler.executeOrSendMessage( obtainMessage(OnDeviceIntelligenceService::onReady, OnDeviceIntelligenceService.this)); } @Override public void getVersion(RemoteCallback remoteCallback) { Objects.requireNonNull(remoteCallback); OnDeviceIntelligenceService.this.onGetVersion(l -> { mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetVersion, OnDeviceIntelligenceService.this, l -> { Bundle b = new Bundle(); b.putLong(OnDeviceIntelligenceManager.API_VERSION_BUNDLE_KEY, l); b.putLong( OnDeviceIntelligenceManager.API_VERSION_BUNDLE_KEY, l); remoteCallback.sendResult(b); }); })); } @Override public void listFeatures(int callerUid, IListFeaturesCallback listFeaturesCallback) { Objects.requireNonNull(listFeaturesCallback); OnDeviceIntelligenceService.this.onListFeatures(callerUid, wrapListFeaturesCallback(listFeaturesCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onListFeatures, OnDeviceIntelligenceService.this, callerUid, wrapListFeaturesCallback(listFeaturesCallback))); } @Override public void getFeature(int callerUid, int id, IFeatureCallback featureCallback) { Objects.requireNonNull(featureCallback); OnDeviceIntelligenceService.this.onGetFeature(callerUid, id, wrapFeatureCallback(featureCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetFeature, OnDeviceIntelligenceService.this, callerUid, id, wrapFeatureCallback(featureCallback))); } Loading @@ -147,9 +172,11 @@ public abstract class OnDeviceIntelligenceService extends Service { IFeatureDetailsCallback featureDetailsCallback) { Objects.requireNonNull(feature); Objects.requireNonNull(featureDetailsCallback); OnDeviceIntelligenceService.this.onGetFeatureDetails(callerUid, feature, wrapFeatureDetailsCallback(featureDetailsCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetFeatureDetails, OnDeviceIntelligenceService.this, callerUid, feature, wrapFeatureDetailsCallback(featureDetailsCallback))); } @Override Loading @@ -163,10 +190,13 @@ public abstract class OnDeviceIntelligenceService extends Service { transport = CancellationSignal.createTransport(); cancellationSignalFuture.complete(transport); } OnDeviceIntelligenceService.this.onDownloadFeature(callerUid, mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onDownloadFeature, OnDeviceIntelligenceService.this, callerUid, feature, CancellationSignal.fromTransport(transport), wrapDownloadCallback(downloadCallback)); wrapDownloadCallback(downloadCallback))); } @Override Loading @@ -174,9 +204,11 @@ public abstract class OnDeviceIntelligenceService extends Service { AndroidFuture<ParcelFileDescriptor> future) { Objects.requireNonNull(fileName); Objects.requireNonNull(future); OnDeviceIntelligenceService.this.onGetReadOnlyFileDescriptor(fileName, future); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetReadOnlyFileDescriptor, OnDeviceIntelligenceService.this, fileName, future)); } @Override Loading @@ -184,13 +216,15 @@ public abstract class OnDeviceIntelligenceService extends Service { Feature feature, RemoteCallback remoteCallback) { Objects.requireNonNull(feature); Objects.requireNonNull(remoteCallback); OnDeviceIntelligenceService.this.onGetReadOnlyFeatureFileDescriptorMap( feature, parcelFileDescriptorMap -> { mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetReadOnlyFeatureFileDescriptorMap, OnDeviceIntelligenceService.this, feature, parcelFileDescriptorMap -> { Bundle bundle = new Bundle(); parcelFileDescriptorMap.forEach(bundle::putParcelable); remoteCallback.sendResult(bundle); }); })); } @Override Loading @@ -201,12 +235,18 @@ public abstract class OnDeviceIntelligenceService extends Service { @Override public void notifyInferenceServiceConnected() { OnDeviceIntelligenceService.this.onInferenceServiceConnected(); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onInferenceServiceConnected, OnDeviceIntelligenceService.this)); } @Override public void notifyInferenceServiceDisconnected() { OnDeviceIntelligenceService.this.onInferenceServiceDisconnected(); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onInferenceServiceDisconnected, OnDeviceIntelligenceService.this)); } }; } Loading @@ -222,7 +262,8 @@ public abstract class OnDeviceIntelligenceService extends Service { * @hide */ @TestApi public void onReady() {} public void onReady() { } /** Loading core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java +46 −21 Original line number Diff line number Diff line Loading @@ -19,7 +19,10 @@ package android.service.ondeviceintelligence; import static android.app.ondeviceintelligence.OnDeviceIntelligenceManager.AUGMENT_REQUEST_CONTENT_BUNDLE_KEY; import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; import android.annotation.CallbackExecutor; import android.annotation.CallSuper; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -48,6 +51,7 @@ import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; Loading Loading @@ -126,6 +130,14 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { public static final String DEVICE_CONFIG_UPDATE_BUNDLE_KEY = "device_config_update"; private IRemoteStorageService mRemoteStorageService; private Handler mHandler; @CallSuper @Override public void onCreate() { super.onCreate(); mHandler = new Handler(Looper.getMainLooper(), null /* callback */, true /* async */); } /** * @hide Loading @@ -152,11 +164,15 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { transport = CancellationSignal.createTransport(); cancellationSignalFuture.complete(transport); } OnDeviceSandboxedInferenceService.this.onTokenInfoRequest(callerUid, feature, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onTokenInfoRequest, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, CancellationSignal.fromTransport(transport), wrapTokenInfoCallback(tokenInfoCallback)); wrapTokenInfoCallback(tokenInfoCallback))); } @Override Loading @@ -178,13 +194,18 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { processingSignalTransport = ProcessingSignal.createTransport(); processingSignalFuture.complete(processingSignalTransport); } OnDeviceSandboxedInferenceService.this.onProcessRequestStreaming(callerUid, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onProcessRequestStreaming, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, requestType, CancellationSignal.fromTransport(transport), ProcessingSignal.fromTransport(processingSignalTransport), wrapStreamingResponseCallback(callback)); wrapStreamingResponseCallback(callback))); } @Override Loading @@ -205,11 +226,14 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { processingSignalTransport = ProcessingSignal.createTransport(); processingSignalFuture.complete(processingSignalTransport); } OnDeviceSandboxedInferenceService.this.onProcessRequest(callerUid, feature, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onProcessRequest, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, requestType, CancellationSignal.fromTransport(transport), ProcessingSignal.fromTransport(processingSignalTransport), wrapResponseCallback(callback)); wrapResponseCallback(callback))); } @Override Loading @@ -217,10 +241,11 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { IProcessingUpdateStatusCallback callback) { Objects.requireNonNull(processingState); Objects.requireNonNull(callback); OnDeviceSandboxedInferenceService.this.onUpdateProcessingState(processingState, wrapOutcomeReceiver(callback) ); mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onUpdateProcessingState, OnDeviceSandboxedInferenceService.this, processingState, wrapOutcomeReceiver(callback))); } }; } Loading services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java +2 −4 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ public class OnDeviceIntelligenceManagerService extends SystemService { } private void registerDeviceConfigChangeListener() { Log.e(TAG, "registerDeviceConfigChangeListener"); Log.d(TAG, "registerDeviceConfigChangeListener"); String configNamespace = getConfigNamespace(); if (configNamespace.isEmpty()) { Slog.e(TAG, "config_defaultOnDeviceIntelligenceDeviceConfigNamespace is empty"); Loading @@ -695,7 +695,7 @@ public class OnDeviceIntelligenceManagerService extends SystemService { private void sendUpdatedConfig( DeviceConfig.Properties props) { Log.e(TAG, "sendUpdatedConfig"); Log.d(TAG, "sendUpdatedConfig"); PersistableBundle persistableBundle = new PersistableBundle(); for (String key : props.getKeyset()) { Loading @@ -704,8 +704,6 @@ public class OnDeviceIntelligenceManagerService extends SystemService { Bundle bundle = new Bundle(); bundle.putParcelable(DEVICE_CONFIG_UPDATE_BUNDLE_KEY, persistableBundle); ensureRemoteInferenceServiceInitialized(); Log.e(TAG, "sendUpdatedConfig: BUNDLE: " + bundle); mRemoteInferenceService.run(service -> service.updateProcessingState(bundle, new IProcessingUpdateStatusCallback.Stub() { @Override Loading Loading
core/java/android/service/ondeviceintelligence/OnDeviceIntelligenceService.java +73 −32 Original line number Diff line number Diff line Loading @@ -18,6 +18,9 @@ package android.service.ondeviceintelligence; import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; import android.annotation.CallSuper; import android.annotation.CallbackExecutor; import android.annotation.FlaggedApi; import android.annotation.NonNull; Loading @@ -40,13 +43,16 @@ import android.content.Intent; import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; import android.os.Handler; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.RemoteCallback; import android.os.RemoteException; import android.util.Log; import android.util.Slog; import com.android.internal.infra.AndroidFuture; Loading Loading @@ -88,6 +94,14 @@ public abstract class OnDeviceIntelligenceService extends Service { private static final String TAG = OnDeviceIntelligenceService.class.getSimpleName(); private volatile IRemoteProcessingService mRemoteProcessingService; private Handler mHandler; @CallSuper @Override public void onCreate() { super.onCreate(); mHandler = new Handler(Looper.getMainLooper(), null /* callback */, true /* async */); } /** * The {@link Intent} that must be declared as handled by the service. To be supported, the Loading @@ -107,38 +121,49 @@ public abstract class OnDeviceIntelligenceService extends Service { @Override public final IBinder onBind(@NonNull Intent intent) { if (SERVICE_INTERFACE.equals(intent.getAction())) { // TODO(326052028) : Move the remote method calls to an app handler from the binder // thread. return new IOnDeviceIntelligenceService.Stub() { /** {@inheritDoc} */ @Override public void ready() { OnDeviceIntelligenceService.this.onReady(); mHandler.executeOrSendMessage( obtainMessage(OnDeviceIntelligenceService::onReady, OnDeviceIntelligenceService.this)); } @Override public void getVersion(RemoteCallback remoteCallback) { Objects.requireNonNull(remoteCallback); OnDeviceIntelligenceService.this.onGetVersion(l -> { mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetVersion, OnDeviceIntelligenceService.this, l -> { Bundle b = new Bundle(); b.putLong(OnDeviceIntelligenceManager.API_VERSION_BUNDLE_KEY, l); b.putLong( OnDeviceIntelligenceManager.API_VERSION_BUNDLE_KEY, l); remoteCallback.sendResult(b); }); })); } @Override public void listFeatures(int callerUid, IListFeaturesCallback listFeaturesCallback) { Objects.requireNonNull(listFeaturesCallback); OnDeviceIntelligenceService.this.onListFeatures(callerUid, wrapListFeaturesCallback(listFeaturesCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onListFeatures, OnDeviceIntelligenceService.this, callerUid, wrapListFeaturesCallback(listFeaturesCallback))); } @Override public void getFeature(int callerUid, int id, IFeatureCallback featureCallback) { Objects.requireNonNull(featureCallback); OnDeviceIntelligenceService.this.onGetFeature(callerUid, id, wrapFeatureCallback(featureCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetFeature, OnDeviceIntelligenceService.this, callerUid, id, wrapFeatureCallback(featureCallback))); } Loading @@ -147,9 +172,11 @@ public abstract class OnDeviceIntelligenceService extends Service { IFeatureDetailsCallback featureDetailsCallback) { Objects.requireNonNull(feature); Objects.requireNonNull(featureDetailsCallback); OnDeviceIntelligenceService.this.onGetFeatureDetails(callerUid, feature, wrapFeatureDetailsCallback(featureDetailsCallback)); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetFeatureDetails, OnDeviceIntelligenceService.this, callerUid, feature, wrapFeatureDetailsCallback(featureDetailsCallback))); } @Override Loading @@ -163,10 +190,13 @@ public abstract class OnDeviceIntelligenceService extends Service { transport = CancellationSignal.createTransport(); cancellationSignalFuture.complete(transport); } OnDeviceIntelligenceService.this.onDownloadFeature(callerUid, mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onDownloadFeature, OnDeviceIntelligenceService.this, callerUid, feature, CancellationSignal.fromTransport(transport), wrapDownloadCallback(downloadCallback)); wrapDownloadCallback(downloadCallback))); } @Override Loading @@ -174,9 +204,11 @@ public abstract class OnDeviceIntelligenceService extends Service { AndroidFuture<ParcelFileDescriptor> future) { Objects.requireNonNull(fileName); Objects.requireNonNull(future); OnDeviceIntelligenceService.this.onGetReadOnlyFileDescriptor(fileName, future); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetReadOnlyFileDescriptor, OnDeviceIntelligenceService.this, fileName, future)); } @Override Loading @@ -184,13 +216,15 @@ public abstract class OnDeviceIntelligenceService extends Service { Feature feature, RemoteCallback remoteCallback) { Objects.requireNonNull(feature); Objects.requireNonNull(remoteCallback); OnDeviceIntelligenceService.this.onGetReadOnlyFeatureFileDescriptorMap( feature, parcelFileDescriptorMap -> { mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onGetReadOnlyFeatureFileDescriptorMap, OnDeviceIntelligenceService.this, feature, parcelFileDescriptorMap -> { Bundle bundle = new Bundle(); parcelFileDescriptorMap.forEach(bundle::putParcelable); remoteCallback.sendResult(bundle); }); })); } @Override Loading @@ -201,12 +235,18 @@ public abstract class OnDeviceIntelligenceService extends Service { @Override public void notifyInferenceServiceConnected() { OnDeviceIntelligenceService.this.onInferenceServiceConnected(); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onInferenceServiceConnected, OnDeviceIntelligenceService.this)); } @Override public void notifyInferenceServiceDisconnected() { OnDeviceIntelligenceService.this.onInferenceServiceDisconnected(); mHandler.executeOrSendMessage( obtainMessage( OnDeviceIntelligenceService::onInferenceServiceDisconnected, OnDeviceIntelligenceService.this)); } }; } Loading @@ -222,7 +262,8 @@ public abstract class OnDeviceIntelligenceService extends Service { * @hide */ @TestApi public void onReady() {} public void onReady() { } /** Loading
core/java/android/service/ondeviceintelligence/OnDeviceSandboxedInferenceService.java +46 −21 Original line number Diff line number Diff line Loading @@ -19,7 +19,10 @@ package android.service.ondeviceintelligence; import static android.app.ondeviceintelligence.OnDeviceIntelligenceManager.AUGMENT_REQUEST_CONTENT_BUNDLE_KEY; import static android.app.ondeviceintelligence.flags.Flags.FLAG_ENABLE_ON_DEVICE_INTELLIGENCE; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; import android.annotation.CallbackExecutor; import android.annotation.CallSuper; import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; Loading Loading @@ -48,6 +51,7 @@ import android.os.Handler; import android.os.HandlerExecutor; import android.os.IBinder; import android.os.ICancellationSignal; import android.os.Looper; import android.os.OutcomeReceiver; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; Loading Loading @@ -126,6 +130,14 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { public static final String DEVICE_CONFIG_UPDATE_BUNDLE_KEY = "device_config_update"; private IRemoteStorageService mRemoteStorageService; private Handler mHandler; @CallSuper @Override public void onCreate() { super.onCreate(); mHandler = new Handler(Looper.getMainLooper(), null /* callback */, true /* async */); } /** * @hide Loading @@ -152,11 +164,15 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { transport = CancellationSignal.createTransport(); cancellationSignalFuture.complete(transport); } OnDeviceSandboxedInferenceService.this.onTokenInfoRequest(callerUid, feature, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onTokenInfoRequest, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, CancellationSignal.fromTransport(transport), wrapTokenInfoCallback(tokenInfoCallback)); wrapTokenInfoCallback(tokenInfoCallback))); } @Override Loading @@ -178,13 +194,18 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { processingSignalTransport = ProcessingSignal.createTransport(); processingSignalFuture.complete(processingSignalTransport); } OnDeviceSandboxedInferenceService.this.onProcessRequestStreaming(callerUid, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onProcessRequestStreaming, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, requestType, CancellationSignal.fromTransport(transport), ProcessingSignal.fromTransport(processingSignalTransport), wrapStreamingResponseCallback(callback)); wrapStreamingResponseCallback(callback))); } @Override Loading @@ -205,11 +226,14 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { processingSignalTransport = ProcessingSignal.createTransport(); processingSignalFuture.complete(processingSignalTransport); } OnDeviceSandboxedInferenceService.this.onProcessRequest(callerUid, feature, mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onProcessRequest, OnDeviceSandboxedInferenceService.this, callerUid, feature, request, requestType, CancellationSignal.fromTransport(transport), ProcessingSignal.fromTransport(processingSignalTransport), wrapResponseCallback(callback)); wrapResponseCallback(callback))); } @Override Loading @@ -217,10 +241,11 @@ public abstract class OnDeviceSandboxedInferenceService extends Service { IProcessingUpdateStatusCallback callback) { Objects.requireNonNull(processingState); Objects.requireNonNull(callback); OnDeviceSandboxedInferenceService.this.onUpdateProcessingState(processingState, wrapOutcomeReceiver(callback) ); mHandler.executeOrSendMessage( obtainMessage( OnDeviceSandboxedInferenceService::onUpdateProcessingState, OnDeviceSandboxedInferenceService.this, processingState, wrapOutcomeReceiver(callback))); } }; } Loading
services/core/java/com/android/server/ondeviceintelligence/OnDeviceIntelligenceManagerService.java +2 −4 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ public class OnDeviceIntelligenceManagerService extends SystemService { } private void registerDeviceConfigChangeListener() { Log.e(TAG, "registerDeviceConfigChangeListener"); Log.d(TAG, "registerDeviceConfigChangeListener"); String configNamespace = getConfigNamespace(); if (configNamespace.isEmpty()) { Slog.e(TAG, "config_defaultOnDeviceIntelligenceDeviceConfigNamespace is empty"); Loading @@ -695,7 +695,7 @@ public class OnDeviceIntelligenceManagerService extends SystemService { private void sendUpdatedConfig( DeviceConfig.Properties props) { Log.e(TAG, "sendUpdatedConfig"); Log.d(TAG, "sendUpdatedConfig"); PersistableBundle persistableBundle = new PersistableBundle(); for (String key : props.getKeyset()) { Loading @@ -704,8 +704,6 @@ public class OnDeviceIntelligenceManagerService extends SystemService { Bundle bundle = new Bundle(); bundle.putParcelable(DEVICE_CONFIG_UPDATE_BUNDLE_KEY, persistableBundle); ensureRemoteInferenceServiceInitialized(); Log.e(TAG, "sendUpdatedConfig: BUNDLE: " + bundle); mRemoteInferenceService.run(service -> service.updateProcessingState(bundle, new IProcessingUpdateStatusCallback.Stub() { @Override Loading