Простая запись Wave файлов.

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Простая запись Wave файлов.

Сообщение Nachinka » 16 мар 2014, 16:14

Всем приветов!

Решил отложить пока все, что делал раньше, и заняться звуком)

Хочу написать простенькое приложение:

Нажимаешь на кнопочку - пошла запись с микрофона.Нажимаешь на вторую кнопочку - запись остановилась.

В принципе я бы давно сделал это с помощью МедиаРекордер , но он не поддерживает wave формат(насколько я знаю).Придется обойтись Аудиорекордером..

Накидал что-то несвязное:
[syntax=java]package com.example.soundwrite;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

Button start;
Button stop;
TextView out;
final String TAG = "Log";
AudioRecord audioRecord;
boolean record = true;
int myBufferSize = 8192;
String fileName = "C:\\test\\test.wave";
File file;
FileOutputStream fos = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

start = (Button) findViewById(R.id.StartB);
stop = (Button) findViewById(R.id.StopB);
out = (TextView) findViewById(R.id.textOut);

createAudioRecorder();

start.setOnClickListener(this);
stop.setOnClickListener(this);

file = new File(fileName);
}

private void createAudioRecorder() {

int sampleRate = 16000;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

int minInternalBufferSize = AudioRecord.getMinBufferSize(sampleRate,
channelConfig, audioFormat);
int internalBufferSize = minInternalBufferSize * 4;
Log.d(TAG, "minInternalBufferSize = " + minInternalBufferSize
+ ", internalBufferSize = " + internalBufferSize
+ ", myBufferSize = " + myBufferSize);

audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
sampleRate, channelConfig, audioFormat, internalBufferSize);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartB:
record = true;
Log.d(TAG, "record start");
audioRecord.startRecording();
Log.d(TAG, "read start");

new Thread(new Runnable() {
@Override
public void run() {
if (audioRecord == null) {
return;
}
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
byte[] myBuffer = new byte[myBufferSize];
int readCount = 0;
int totalCount = 0;
while (record) {
readCount = audioRecord.read(myBuffer, 0, myBufferSize);
try {
fos.write(myBuffer);
} catch (IOException e) {
e.printStackTrace();
}
totalCount += readCount;
Log.d(TAG, "readCount = " + readCount
+ ", totalCount = " + totalCount);
}
}
}).start();

case R.id.StopB:
record = false;
Log.d(TAG, "record stop");
audioRecord.stop();
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

protected void onDestroy() {
super.onDestroy();

record = false;
if (audioRecord != null) {
audioRecord.release();
}
}
}
[/syntax]

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Простая запись Wave файлов.

Сообщение altwin » 16 мар 2014, 23:01

String fileName = "C:\\test\\test.wave";
это что за путь?
Я наверно чего -то не понял, а в чем вопрос?
И зачем вам вообще wave формат? :)
Изображение

Аватара пользователя
mdzht
Сообщения: 124
Зарегистрирован: 11 ноя 2013, 11:33
Откуда: fock it
Контактная информация:

Re: Простая запись Wave файлов.

Сообщение mdzht » 17 мар 2014, 08:35

Nachinka писал(а):Всем приветов!

Решил отложить пока все, что делал раньше, и заняться звуком)

Хочу написать простенькое приложение:

Нажимаешь на кнопочку - пошла запись с микрофона.Нажимаешь на вторую кнопочку - запись остановилась.

В принципе я бы давно сделал это с помощью МедиаРекордер , но он не поддерживает wave формат(насколько я знаю).Придется обойтись Аудиорекордером..

Накидал что-то несвязное:
[syntax=java]package com.example.soundwrite;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

Button start;
Button stop;
TextView out;
final String TAG = "Log";
AudioRecord audioRecord;
boolean record = true;
int myBufferSize = 8192;
String fileName = "C:\\test\\test.wave";
File file;
FileOutputStream fos = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

start = (Button) findViewById(R.id.StartB);
stop = (Button) findViewById(R.id.StopB);
out = (TextView) findViewById(R.id.textOut);

