Воспроизведение аудио с J2ME - PullRequest
5 голосов
/ 23 января 2009

Каков наилучший способ воспроизведения звука с использованием библиотеки J2ME Media? Например, я должен использовать MMAPI или я должен просто использовать метод platformRequest (String s) Мидлета?

Ответы [ 4 ]

7 голосов
/ 26 января 2009

Следующий код должен работать на 90-95% телефонов, поддерживающих JSR-135. Порядок всех вызовов различных методов является ключевым для того, чтобы это было переносимым. Это для звуков, локальных для вашего JAR. Любое потоковое аудио будет еще одной проблемой:)

// loads the InputStream for the sound
InputStream inputStream = this.getClass().getResourceAsStream( musicFile );

// create the standard Player
musicPlayer = Manager.createPlayer( inputStream, musicEncoding );
musicPlayer.prefetch();

// add player listener to access sound events
musicPlayer.addPlayerListener( this );

if( loopMusic )
{    
    // use the loop count method for infinite looping
    musicPlayer.setLoopCount( -1 );
}

// The set occurs twice to prevent sound spikes at the very 
// beginning of the sound.
VolumeControl volumeControl = 
   (VolumeControl) musicPlayer.getControl( "VolumeControl" );
volumeControl.setLevel( curVolume );

// finally start the piece of music
musicPlayer.start();

// set the volume once more
volumeControl = (VolumeControl) musicPlayer.getControl( "VolumeControl" );
volumeControl.setLevel( curVolume );

// finally, delete the input stream to save on resources
inputStream.close();
inputStream = null;
3 голосов
/ 26 января 2009

По лучше , что ты имеешь в виду? Высшее качество? Лучший пользовательский опыт? Наиболее соответствует стандартам?

По сути (это не лучший ответ, который я знаю), это зависит от платформы - что-то, что является знакомой темой для J2ME - поскольку реализации могут сильно различаться, а MMAPI обычно использует некоторые программные / аппаратные средства родного медиаплеера. На BlackBerry MMAPI работает отлично, с несколькими причудами.

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

0 голосов
/ 27 января 2009

Локальное аудио (в файле Jar) легче поддерживать, как объяснено в ответе Шейна выше. Для контента через Интернет это становится намного сложнее, так как многие факторы, такие как проблемы с подключением к серверу, память телефона и т. Д. Если вам потребуется поддержка большого количества мобильных телефонов, то рекомендуется использовать 2-3 метода реализации и использовать их соответствующим образом.

0 голосов
/ 26 января 2009

На некоторых устройствах использование запроса платформы приведет к закрытию приложения, а на некоторых других запросах платформы произойдет сбой устройства (что-либо, кроме URL-адресов HTTP на некоторых устройствах).

Таким образом, вам может понадобиться использовать оба подхода, выбирая, какой из них использовать на основе тестирования устройства.

...