Речь, конечно же, пойдёт не о том, что можно в приложении поймать событие нажатой клавиши и просто задать уровень звука. Дело в том, что можно работать с приложением и на фоне слушать музыку, запущенную на плеере. Или просто один раз исправить файл системны — и оно всегда будет работать. Необходимо, чтобы при нажатии на клавиши регулировки уровня звука на устройстве, менялся системный уровень звука (ну там, выпрыгивал регулятор громкости и т.д.; ну, вы меня поняли).
На момент написания статьи на русскоязычных сайтах ничего не было. Нашёл только на каком-то отдалённом заморском форуме, и то прописано было не полностью, пришлось самому доводить до ума.
Итак, приступим.
Необходимо зайти в папочку, где установлен Qt. Вот тут внимательно: не SDK, не где складируются откомпиленые проги, а именно сам Qt.
Там заходим в папочку 5.Х.Х (Где Х — это номер версии, у меня 5.2.1). Здесь заходим в папку где указано имя собирателя, которым вы пользуетесь для Android (у меня это android_armv7), а далее проходим следующий путь вложенных папок: \src\android\java\src\org\qtproject\qt5\android\bindings\
Вот мы и на месте. В папке открываем на редактирование файл QtActivity.java.
После строки:
Примерно 36-я строка, вставляем следующий код:
После строки:
Примерно 62-я строка, вставляем следующий код:
Далее, где объявляются разные объекты (я это сделал в 112 строке), необходимо вставить следующий код:
И напоследок, находите в коде функцию onKeyDown и в её начале вставляете код:
Это, по моему, единственный кусок, взятый из статьи на форуме.
В общем итоге функция будет иметь следующий вид:
Ну, вот и все. Теперь пересоберите свои проекты для Android и радуйтесь отображению диалога уровня звука при его регулировке.
На всякий случай привожу ссылку на форум, где это было найдено. Всё работает, проверено.
На момент написания статьи на русскоязычных сайтах ничего не было. Нашёл только на каком-то отдалённом заморском форуме, и то прописано было не полностью, пришлось самому доводить до ума.
Итак, приступим.
Необходимо зайти в папочку, где установлен Qt. Вот тут внимательно: не SDK, не где складируются откомпиленые проги, а именно сам Qt.
Там заходим в папочку 5.Х.Х (Где Х — это номер версии, у меня 5.2.1). Здесь заходим в папку где указано имя собирателя, которым вы пользуетесь для Android (у меня это android_armv7), а далее проходим следующий путь вложенных папок: \src\android\java\src\org\qtproject\qt5\android\bindings\
Вот мы и на месте. В папке открываем на редактирование файл QtActivity.java.
После строки:
import java.io.DataInputStream;
Примерно 36-я строка, вставляем следующий код:
import java.lang.Object;
После строки:
import android.graphics.Canvas;
Примерно 62-я строка, вставляем следующий код:
import android.media.AudioManager;
Далее, где объявляются разные объекты (я это сделал в 112 строке), необходимо вставить следующий код:
private AudioManager audio;
И напоследок, находите в коде функцию onKeyDown и в её начале вставляете код:
switch (keyCode)
{
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
return true;
}
Это, по моему, единственный кусок, взятый из статьи на форуме.
В общем итоге функция будет иметь следующий вид:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch (keyCode)
{
case KeyEvent.KEYCODE_VOLUME_UP:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
audio.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
return true;
}
if (QtApplication.m_delegateObject != null && QtApplication.onKeyDown != null)
return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyDown, keyCode, event);
else
return super.onKeyDown(keyCode, event);
}
Ну, вот и все. Теперь пересоберите свои проекты для Android и радуйтесь отображению диалога уровня звука при его регулировке.
На всякий случай привожу ссылку на форум, где это было найдено. Всё работает, проверено.