summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2018-06-21 12:36:02 +0000
committerMatthias Melcher <fltk@matthiasm.com>2018-06-21 12:36:02 +0000
commit4ba6b96471b23008a2d4b6e0dff8fd9f194fb444 (patch)
tree0b37815f18b176521b66c26bf3809190b10b43de /src/drivers
parenta119928455eaa84e87784e34b7b88935fecea4a2 (diff)
Android: Teaching FLTK to beep. test/button works.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12955 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/Android/Fl_Android_Screen_Driver.H4
-rw-r--r--src/drivers/Android/Fl_Android_Screen_Driver.cxx41
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$".
//