2013-01-29 1 views
1

Я построил sox для Android, и я использую сгенерированные двоичные файлы, то есть sox, rec, play and soxi, сгенерированные непосредственно в моем приложении, путем установки их как двоичных файлов в моем приложении.Как получить скрипт SOX для работы на Android?

Я могу вызвать команды, используя sox непосредственно, однако у меня есть проблема с вызовом команды rec.

Я использовал следующую команду: rec -r 8000 -c 2 output.wav Но это не говорит, что sox is not found или sox is expected but is not found.

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

Пожалуйста, обратите внимание, что я могу использовать операцию, связанную с sox двоичными успешно, но я не могу использовать команды, связанные с rec двоичным.

Первоначально я думал, что проблема может быть из-за разрешений, наложенных Android, поэтому я включил эти разрешения в manifest.xml, но безрезультатно.

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.RECORD_AUDIO"/> 

Я сделал некоторые исследования и получил эту link, говорится в разделе Использование Sox для воспроизведения и записи, что там могут быть некоторые системы Linux, которые не принимают rec команду непосредственно.

Я последовал его предложению и добавил свои команды с padsp и т. Д., Но он все еще не работает.

Так что мой вопрос в том, как я могу успешно вызвать команду rec в системе Android, кто-нибудь пробовал это раньше?

+0

Не могли бы вы поделиться тем, как вы сгенерировали двоичные файлы для Android, я пытаюсь сделать то же самое без успеха. Спасибо –

+0

@InonStelman и Arif Nadeem, можете ли вы поделиться мной с процессом получения двоичных файлов sox в android? – AQU

ответ

1

rec, play, soxi являются символическими ссылками на двоичный код sox. (В качестве альтернативы, на платформах, которые не поддерживают символические ссылки, все они идентичны копиям одного и того же двоичного файла.) SoX имеет другое поведение по умолчанию в зависимости от имени, по которому оно вызывается.

Кажется, что что-то не так с символическими ссылками на вашем устройстве. Возможно, они указывают на неправильный путь? Попробуйте, если вы можете это исправить.

Другой вариант - использовать двоичный код sox для всех задач. rec -r 8000 -c 2 output.wav на самом деле то же самое, что и sox -d -r 8000 -c 2 output.wav (-d - это звуковое устройство по умолчанию). Для воспроизведения аналогичным образом play somefile - это то же самое, что и sox somefile -d.

+0

Я думаю, что, возможно, rec, play и soxi являются sh-файлами, которые можно запустить как скрипты. –

+0

В действительности сценарий оболочки не задействован. Попробуйте 'ls -l/usr/bin/rec', чтобы увидеть, что это просто символическая ссылка. _If_ это сценарии оболочки в вашей установке, это модифицированная версия. – chirlu