blob: 0572fa670d77152be8b69d2ce21387242aca7180 [file] [log] [blame]
/*
* Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package android.perfetto.producer;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
public class ProducerActivity extends Activity {
@Override
public void onResume() {
super.onResume();
NotificationManager manager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel serviceChannel =
new NotificationChannel("service", "service", NotificationManager.IMPORTANCE_LOW);
serviceChannel.setDescription("Perfetto service");
serviceChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
manager.createNotificationChannel(serviceChannel);
NotificationChannel isolatedChannel = new NotificationChannel(
"isolated_service", "isolated_service", NotificationManager.IMPORTANCE_LOW);
isolatedChannel.setDescription("Perfetto isolated service");
isolatedChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
manager.createNotificationChannel(isolatedChannel);
startForegroundService(new Intent(ProducerActivity.this, ProducerService.class));
// isolated services cannot be foreground
startService(new Intent(ProducerActivity.this, ProducerIsolatedService.class));
System.loadLibrary("perfettocts_jni");
// We make sure at the C++ level that we don't setup multiple producers in the same
// process.
new Thread(new Runnable() {
public void run() {
try {
setupProducer();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}).start();
}
@Override
public void onDestroy() {
super.onDestroy();
quitTaskRunner();
}
private static native void setupProducer();
private static native void quitTaskRunner();
}