createAudioRecorder();

start.setOnClickListener(this);
stop.setOnClickListener(this);

file = new File(fileName);
}

private void createAudioRecorder() {

int sampleRate = 16000;
int channelConfig = AudioFormat.CHANNEL_IN_MONO;
int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

int minInternalBufferSize = AudioRecord.getMinBufferSize(sampleRate,
channelConfig, audioFormat);
int internalBufferSize = minInternalBufferSize * 4;
Log.d(TAG, "minInternalBufferSize = " + minInternalBufferSize
+ ", internalBufferSize = " + internalBufferSize
+ ", myBufferSize = " + myBufferSize);

audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
sampleRate, channelConfig, audioFormat, internalBufferSize);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartB:
record = true;
Log.d(TAG, "record start");
audioRecord.startRecording();
Log.d(TAG, "read start");

new Thread(new Runnable() {
@Override
public void run() {
if (audioRecord == null) {
return;
}
try {
fos = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
byte[] myBuffer = new byte[myBufferSize];
int readCount = 0;
int totalCount = 0;
while (record) {
readCount = audioRecord.read(myBuffer, 0, myBufferSize);
try {
fos.write(myBuffer);
} catch (IOException e) {
e.printStackTrace();
}
totalCount += readCount;
Log.d(TAG, "readCount = " + readCount
+ ", totalCount = " + totalCount);
}
}
}).start();

case R.id.StopB:
record = false;
Log.d(TAG, "record stop");
audioRecord.stop();
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

protected void onDestroy() {
super.onDestroy();

record = false;
if (audioRecord != null) {
audioRecord.release();
}
}
}
[/syntax]
БАМ!!
«Life is too short to spend rewriting code»

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 17 мар 2014, 13:48

altwin писал(а):
String fileName = "C:\\test\\test.wave";
это что за путь?
Я наверно чего -то не понял, а в чем вопрос?
И зачем вам вообще wave формат? :)
Для дальнейшей обработки) Хотя в принципе можно и не сохранять в файл , а переводить записанное в массив байтов, но что если я буду много раз записывать?)

сделал пока путь для файлов)

Вопрос в этом: Как правильно записать wav файлы на андроид)

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 17 мар 2014, 15:49

Накидал еще один прмерчик, он уже запускается, но при нажатии на кнопку старт, приложение вылетает, видимо ошибка в startRecording();

[syntax=java]
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

Button start;
Button stop;
TextView out;
final String TAG = "Log";
boolean record = true;
String fileName = "C:\\test\\music\\lala4.WAVE";
File file;
private AudioRecord recorder = null;
private static final int sample_rate = 16000;
private static final int Mono = AudioFormat.CHANNEL_IN_MONO;
private static final int encoding = AudioFormat.ENCODING_PCM_16BIT;
private static final int BufferElements2Rec = 1024;
private static final int BytesPerElement = 2;
private static Thread recordingThread = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.StartB);
stop = (Button) findViewById(R.id.StopB);
out = (TextView) findViewById(R.id.textOut);
start.setOnClickListener(this);
stop.setOnClickListener(this);
// file = new File(fileName);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartB:
Log.d(TAG, "record start");
startRecording();
case R.id.StopB:
record = false;
Log.d(TAG, "record stop");
stopRecording();
}
}

private void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sample_rate,
Mono, encoding, BufferElements2Rec * BytesPerElement);
recorder.startRecording();
record = true;
recordingThread = new Thread(new Runnable() {
public void run() {
writeAudioDataToFile();
}
}, "AudioRecorder Thread");
recordingThread.start();
}

private void stopRecording() {
if (null != recorder) {
record = false;
recorder.stop();
recorder.release();
recorder = null;
recordingThread = null;
}
}

