Pregunta

¿Alguien conoce un buen repositorio para obtener código de muestra para BlackBerry?Específicamente, ¿muestras que me ayudarán a aprender la mecánica de la grabación de audio, posiblemente incluso muestreándola y procesando la señal sobre la marcha?

Me gustaría leer el audio entrante, muestra por muestra si es necesario, y luego procesarlo para producir el resultado deseado, en este caso un visualizador.

¿Fue útil?

Solución

La API de RIM contiene API de medios móviles Java JSR 135 para manejar contenido de audio y video.
Corriges sobre el desorden en BB Knowledge Base.La única forma es navegar por él, con la esperanza de que no vuelvan a cambiar el mapa del sitio.
Es Desarrolladores->Recursos->Base de conocimientos->API de Java y muestras->Audio Video

Grabación de audio

Básicamente es sencillo grabar audio:

  • crear reproductor con codificación de audio correcta
  • obtener RecordControl
  • empezar a grabar
  • para de grabar

Enlaces:
Referencia API de RIM 4.6.0:Paquete javax.microedition.media
Cómo: grabar audio en un teléfono inteligente BlackBerry
Cómo: reproducir audio en una aplicación
Cómo: admitir la transmisión de audio a la aplicación multimedia
Cómo: especificar el enrutamiento de la ruta de audio
Cómo: obtener el tiempo de reproducción multimedia desde una aplicación multimedia
Qué es: formatos de audio compatibles
Qué es: códigos de error de la aplicación multimedia

Muestra de grabación de audio

Se declara el hilo con Player, RecordControl y recursos:

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;
   }
}

En Thread.run() se inicia la grabación de audio:

   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());
            }
         });
      }
   }

Y en thread.stop() se detiene la grabación:

   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());
         }
      }
   }

Procesamiento y muestreo de flujo de audio

Al final de la grabación, tendrá un flujo de salida lleno de datos en un formato de audio específico.Entonces, para procesarlo o muestrearlo, tendrás que decodificar esta secuencia de audio.

Hablando del procesamiento sobre la marcha, será más complejo.Tendrá que leer el flujo de salida durante la grabación sin confirmar el registro.Entonces habrá varios problemas a resolver:

  • acceso sincronizado al flujo de salida para Grabador y Sampler - problema de subprocesamiento
  • lea la cantidad correcta de datos de audio: profundice en la decodificación del formato de audio para descubrir las reglas de marcado

También puede resultar útil:
java.net:Experimentos de transmisión de contenido en Java ME por Vikram Goyal

Otros consejos

Si bien no específico de audio, esta pregunta tiene algunas referencias buena "Getting Started".

escritura Blackberry Aplicaciones

Me pasé siglos tratando de resolver esto también. Una vez que haya instalado los paquetes de BlackBerry componente (disponible en desde su página web ), se puede encontrar el código de ejemplo en el interior del paquete de componente.

En mi caso, una vez que había instalado los paquetes de componente en Eclipse, me encontré con el código de ejemplo extraído en esta ubicación:

  

C: \ Program   Files \ eclipse \ eclipse3.4 \ plugins \ net.rim.eide.componentpack4.5.0_4.5.0.16 \ componentes \ samples

Por desgracia, cuando Importé todo ese código de muestra que tenía un montón de errores de compilación. Para solucionar que acaba de eliminar el 20% de los paquetes con errores de compilación.

Mi siguiente problema fue que el lanzamiento del simulador siempre puso en marcha el primer paquete de código de ejemplo (en mi caso activetextfieldsdemo), no pude conseguir que se ejecute sólo el paquete Me interesa. Solución para el que era para eliminar todos los paquetes listado alfabético antes de la que quería.

Otros aspectos críticos:
-RIGHT haga clic en el proyecto en Eclipse y seleccione Activar para BlackBerry
-Elige BlackBerry -> Construir Configuraciones ... -> Editar ... y seleccione su nuevo proyecto por lo que se acumula
. -Asegúrese de que usted pone su código fuente BlackBerry en una carpeta "src" en el proyecto Eclipse, de lo contrario podría golpear a construir cuestiones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top