123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #ifndef BASE_KEY_TONE_HPP
- #define BASE_KEY_TONE_HPP
- #include "handler.hpp"
- #include "macros.h"
- #include "media/ZKMediaPlayer.h"
- #include "manager/ConfigManager.h"
- #include "stream_player.h"
- namespace base {
- class KeyTone {
- DISALLOW_COPY_AND_ASSIGN(KeyTone)
- DECLARE_INSTANCE(KeyTone)
- private:
- enum Messages {
- kClick,
- };
- public:
- static void Trigger() {
- if (!instance()->enable_) {
- return;
- }
- instance()->handler_.remove_messages(kClick);
- base::message<float> msg(kClick, instance()->click_volume_);
- instance()->handler_.send_message(msg);
- }
- static void Announce(float volume, int delayed) {
- base::message<float> msg(kClick, volume);
- instance()->handler_.send_message_delayed(msg, delayed);
- }
- static void set_enable(bool enable) {
- instance()->enable_ = enable;
- }
- static void set_volume(float volume) {
- instance()->click_volume_ = volume;
- }
- private:
- KeyTone() {
- handler_.set_message_handler(
- [](const base::message<float>* msg, const void* user_data){
- ((KeyTone*)user_data)->HandleMessage(msg);
- }, this);
- stream_player_ = new fy::StreamPlayer();
- click_volume_ = 1.0;
- stream_player_->SetVolume(click_volume_);
- enable_ = true;
- }
- ~KeyTone() {
- if (stream_player_) {
- delete stream_player_;
- }
- }
- void HandleMessage(const base::message<float>* msg) {
- stream_player_->SetVolume(msg->obj);
- stream_player_->Play(CONFIGMANAGER->getResFilePath("keytone.wav"));
- }
- private:
- base::handler<float> handler_;
- fy::StreamPlayer* stream_player_;
- bool enable_;
- float click_volume_;
- };
- } /* namespace base */
- #endif
|