private void writeAudioDataToFile() {
short sData[] = new short[BufferElements2Rec];

FileOutputStream os = null;
try {
os = new FileOutputStream(fileName);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (record) {
recorder.read(sData, 0, BufferElements2Rec);
try {
byte bData[] = short2byte(sData);
os.write(bData, 0, BufferElements2Rec * BytesPerElement);
} catch (IOException e) {
e.printStackTrace();
}
}

try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private byte[] short2byte(short[] sData) {
int shortArrsize = sData.length;
byte[] bytes = new byte[shortArrsize * 2];

for (int i = 0; i < shortArrsize; i++) {
bytes[i * 2] = (byte) (sData & 0x00FF);
bytes[(i * 2) + 1] = (byte) (sData >> 8);
sData = 0;
}
return bytes;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}[/syntax]

siberprogs
Сообщения: 93
Зарегистрирован: 05 мар 2014, 06:20

Re: Простая запись Wave файлов.

Сообщение siberprogs » 17 мар 2014, 17:33

altwin писал(а):
String fileName = "C:\\test\\test.wave";
это что за путь?...
:)
У вас в телефоне диск C: есть?
Linux Fedora RFRemix + Intellij Idea

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 17 мар 2014, 18:42

Так это временно написал же (если это вообще работает))

Надо делать вроде через getExternalStorageDirectory() , пока не проверял работает или нет.

siberprogs
Сообщения: 93
Зарегистрирован: 05 мар 2014, 06:20

Re: Простая запись Wave файлов.

Сообщение siberprogs » 17 мар 2014, 20:00

Nachinka писал(а):Накидал еще один прмерчик, он уже запускается, но при нажатии на кнопку старт, приложение вылетает, видимо ошибка в startRecording();
Потому наверное и выкидывает - что пытается найти диск C: а не может.
Linux Fedora RFRemix + Intellij Idea

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 17 мар 2014, 20:29

Так тоже не работает:

[syntax=java]import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

Button start;
Button stop;
TextView out;
final String TAG = "Log";
boolean record = true;
File file;
private AudioRecord recorder = null;
private static final int sample_rate = 16000;
private static final int Mono = AudioFormat.CHANNEL_IN_MONO;
private static final int encoding = AudioFormat.ENCODING_PCM_16BIT;
private static final int BufferElements2Rec = 1024;
private static final int BytesPerElement = 2;
private static Thread recordingThread = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
start = (Button) findViewById(R.id.StartB);
stop = (Button) findViewById(R.id.StopB);
out = (TextView) findViewById(R.id.textOut);
start.setOnClickListener(this);
stop.setOnClickListener(this);
// file = new File(fileName);
Log.d(TAG, Environment.getExternalStorageDirectory().getAbsolutePath());
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.StartB:
Log.d(TAG, "record start");
startRecording();
case R.id.StopB:
record = false;
Log.d(TAG, "record stop");
stopRecording();
}
}

private void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, sample_rate,
Mono, encoding, BufferElements2Rec * BytesPerElement);
recorder.startRecording();
record = true;
recordingThread = new Thread(new Runnable() {
public void run() {
writeAudioDataToFile();
}
}, "AudioRecorder Thread");
recordingThread.start();
}

private void stopRecording() {
if (null != recorder) {
record = false;
recorder.stop();
recorder.release();
recorder = null;
recordingThread = null;
}
}

