diff options
-rw-r--r-- | android/src/org/rockbox/RockboxPCM.java | 16 | ||||
-rw-r--r-- | apps/misc.c | 11 |
2 files changed, 23 insertions, 4 deletions
diff --git a/android/src/org/rockbox/RockboxPCM.java b/android/src/org/rockbox/RockboxPCM.java index 7d01da6150..47bc42f976 100644 --- a/android/src/org/rockbox/RockboxPCM.java +++ b/android/src/org/rockbox/RockboxPCM.java | |||
@@ -85,9 +85,19 @@ public class RockboxPCM extends AudioTrack | |||
85 | pcmrange = getMaxVolume() - minpcmvolume; | 85 | pcmrange = getMaxVolume() - minpcmvolume; |
86 | 86 | ||
87 | setupVolumeHandler(); | 87 | setupVolumeHandler(); |
88 | postVolume(audiomanager.getStreamVolume(streamtype)); | ||
88 | } | 89 | } |
89 | 90 | ||
90 | private native void postVolumeChangedEvent(int volume); | 91 | private native void postVolumeChangedEvent(int volume); |
92 | |||
93 | private void postVolume(int volume) | ||
94 | { | ||
95 | int rbvolume = ((maxstreamvolume - volume) * -99) / | ||
96 | maxstreamvolume; | ||
97 | LOG("java:postVolumeChangedEvent, avol "+volume+" rbvol "+rbvolume); | ||
98 | postVolumeChangedEvent(rbvolume); | ||
99 | } | ||
100 | |||
91 | private void setupVolumeHandler() | 101 | private void setupVolumeHandler() |
92 | { | 102 | { |
93 | BroadcastReceiver broadcastReceiver = new BroadcastReceiver() | 103 | BroadcastReceiver broadcastReceiver = new BroadcastReceiver() |
@@ -105,9 +115,7 @@ public class RockboxPCM extends AudioTrack | |||
105 | volume != setstreamvolume && | 115 | volume != setstreamvolume && |
106 | rbservice.isRockboxRunning()) | 116 | rbservice.isRockboxRunning()) |
107 | { | 117 | { |
108 | int rbvolume = ((maxstreamvolume - volume) * -99) / | 118 | postVolume(volume); |
109 | maxstreamvolume; | ||
110 | postVolumeChangedEvent(rbvolume); | ||
111 | } | 119 | } |
112 | } | 120 | } |
113 | }; | 121 | }; |
@@ -190,6 +198,7 @@ public class RockboxPCM extends AudioTrack | |||
190 | 198 | ||
191 | private void set_volume(int volume) | 199 | private void set_volume(int volume) |
192 | { | 200 | { |
201 | LOG("java:set_volume("+volume+")"); | ||
193 | /* Rockbox 'volume' is 0..-990 deci-dB attenuation. | 202 | /* Rockbox 'volume' is 0..-990 deci-dB attenuation. |
194 | Android streams have rather low resolution volume control, | 203 | Android streams have rather low resolution volume control, |
195 | typically 8 or 15 steps. | 204 | typically 8 or 15 steps. |
@@ -209,6 +218,7 @@ public class RockboxPCM extends AudioTrack | |||
209 | 218 | ||
210 | int oldstreamvolume = audiomanager.getStreamVolume(streamtype); | 219 | int oldstreamvolume = audiomanager.getStreamVolume(streamtype); |
211 | if (streamvolume != oldstreamvolume) { | 220 | if (streamvolume != oldstreamvolume) { |
221 | LOG("java:setStreamVolume("+streamvolume+")"); | ||
212 | setstreamvolume = streamvolume; | 222 | setstreamvolume = streamvolume; |
213 | audiomanager.setStreamVolume(streamtype, streamvolume, 0); | 223 | audiomanager.setStreamVolume(streamtype, streamvolume, 0); |
214 | } | 224 | } |
diff --git a/apps/misc.c b/apps/misc.c index 0d25e2aa96..e4a5c42d0d 100644 --- a/apps/misc.c +++ b/apps/misc.c | |||
@@ -58,6 +58,8 @@ | |||
58 | #include "yesno.h" | 58 | #include "yesno.h" |
59 | #include "viewport.h" | 59 | #include "viewport.h" |
60 | 60 | ||
61 | #include "debug.h" | ||
62 | |||
61 | #if CONFIG_TUNER | 63 | #if CONFIG_TUNER |
62 | #include "radio.h" | 64 | #include "radio.h" |
63 | #endif | 65 | #endif |
@@ -632,9 +634,16 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame | |||
632 | #if (CONFIG_PLATFORM & PLATFORM_HOSTED) && defined(PLATFORM_HAS_VOLUME_CHANGE) | 634 | #if (CONFIG_PLATFORM & PLATFORM_HOSTED) && defined(PLATFORM_HAS_VOLUME_CHANGE) |
633 | case SYS_VOLUME_CHANGED: | 635 | case SYS_VOLUME_CHANGED: |
634 | { | 636 | { |
637 | static bool firstvolume = true; | ||
635 | int volume = hosted_get_volume(); | 638 | int volume = hosted_get_volume(); |
636 | if (global_settings.volume != volume) | 639 | DEBUGF("SYS_VOLUME_CHANGED: %d\n", volume); |
640 | if (global_settings.volume != volume) { | ||
637 | global_settings.volume = volume; | 641 | global_settings.volume = volume; |
642 | if (firstvolume) { | ||
643 | setvol(); | ||
644 | firstvolume = false; | ||
645 | } | ||
646 | } | ||
638 | return 0; | 647 | return 0; |
639 | } | 648 | } |
640 | #endif | 649 | #endif |