Поэтому я добавил фрагмент кода, найденный в проверенном ответе на вопрос «Как проверить, Микрофон Android доступен для использования?". Затем я добавил код в функцию onKeyDown() моего класса расширения GLSurfaceView, чтобы проверить, нажата ли центральная клавиша клавиатуры. В этом случае приложение проверяет, есть ли на устройстве микрофон, а затем отображает соответствующее сообщение в зависимости от доступности микрофона.
листинг кода 1: проверка наличия микрофона
public class OpenGLView extends GLSurfaceView
{
//constructors and other member functions here
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
switch(keyCode)
{
case KeyEvent.KEYCODE_DPAD_CENTER:
if(getMicrophoneAvailable(ctx))
{
Toast.makeText(Display.getInstance().getContext(), "Microphone available!", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(Display.getInstance().getContext(), "Microphone not available!", Toast.LENGTH_SHORT).show();
}
}
return super.onKeyDown(keyCode, event);
}
}
Я попробовал модифицированное приложение на эмуляторе с включенным микрофоном и без него. тост «Микрофон доступен!» единственный, кто показывает. То же самое, когда я пытаюсь использовать свое устройство Android TV. Либо код, который я получил из раздела «Как проверить, доступен ли микрофон Android для использования?» не работает должным образом, или наличие и активация микрофона на Android TV отличаются. Я надеюсь на позднее. Вот почему я здесь.
Мне интересно, как включить микрофон программно. И я думаю, что это можно сделать, потому что можно включить меню голосового помощника в верхнем левом углу телевизора, нажав центральную кнопку DPAD.

На устройстве Android TV, которое я использую, нет микрофона, но микрофон находится на пульте дистанционного управления, как показано на рисунке ниже (отверстие для микрофона в верхнем левом углу):
[img]https://i. stack.imgur.com/xhuYF.jpg[/img]
Также обратите внимание, что я загружаю микрофон для записи таким образом.
листинг кода 3: загрузка и запуск микрофона
MediaRecorder mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setOutputFile("file.3gp");
mediaRecorder.prepare();
mediaRecorder.start();
Подробнее здесь: https://stackoverflow.com/questions/726 ... roid-tv-os
Мобильная версия