private void writeAudioDataToFile() {
short sData[] = new short[BufferElements2Rec];
String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
Log.d(TAG, Environment.getExternalStorageDirectory().getAbsolutePath());
String fileName = "myFile.WAVE";
File f = new File(baseDir + File.separator + fileName);

FileOutputStream os = null;
try {
os = new FileOutputStream(f);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
while (record) {
recorder.read(sData, 0, BufferElements2Rec);
try {
byte bData[] = short2byte(sData);
os.write(bData, 0, BufferElements2Rec * BytesPerElement);
} catch (IOException e) {
e.printStackTrace();
}
}

try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}

private byte[] short2byte(short[] sData) {
int shortArrsize = sData.length;
byte[] bytes = new byte[shortArrsize * 2];

for (int i = 0; i < shortArrsize; i++) {
bytes[i * 2] = (byte) (sData & 0x00FF);
bytes[(i * 2) + 1] = (byte) (sData >> 8);
sData = 0;
}
return bytes;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}[/syntax]

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 18 мар 2014, 13:06

Кстати, правилно ли я поступаю? Что заношу информацию в файл? Она потом будет нужна для дальнейшего преобразования, так что..

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 20 мар 2014, 17:31

Всем снова привет.

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

Ибо чую я, что на эмуляторе в сд сторадж девайс просто не записать информацию.

Проект прикреплен.
Вложения
SoundWrite.rar
(1.18 МБ) 276 скачиваний

Аватара пользователя
mdzht
Сообщения: 124
Зарегистрирован: 11 ноя 2013, 11:33
Откуда: fock it
Контактная информация:

Re: Простая запись Wave файлов.

Сообщение mdzht » 20 мар 2014, 22:22

Nachinka писал(а):Всем снова привет.
Все я мучаюсь с этим записывателем WAVE файлов.
Помогите, пожалуйста, решить проблемы в коде, если они есть..
Ибо чую я, что на эмуляторе в сд сторадж девайс просто не записать информацию.
Проект прикреплен.
я думаю для запуска этого примера у тебя должен быть API >= 17
[syntax=java5]03-20 19:09:43.478: W/EGL_emulation(1254): eglSurfaceAttrib not implemented
03-20 19:09:43.578: D/OpenGLRenderer(1254): Enabling debug mode 0
03-20 19:09:45.898: D/Log(1254): record start
03-20 19:09:55.158: D/Log(1254): record stop
03-20 19:09:55.206: D/Log(1254): File SIze: 200036
03-20 19:12:54.530: D/Log(1254): record start
03-20 19:13:00.138: D/Log(1254): record stop
03-20 19:13:00.210: D/Log(1254): File SIze: 130036
[/syntax]
«Life is too short to spend rewriting code»

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 20 мар 2014, 23:29

Хм..Опять все только у меня не запускается, у меня при создании проекта вот такое окошко:

http://imgur.com/yXLO6Oo

А вот в SDK менеджере я вот такую вижу картину:

http://imgur.com/NFalmTh

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Простая запись Wave файлов.

Сообщение rezak90 » 20 мар 2014, 23:46

Nachinka писал(а):Хм..Опять все только у меня не запускается, у меня при создании проекта вот такое окошко:

http://imgur.com/yXLO6Oo
правильно, там же имя вписать надо)))
R.id.team
Политика на форуме запрещена

Аватара пользователя
mdzht
Сообщения: 124
Зарегистрирован: 11 ноя 2013, 11:33
Откуда: fock it
Контактная информация:

Re: Простая запись Wave файлов.

Сообщение mdzht » 21 мар 2014, 01:04

Nachinka писал(а):Хм..Опять все только у меня не запускается, у меня при создании проекта вот такое окошко:

http://imgur.com/yXLO6Oo

А вот в SDK менеджере я вот такую вижу картину:

http://imgur.com/NFalmTh
Открой Android Virtual Device Manager, Создай эмулятор с API ни меньше 17 ти(не поленился запустил на эмуляторе с API 16 не запускается)

P.S если код не запускается делись с ошибками, что выдает logcat

