Intereting Posts
Проект не был построен, поскольку его путь сборки является неполным Min height fill_parent и height wrap_content в ScrollView? (Или просто приложение электронной почты составляет код макета) Отсутствует ключ api_key / current с Google Services 3.0.0 и ключом API Карт в build.gradle Сбой приложения для Android (фрагмент и xml onclick) Visual Studio 2015 зависает при создании / открытии проекта Cordova Gradle застревает в «build» или «assembleDebug» при использовании 64-битной или 32-битной версии Android Studio Добавление плагинов от конкретной версии проекта Github к проекту Cordova Регистрация кнопки гарнитуры с помощью BroadcastReceiver на Android Закрытие приложения с кнопкой «Выход» Когда используется функция onActivityResult фрагмента в отношении жизненного цикла фрагментов? Маржа между элементами просмотра recycler Android Проверка сохранения состояния перед выполнением FragmentTransaction Не удалось найти конфигурацию запуска компоновщика Запись байта в файл на Java Espresso – щелкните элемент просмотра одного списка.

Android получает намерение при внедрении RecognitionListener

Как указано в этом ответе Iftah, я могу получить аудиозапись, записанную в Recognition Speech в android, получив Uri от Intent, переданного:

@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // the recording url is in getData: Uri audioUri = data.getData(); } 

Здесь Intent data имеют именно то, что я хочу без проблем.

Все это работает отлично, однако это решение дает подсказку пользователю о том, когда говорить, я не хотел, чтобы так обойти, что я позволил своей работе реализовать RecognitionListener так:

 public class MainActivity extends AppCompatActivity implements RecognitionListener { private SpeechRecognizer speech = null; private Intent recognizerIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "sv_SE"); recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_PREFERENCE, "sv_SE"); recognizerIntent.putExtra("android.speech.extra.GET_AUDIO_FORMAT", "audio/AMR"); recognizerIntent.putExtra("android.speech.extra.GET_AUDIO", true); speech = SpeechRecognizer.createSpeechRecognizer(this); speech.setRecognitionListener(this); speech.startListening(recognizerIntent); } @Override public void onReadyForSpeech(Bundle params) { Log.d("Debug", "On ready for speech"); } @Override public void onBeginningOfSpeech() { Log.d("Debug", "On beggining of speech"); } @Override public void onRmsChanged(float rmsdB) { Log.d("Debug", "Rsm changed"); } @Override public void onBufferReceived(byte[] buffer) { Log.d("Debug", "Buffer recieved"); } @Override public void onEndOfSpeech() { Log.d("Debug", "On end of speech"); } @Override public void onError(int error) { Log.d("Debug", "Error"); } @Override public void onPartialResults(Bundle partialResults) { Log.d("Debug", "On partial result"); } @Override public void onEvent(int eventType, Bundle params) { Log.d("Debug", "On event"); } @Override public void onResults(Bundle results) { Log.d("Debug", "On result"); } } 

Это оборачивается подсказкой. Я не могу понять, как получить Uri, как в первом примере, потому что здесь:

 @Override public void onResults(Bundle results) { Log.d("Debug", "On result"); // The results bundle don't contain the URI! } 

Я получаю результаты Bundle results которые не содержат Intent или Uri. Я пробовал смотреть на все ключи в комплекте, и URI или Intent не существует, я также попробовал getIntent() но ничего не возвращаю.

Я ценю любую помощь или толкаю в правильном направлении.

Solutions Collecting From Web of "Android получает намерение при внедрении RecognitionListener"

Вот аналогичный пост. Они используют startActivityForResult() вместо startListening() для получения данных. Также они отмечают, что аудиофайл имеет низкое качество.

Надеюсь, эта помощь.

Я не совсем понимаю, чего вы пытаетесь достичь. Я обнаружил, что для получения амплитуды звука мне пришлось использовать класс визуализатора, получить поток аудио в MainActivity, отправить его в класс просмотра, передать переменную в статическую глобальную переменную, полученную интерфейсом Runnable на главном. Если вы хотите что-то сделать с аудиопотоком, посмотрите на класс визуализатора. Повторно уточнить, и я могу определенно помочь вам. Приветствия.