2

Codebass プレーヤー (http://codebass.net/2010/09/01/codebass-streaming-radio-player/) に基づいて Android AIR アプリを構築しようとしています。

これは Android 向けではなく、アクション スクリプトはデスクトップ (および 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 のコードをゼロから空気のために書かないのは絶望的ですか?

4

3 に答える 3

1

私はまったく同じ問題を抱えており、アドビの従業員がチェックして、AIR のバグであると判断したことがわかりました。Eclipse(エミュレーター)もマニフェスト部分をエミュレートするため、マニフェストが原因ではありません。

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

于 2011-11-08T01:23:36.350 に答える
0

そのコードは機能するはずです。おそらく、Androidのマニフェストに必要な権限がありません。アプリケーションをインストールすると、インストールするかどうかを尋ねられ、アプリケーションが実行することのリストが表示されます。「インターネットに接続する」と表示されます。それがなければ、あなたは遠くに行かないでしょう。

これを機能させるには、マニフェストファイルを開き、これを含めます。

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

これにより、インターネットにアクセスできるようになります。それでも問題が解決しない場合は、私のブログ投稿に記載されているように、アプリケーションのデバッグを試みる必要があります。

于 2011-03-26T00:14:12.347 に答える
0

android 用の air2 の最初のリリース以来、この 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 のブログをご覧ください: About AIR Applications and Android Permissions
現在の 2.6 エア リリースの詳細については、公式サイト: Adob​​e AIRをご覧ください。

于 2011-04-11T14:36:21.727 に答える