2015-02-04 3 views
0

Я использую FormKeyup процедуру для включения/выключения громкости звука, как это:объем управления в Android приложений Delphi XE 7

if key = vkVolumeDown then begin 
quadrum:= 0.2; 
if MediaPlayer1.Volume - quadrum > 0 then 
    MediaPlayer1.Volume:= MediaPlayer1.Volume-quadrum; 
if MediaPlayer1.Volume - quadrum < 0 then 
    MediaPlayer1.Volume:= MediaPlayer1.Volume.Minvalue; 
snd:= false; 
end; 

Но это работает только для включения/выключения звука (плюс-минус 0,2 не работает), и я просто хочу установить

+0

Пока я не могу понять, почему это не работает, я могу видеть, что оператор проверки, если объем меньше 0, кажется немного странным. Я бы не ожидал, что компонент медиаплеера разрешит это в первую очередь - либо он поднимет исключение, либо автоматически установится в 0 (я все равно предполагаю). Я не могу себе представить, почему это позволило бы вам установить отрицательный результат, так почему бы проверить негатив? Эта проверка должна быть выполнена до первой проверки и убедиться, что она не станет отрицательной в первую очередь. Хотя я не верю, что это решило бы вашу проблему. –

ответ

2

Проблема с вашим кодом в том, что вместо двух вложенных, если вы должны использовать if if else statment. Зачем? Вторым вложенным, если статуты перепроверят MediaPlayer1.Volume - quadrum после того, как вы уже уменьшили громкость на величину quadrum. Поэтому, если MediaPlayer1.Volume был 0,4 или меньше, он мгновенно отключил звук. Особенно, если установка snd на false останавливает воспроизведение звука. Becouse эта команда будет всегда выполняться независимо от того, что.

Так вместо того, чтобы ваш код должен быть таким:

if key = vkVolumeDown then begin 
quadrum:= 0.2; 
    if MediaPlayer1.Volume - quadrum > 0 then 
    MediaPlayer1.Volume:= MediaPlayer1.Volume-quadrum 
    else 
    begin 
    MediaPlayer1.Volume:= MediaPlayer1.Volume.Minvalue; 
    snd:= false; 
    end; 
end; 
+0

Ahh да, не хватает 'else' и' begin..end' ... Напоминает мне о моих ранних днях Delphi :-) –

+0

Ну, это моя глупая ошибка недоразумения, спасибо за уведомление. В любом случае, я понимаю, что этот код является quet newbe, возможно, существуют некоторые виды методов для установки объема приложения, равного текущей системе, вместо того, чтобы ловить форму keydown? –

+0

Вы можете связать это с событием OnChange в элементе управления TTrackBar, где затем вы можете использовать его значение Position для вычисления определенного уровня мощности. Таким образом, вы получите контроль над своими пользователями, что они, вероятно, используются, поскольку это обычно используемый подход. – SilverWarior

Смежные вопросы