Вопрос

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

Я хотел бы прочитать входящий звук, образец за образцом, если это необходимо, а затем обработать его для получения желаемого результата, в данном случае визуализатора.

Это было полезно?

Решение

API RIM содержит JSR 135 Java API для мобильных медиа для обработки аудио и видео контента.
Вы поправляете беспорядок в базе знаний BB.Единственный способ — просмотреть его, надеясь, что они больше не будут менять карту сайта.
Его Разработчики->Ресурсы->База знаний->Java API и образцы->Аудио видео

Аудио запись

По сути, записать звук просто:

  • создать проигрыватель с правильной кодировкой звука
  • получить RecordControl
  • начать запись
  • остановить запись

Ссылки:
Ссылка на API RIM 4.6.0:Пакет javax.microedition.media
Как записать звук на смартфоне BlackBerry
Как воспроизвести аудио в приложении
Как — поддержка потоковой передачи звука в мультимедийное приложение
Как указать маршрутизацию аудиотракта
Как — получить время воспроизведения мультимедиа из медиа-приложения
Что такое — поддерживаемые аудиоформаты
Что такое — коды ошибок мультимедийных приложений

Образец аудиозаписи

Объявлен поток с 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());
         }
      }
   }

Обработка и дискретизация аудиопотока

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

Если говорить об обработке «на лету», то это будет сложнее.Вам придется читать выходной поток во время записи без фиксации записи.Итак, предстоит решить несколько задач:

  • синхронизировать доступ к выходному потоку для Recorder и Sampler — проблема с потоками
  • прочитайте правильный объем аудиоданных — углубитесь в декодирование аудиоформата, чтобы узнать правила разметки

Также может быть полезно:
Java.net:Эксперименты по потоковой передаче контента в Java ME, Викрам Гоял

Другие советы

Хотя этот вопрос не специфичен для аудио, он содержит несколько хороших ссылок для начала работы.

Написание приложений для Blackberry

Я тоже потратил много времени, пытаясь понять это.После установки пакетов компонентов BlackBerry (доступны с их сайта), вы можете найти пример кода внутри пакета компонентов.

В моем случае после установки пакетов компонентов в Eclipse я нашел извлеченный пример кода в этом месте:

C: Program Files Eclipse eclipse3.4 plugins net.rim.eide.componentpack4.5.0_4.5.0.16 Components Образцы

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

Моя следующая проблема заключалась в том, что при запуске симулятора всегда запускался первый пример пакета кода (в моем случае activetextfieldsdemo), я не мог заставить его запустить только интересующий меня пакет.Обходной путь — удалить все пакеты, перечисленные в алфавитном порядке перед тем, который мне нужен.

Другие ошибки:
- Щелкните правой кнопкой мыши проект в Eclipse и выберите «Активировать для BlackBerry».
-Выберите BlackBerry -> Конфигурации сборки...-> Редактировать...и выберите новый проект, чтобы он был построен.
-Убедитесь, что вы поместили исходный код BlackBerry в папку «src» проекта Eclipse, иначе у вас могут возникнуть проблемы со сборкой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top