diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/drivers/Android/Fl_Android_Screen_Driver.H | 4 | ||||
| -rw-r--r-- | src/drivers/Android/Fl_Android_Screen_Driver.cxx | 41 |
2 files changed, 43 insertions, 2 deletions
diff --git a/src/drivers/Android/Fl_Android_Screen_Driver.H b/src/drivers/Android/Fl_Android_Screen_Driver.H index ad9b82d4b..d9054efa5 100644 --- a/src/drivers/Android/Fl_Android_Screen_Driver.H +++ b/src/drivers/Android/Fl_Android_Screen_Driver.H @@ -109,10 +109,10 @@ public: virtual void screen_dpi(float &h, float &v, int n=0); int screen_num_unscaled(int x, int y); virtual void screen_work_area(int &X, int &Y, int &W, int &H, int n); +#endif // --- audible output - virtual void beep(int type); + virtual void beep(int type) override; // --- global events -#endif virtual void flush() override; virtual double wait(double time_to_wait) override; #if 0 diff --git a/src/drivers/Android/Fl_Android_Screen_Driver.cxx b/src/drivers/Android/Fl_Android_Screen_Driver.cxx index e295f5a1e..060cda304 100644 --- a/src/drivers/Android/Fl_Android_Screen_Driver.cxx +++ b/src/drivers/Android/Fl_Android_Screen_Driver.cxx @@ -442,6 +442,47 @@ void Fl_Android_Screen_Driver::remove_timeout(Fl_Timeout_Handler cb, void *data) } +void Fl_Android_Screen_Driver::beep(int type) +{ + // TODO: map FLTK sounds to Android sounds at https://developer.android.com/reference/android/media/ToneGenerator + int androidSoundID = 93; // TONE_CDMA_ALERT_CALL_GUARD + switch (type) { + case FL_BEEP_DEFAULT: + case FL_BEEP_MESSAGE: + case FL_BEEP_ERROR: + case FL_BEEP_QUESTION: + case FL_BEEP_PASSWORD: + case FL_BEEP_NOTIFICATION: androidSoundID = 93; break; + } + Fl_Android_Java java; + if (java.is_attached()) { + + jclass class_tone_generator = java.env()->FindClass("android/media/ToneGenerator"); + + jmethodID toneGeneratorConstructor = java.env()->GetMethodID( + class_tone_generator, "<init>", + "(II)V"); + + jobject toneGeneratorObj = java.env()->NewObject( + class_tone_generator, toneGeneratorConstructor, + 4, // STREAM_ALARM + 100); // volume + + jmethodID method_start_tone = java.env()->GetMethodID( + class_tone_generator, + "startTone", + "(I)Z"); + + java.env()->CallBooleanMethod( + toneGeneratorObj, method_start_tone, + androidSoundID); + + java.env()->DeleteLocalRef(class_tone_generator); + java.env()->DeleteLocalRef(toneGeneratorObj); + } + +} + // // End of "$Id$". // |
