RIM API содержит JSR 135 Java Mobile Media API для обработки аудио и видео контента.
Вы исправляете беспорядок в Базе знаний BB. Единственный способ - просмотреть его, надеясь, что они больше не будут менять карту сайта.
Это Разработчики-> Ресурсы -> База знаний -> Java API и примеры -> Аудио и видео
Запись звука
В принципе, записать аудио просто:
- создать плеер с правильной кодировкой звука
- получить RecordControl
- начать запись
- остановить запись
Ссылки:
RIM 4.6.0 API ref: Пакет javax.microedition.media
How To - Запись звука на смартфоне BlackBerry
How To - Воспроизведение аудио в приложении
How To - Поддержка потокового аудио в мультимедийном приложении
How To - Указать маршрутизацию аудио пути
How To - Получить время воспроизведения мультимедиа из мультимедийного приложения
Что такое - Поддерживаемые аудиоформаты
What Is - Коды ошибок приложения мультимедиа
Образец аудиозаписи
Объявлен поток с Player, RecordControl и ресурсами:
final class VoiceNotesRecorderThread extends Thread{
private Player _player;
private RecordControl _rcontrol;
private ByteArrayOutputStream _output;
private byte _data[];
VoiceNotesRecorderThread() {}
private int getSize(){
return (_output != null ? _output.size() : 0);
}
private byte[] getVoiceNote(){
return _data;
}
}
На Thread.run () начинается аудиозапись:
public void run() {
try {
// Create a Player that captures live audio.
_player = Manager.createPlayer("capture://audio");
_player.realize();
// Get the RecordControl, set the record stream,
_rcontrol = (RecordControl)_player.getControl("RecordControl");
//Create a ByteArrayOutputStream to capture the audio stream.
_output = new ByteArrayOutputStream();
_rcontrol.setRecordStream(_output);
_rcontrol.startRecord();
_player.start();
} catch (final Exception e) {
UiApplication.getUiApplication().invokeAndWait(new Runnable() {
public void run() {
Dialog.inform(e.toString());
}
});
}
}
А на thread.stop () запись остановлена:
public void stop() {
try {
//Stop recording, capture data from the OutputStream,
//close the OutputStream and player.
_rcontrol.commit();
_data = _output.toByteArray();
_output.close();
_player.close();
} catch (Exception e) {
synchronized (UiApplication.getEventLock()) {
Dialog.inform(e.toString());
}
}
}
Обработка и выборка аудиопотока
В конце записи у вас будет выходной поток, заполненный данными в определенном аудиоформате. Таким образом, чтобы обработать или сэмплировать его, вам придется декодировать этот аудиопоток.
Говоря о обработке на лету, это будет более сложным. Вам нужно будет прочитать выходной поток во время записи без фиксации записи. Таким образом, будет решено несколько проблем:
- синхронизация доступа к выходному потоку для рекордера и сэмплера - проблема с потоками
- прочитайте правильный объем аудиоданных - углубитесь в декодирование аудиоформатов, чтобы узнать правила разметки
Также может быть полезно:
java.net: эксперименты по потоковому контенту в Java ME, Викрам Гоял