[syntax=java5]03-20 23:58:14.353: D/Log(1451): record start
03-20 23:58:14.363: E/AudioRecord(1451): Could not get audio input for record source 1
03-20 23:58:14.363: E/AudioRecord-JNI(1451): Error creating AudioRecord instance: initialization check failed.
03-20 23:58:14.363: E/AudioRecord-Java(1451): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
03-20 23:58:14.363: D/AndroidRuntime(1451): Shutting down VM
03-20 23:58:14.363: W/dalvikvm(1451): threadid=1: thread exiting with uncaught exception (group=0xb4f77288)
03-20 23:58:14.433: E/AndroidRuntime(1451): FATAL EXCEPTION: main
03-20 23:58:14.433: E/AndroidRuntime(1451): java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.media.AudioRecord.startRecording(AudioRecord.java:515)
03-20 23:58:14.433: E/AndroidRuntime(1451): at com.example.soundwrite.MainActivity.startRecording(MainActivity.java:83)
03-20 23:58:14.433: E/AndroidRuntime(1451): at com.example.soundwrite.MainActivity.onClick(MainActivity.java:67)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.view.View.performClick(View.java:4084)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.view.View$PerformClick.run(View.java:16966)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.os.Handler.handleCallback(Handler.java:615)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.os.Handler.dispatchMessage(Handler.java:92)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.os.Looper.loop(Looper.java:137)
03-20 23:58:14.433: E/AndroidRuntime(1451): at android.app.ActivityThread.main(ActivityThread.java:4745)
03-20 23:58:14.433: E/AndroidRuntime(1451): at java.lang.reflect.Method.invokeNative(Native Method)
03-20 23:58:14.433: E/AndroidRuntime(1451): at java.lang.reflect.Method.invoke(Method.java:511)
03-20 23:58:14.433: E/AndroidRuntime(1451): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
03-20 23:58:14.433: E/AndroidRuntime(1451): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-20 23:58:14.433: E/AndroidRuntime(1451): at dalvik.system.NativeStart.main(Native Method)
[/syntax]
«Life is too short to spend rewriting code»

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 21 мар 2014, 18:36

Вот на таком эмуляторе запускаю:

http://imgur.com/GsfUJ4u

Не запускается..

Прикрепил лог с ошибками.
Вложения
log.rar
(805 байт) 255 скачиваний

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Простая запись Wave файлов.

Сообщение altwin » 21 мар 2014, 18:53

Nachinka писал(а):Вот на таком эмуляторе запускаю:

http://imgur.com/GsfUJ4u

Не запускается..

Прикрепил лог с ошибками.
привыкайте архивировать в zip... в жизни программиста пригодится ;)
Изображение

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 21 мар 2014, 22:03

Спасибо! Возьму на заметку.
Вложения
log.zip
Логи ошибки
(854 байт) 248 скачиваний
SoundWrite.zip
Архив самого проекта
(1.21 МБ) 254 скачивания

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 22 мар 2014, 14:24

Нифига не пойму.. видать не поддерживает эмулятор аудиозахват..
http://imgur.com/ahsrwpO

Форумчане, хелп! Действительно эмулятор не поддерживает аудиозапись?

Nachinka
Сообщения: 26
Зарегистрирован: 20 фев 2014, 23:07

Re: Простая запись Wave файлов.

Сообщение Nachinka » 23 мар 2014, 14:50

Решил я все-таки вернутся к старому варианту, когда я записывал звук в массив байтов...В принципе файл-то не нужен.

Но что то тут не так, хотел объединить все в две кнопки(а потом и вообще в одну)

Но что то не получается, сам проект в принципе работает(вау!)), но что то не так.

Вот , кстати , и он:

Ни у кого нет мыслей по этому поводу?)

Хотя может тут ошибок то и нет... Но вот массив создается и, наверняка, завершается, до того как я нажму кнопку стоп.

Небольшие логи:

Код: Выделить всё

03-23 15:48:51.028: D/TAG(782): minInternalBufferSize = 640, internalBufferSize = 2560, myBufferSize = 8192
03-23 15:48:52.928: D/TAG(782): record start
03-23 15:48:52.928: D/TAG(782): recording...
03-23 15:48:52.948: D/TAG(782): stop recorder
03-23 15:48:52.958: D/TAG(782): record stop!
03-23 15:48:53.018: D/TAG(782): readCount = 160, totalCount = 160
03-23 15:48:53.018: D/TAG(782): lenght: 8192
03-23 15:48:53.018: D/TAG(782): data1: 0
03-23 15:48:53.028: D/TAG(782): data2: 0
03-23 15:48:54.758: D/TAG(782): stop recorder
03-23 15:48:54.758: D/TAG(782): record stop!
И почему то два раза написано стоп рекордер, хотя нажимаю то один раз...
Вложения
AudioByte.zip
(1.21 МБ) 208 скачиваний

Ответить