Я пытаюсь получить аудиоданные с микрофона. Я добился этого с помощью класса AudioRecord
, который заполняет буфер с типом шорт.
В конце концов я хотел бы построить график этого буфера, чтобы получить осциллографическое отображение (информацию в реальном времени). Проблема в том, что если я хочу отобразить значение (скажем, в тексте), мне нужен другой поток для обновления пользовательского интерфейса. В настоящее время я делаю это с помощью AsyncTask
и обновляю пользовательский интерфейс с AsyncTasks.publishProgress()
. Пока что я не очень успешен и хотел бы знать, нахожусь ли я на правильном пути? Ручки - лучший способ пойти? Есть ли кто-нибудь, кто делал что-то подобное раньше, и если да, то какой метод работал для вас? Кроме того, возможно ли вообще просто опросить микрофон?
Вот мой код. Он предназначен для вывода каждого образца чтения из MIC. Похоже, что делать это с приемлемой скоростью, но иногда показывает ноль. Почему?
* * 1010
А вот и main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
>
<TextView android:id="@+id/percent_field"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"/>
</LinearLayout>
Обратите внимание, что вам нужно добавить это в AndroidManifest.xml
<uses-permission android:name="android.permission.RECORD_AUDIO" />
Я использую LG Optimus Black. Пожалуйста, помогите мне сделать этот код максимально эффективным.