diff options
| -rw-r--r-- | services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java index ddd1f7568224..d14ed5a15cf9 100644 --- a/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java +++ b/services/profcollect/src/com/android/server/profcollect/ProfcollectForwardingService.java @@ -29,6 +29,8 @@ import android.os.Looper; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemProperties; +import android.os.UpdateEngine; +import android.os.UpdateEngineCallback; import android.util.Log; import com.android.server.IoThread; @@ -198,6 +200,7 @@ public final class ProfcollectForwardingService extends SystemService { // Event observers private void registerObservers() { registerAppLaunchObserver(); + registerOTAObserver(); } private final AppLaunchObserver mAppLaunchObserver = new AppLaunchObserver(); @@ -261,4 +264,33 @@ public final class ProfcollectForwardingService extends SystemService { // Ignored } } + + private void registerOTAObserver() { + UpdateEngine updateEngine = new UpdateEngine(); + updateEngine.bind(new UpdateEngineCallback() { + @Override + public void onStatusUpdate(int status, float percent) { + if (status == UpdateEngine.UpdateStatusConstants.UPDATED_NEED_REBOOT) { + packProfileReport(); + } + } + + @Override + public void onPayloadApplicationComplete(int errorCode) { + // Ignored + } + }); + } + + private void packProfileReport() { + if (mIProfcollect == null) { + return; + } + + try { + mIProfcollect.CreateProfileReport(); + } catch (RemoteException e) { + Log.e(LOG_TAG, e.getMessage()); + } + } } |