Проигрывание звука и проблема мерцания анимации смахивания вперед в andg phonegap и jqtouch? - PullRequest
0 голосов
/ 03 ноября 2010

Я занимаюсь разработкой приложения, используя телефонный разрыв для Android. Он состоит из около 25 изображений и аналогичного количества mp3-файлов. Каждый mp3-файл имеет длительность не более 10 секунд. Требование приложения - всякий раз, когда изображение показывается на экране, должен воспроизводиться связанный с ним mp3-файл. Я использую jqtouch swipe для перехода с одной страницы на другую. Я сталкиваюсь со следующими проблемами как на эмуляторе, так и на реальном устройстве (Samsung Galaxy 3) -

  1. После 15-20 изображений звук перестает воспроизводиться как на эмуляторе, так и на galaxy 3. В logcat я получил следующую ошибку

    ОШИБКА / AudioFlinger (34): недостаточно памяти для размера AudioTrack = 49216

Я использую следующий код для воспроизведения mp3 файлов

if(mp3file!=null){
            mp3file.stop();

            mp3file = null;
        }

        mp3file = new Media("/android_asset/www/name_of_file.mp3",
            function() {
                console.log("playAudio():Audio Success");
            },
                function(err) {

            },
                function(status) {
                               });
          mp3file.play();

Я думаю, что ошибка связана с тем, что объекты audiomanager из api phonegap каждого mp3-файла остаются в памяти. Я хочу знать, как уничтожить медиа-объект, созданный в JavaScript. Вы можете играть, остановиться, остановиться. Но есть ли в phonegap какой-нибудь метод для Android, чтобы уничтожить его, чтобы он не оставался в памяти после завершения воспроизведения.

  1. Другая проблема, с которой я сталкиваюсь, связана с действием пролистывания влево в jqtouch для просмотра следующего изображения. Если я в настоящее время просматриваю изображение 1 и пытаюсь просмотреть изображение 2 с помощью действия, проведенного по левому краю, изображение 2 отображается в течение короткого промежутка времени, и после этого изображение 1 отображается в течение некоторого времени, а после этого снова отображается изображение 2. Короче говоря переход от image1 к image2 не является гладким и имеет мерцающие эффекты. Однако, если я перейду с image2 на image1 с помощью правого смахивания, переход будет плавным.

Спасибо

1 Ответ

0 голосов
/ 22 декабря 2010

Я получил некоторую помощь по этому поводу от другого разработчика. Хитрость заключается в том, чтобы заставить функцию объявлять mp3file вне функции, а затем вызвать stopRecord () для нее. (Даже если вы не делаете запись). Я проверил это с помощью простогоКнопка проигрывает звук снова и снова, и он работал 75 раз, прежде чем я устал играть с ним.

Дайте мне знать, что он работает для вас.

var mp3file;
function playAudio(){


if(mp3file!=null){
            mp3file.stop();
            mp3file.stopRecord();
            mp3file=null;

        }

       mp3file = new Media("/android_asset/www/yourmp3.mp3",
            function() {
                console.log("playAudio():Audio Success");
            },
                function(err) {

            },
                function(status) {
                               });
          mp3file.play();



}
...