/* * Copyright 2015, 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. */ #ifndef MEDIA_BATTERY_NOTIFIER_H #define MEDIA_BATTERY_NOTIFIER_H #include <binder/IBatteryStats.h> #include <utils/Singleton.h> #include <utils/String8.h> #include <map> #include <utility> namespace android { /** * Class used for logging battery life events in mediaserver. */ class BatteryNotifier : public Singleton<BatteryNotifier> { friend class Singleton<BatteryNotifier>; BatteryNotifier(); public: ~BatteryNotifier(); void noteStartVideo(uid_t uid); void noteStopVideo(uid_t uid); void noteResetVideo(); void noteStartAudio(uid_t uid); void noteStopAudio(uid_t uid); void noteResetAudio(); void noteFlashlightOn(const String8& id, uid_t uid); void noteFlashlightOff(const String8& id, uid_t uid); void noteResetFlashlight(); void noteStartCamera(const String8& id, uid_t uid); void noteStopCamera(const String8& id, uid_t uid); void noteResetCamera(); private: void onBatteryStatServiceDied(); class DeathNotifier : public IBinder::DeathRecipient { virtual void binderDied(const wp<IBinder>& /*who*/); }; Mutex mLock; std::map<uid_t, int> mVideoRefCounts; std::map<uid_t, int> mAudioRefCounts; std::map<std::pair<String8, uid_t>, bool> mFlashlightState; std::map<std::pair<String8, uid_t>, bool> mCameraState; sp<IBatteryStats> mBatteryStatService; sp<DeathNotifier> mDeathNotifier; sp<IBatteryStats> getBatteryService_l(); }; } // namespace android #endif // MEDIA_BATTERY_NOTIFIER_H