Проблемы с приложением Flex (AIR) для Android Shoutcast - PullRequest
2 голосов
/ 26 марта 2011

Я пытаюсь создать приложение AIR для Android на базе проигрывателя Codebass (http://codebass.net/2010/09/01/codebass-streaming-radio-player/)

Он не предназначен для Android, и ActionScript отлично работает при запуске его на рабочем столе (и в эмуляторе flashbuilder), однако на устройстве он не воспроизводит звук. Кажется, что звук инициализируется, потому что вы можете отрегулировать громкость мультимедиа, однако поток не воспроизводится.

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

Функция загрузки потока:

public function load(source:String, restarting:Boolean = false):void {
        this.source = source;

        if (sound) {
            sound.close();
            sound = null;
        }
        songLoaded = false;
        dispatchEvent(new Event("updateDuration"));
        stop();

        if(sound) {
            sound.removeEventListener(Event.OPEN, onSoundLoaded);
            sound.removeEventListener(Event.OPEN, onRestartSoundLoaded);
            sound.removeEventListener(IOErrorEvent.IO_ERROR, onSoundLoadedError);
        }
        sound = new Sound();

        if (!restarting) {
            sound.addEventListener(Event.OPEN, onSoundLoaded, false, 0, true);
            streamRestartCount = 0;
        } else {
            sound.addEventListener(Event.OPEN, onRestartSoundLoaded, false, 0, true);
        }

        sound.addEventListener(IOErrorEvent.IO_ERROR, onSoundLoadedError, false, 0, true);

        var ur:URLRequest = new URLRequest(source);
        sound.load(ur);
    }

Функция потокового воспроизведения:

public function play():void {
        if (stopped) {
            SoundMixer.stopAll()
            soundChannel = sound.play(0);
        } else {
            SoundMixer.stopAll()
            soundChannel = sound.play(lastPosition);    
        }
        stopped = false;
        // if we've previously set a volume, use the transform again
        if (volumeTransform) {
            trace("set vol: " + volumeTransform.volume);
            soundChannel.soundTransform = volumeTransform;
        }
        heartBeat.start();
    }

Есть что-то простое, что мне не хватает? Или это безнадежно не писать код с нуля для эфира для android skd?

Ответы [ 3 ]

1 голос
/ 08 ноября 2011

У меня точно такая же проблема, и я обнаружил, что сотрудник Adobe проверил и обнаружил, что это ошибка в AIR.Это НЕ вызвано манифестом, потому что eclipse (эмулятор) также эмулирует часть манифеста.

http://forums.adobe.com/thread/841997

0 голосов
/ 11 апреля 2011

с момента первого выпуска air2 для android этот тег manifestAddition немного изменился.
поэтому вы должны написать это в виде

<?xml version="1.0" encoding="UTF-8"?>
<application xmlns="http://ns.adobe.com/air/application/2.5">
    <id>...</id>
    <filename>...</filename>
    <name>...</name>
    <versionNumber>v...</versionNumber>
    <initialWindow>
        <content></content>
        <visible>true</visible>
        <fullScreen>...</fullScreen>
        <autoOrients>true</autoOrients>
        <width>480</width>
        <height>800</height>
    </initialWindow>
    <!--choose the appropriates separated by space-->
    <supportedProfiles>mobileDevice desktop</supportedProfiles>
    <android>
        <manifestAdditions>
            <![CDATA[
                <manifest android:installLocation='auto'>
                    <uses-permission android:name="android.permission.INTERNET" />
                    <!--for playing sounds you don't need special permissions-->
                    <supports-screens android:normalScreens="true"/>
                    <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
                    <application android:enabled="true">
                        <activity>...</activity>
                    </application>
                </manifest>
           ]]>
        </manifestAdditions>
    </android>

    <icon>
        <image48x48>icon48x48.png</image48x48>
        <image72x72>icon72x72.png</image72x72>
    </icon>
</application>

Подробнее об этом можно прочитать в блоге corlan: О приложениях AIR и разрешениях для Android
узнайте больше о текущей версии 2.6 на официальном сайте: Adobe AIR

0 голосов
/ 26 марта 2011

Этот код должен работать. По всей вероятности, вам не хватает необходимых разрешений в манифесте для Android. Когда вы устанавливаете приложение, оно должно спросить вас, хотите ли вы установить, и дать вам список того, что делает приложение. Надо сказать «подключиться к интернету». Если этого нет, ты не уйдешь далеко.

Чтобы это работало, откройте файл манифеста и включите в него:

<android>
    <manifestAdditions>
        <manifest>
            <data>
                <![CDATA[
                    <uses-permission android:name="android.permission.INTERNET" />
                ]]>
            </data>
        </manifest>
    </manifestAdditions>
</android>

Это даст вам доступ к Интернету. Если проблема не устранена, попробуйте отладить приложение, как указано в моем блоге .

...