Russian Qt Forum
Ноябрь 01, 2024, 13:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как отследить подключение микрофона?  (Прочитано 5337 раз)
mezmay
Гость
« : Февраль 10, 2015, 09:45 »

Можно ли как-то отследить подключение устройства в микрофонный или линейный входы компьютера?
p.s. - в Linux
« Последнее редактирование: Февраль 10, 2015, 13:18 от mezmay » Записан
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #1 : Февраль 10, 2015, 11:41 »

На уровне ОС для отдельных типов драйверов есть какие-то сообщения о подключении устройств в эти разъёмы, но говорить об унивесальном интерфейсе к ним не приходится. В принципе, в приложении можно попробовать постоянно мониторить данные, поступающие на линейный вход/микрофон и по характеристикам получаемого сигнала пытаться сделать вывод о наличии "возбудителя", но это всё же не решение исходной задачи в "чистом виде".
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #2 : Февраль 10, 2015, 11:42 »

Придется писать самому для каждой платформы, скорее всего.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
mezmay
Гость
« Ответ #3 : Февраль 10, 2015, 12:03 »

На уровне ОС для отдельных типов драйверов есть какие-то сообщения о подключении устройств в эти разъёмы, но говорить об унивесальном интерфейсе к ним не приходится. В принципе, в приложении можно попробовать постоянно мониторить данные, поступающие на линейный вход/микрофон и по характеристикам получаемого сигнала пытаться сделать вывод о наличии "возбудителя", но это всё же не решение исходной задачи в "чистом виде".

Пока придумал вот так:
Код:
void cwin::on_timer()
{
    QList<QAudioDeviceInfo> list =
        QAudioDeviceInfo::availableDevices(QAudio::AudioInput);
    
    int n = list.size();
    if (n > m_device_count)
    {
        /* подключено новое входное устройство */
    }
    m_device_count = n;
}
Но здесь приходится крутить таймер и опрашивать доступные устройства. Некрасиво, конечно, но может и не такой уж плохой способ...
« Последнее редактирование: Февраль 10, 2015, 12:05 от mezmay » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #4 : Февраль 10, 2015, 12:08 »

Вполне годно. Улыбающийся Только если выполнение availableDevices занимает много времени, можно вынести в отдельный поток.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #5 : Февраль 10, 2015, 13:07 »

разве QAudioDeviceInfo::availableDevices не возвращает всегда одно и тоже число ? например линейный вход + микрофонный = 2
Записан
mezmay
Гость
« Ответ #6 : Февраль 10, 2015, 13:15 »

разве QAudioDeviceInfo::availableDevices не возвращает всегда одно и тоже число ? например линейный вход + микрофонный = 2
нет. Возвращает подключенные (в данном случае - входные) устройства к этим входам.

Еще идеи будут? Может системные функции Linux или alsa API ?
« Последнее редактирование: Февраль 10, 2015, 13:19 от mezmay » Записан
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #7 : Февраль 10, 2015, 14:32 »

нет. Возвращает подключенные (в данном случае - входные) устройства к этим входам.

странно, в исходниках есть пример "examples/multimedia/audioinput" - всегда возвращает одно и тоже количество устройств вне зависимости от того подключил я микрофон или нет
Записан
mezmay
Гость
« Ответ #8 : Февраль 10, 2015, 15:59 »

странно, в исходниках есть пример "examples/multimedia/audioinput" - всегда возвращает одно и тоже количество устройств вне зависимости от того подключил я микрофон или нет
Да, это у меня в семерке работало. В линуксе показывает постоянное число, так что вопрос остается открытым.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #9 : Февраль 10, 2015, 16:07 »

тогда наверно никак - если в системном журнале нет событий о втыкании микрофона, значит драйвер и не поддерживает данный функционал
Записан
mezmay
Гость
« Ответ #10 : Февраль 10, 2015, 16:54 »

тогда наверно никак - если в системном журнале нет событий о втыкании микрофона, значит драйвер и не поддерживает данный функционал
но Alsamixer реагирует на подключение микрофона/лин. входа, так что должна быть функция
Записан
qate
Супер
******
Offline Offline

Сообщений: 1176


Просмотр профиля
« Ответ #11 : Февраль 11, 2015, 12:29 »

но Alsamixer реагирует на подключение микрофона/лин. входа, так что должна быть функция

не обращал внимание - текстовый который миксер?

тут еще 2 проблемы вижу
1. не все звуковухи могут такую инфу отдавать
2. кроме алсы есть pulse - как в нем ?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 23.