2011-03-25 72 views
2

我试图构建一个基于Codebass播放器的Android AIR应用程序(http://codebass.net/2010/09/01/codebass-streaming-radio-player/ )Flex(AIR)Android Shoutcast应用程序问题

这不是为了android而设计的,当在桌面上(和flashbuilder模拟器中)运行它时,actionscript工作的很好,但是在设备上它不会播放声音。它似乎是初始化声音,因为您可以调整媒体音量,但流拒绝播放。

我不确定它是否加载了流或与它有问题的播放。

流读取功能:

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的空白代码?

回答

0

该代码应该工作。很可能,您在Android的清单中缺少必需的权限。当你安装应用程序时,它应该问你是否要安装并给你一个应用程序所做的事情列表。它应该说'连接到互联网'。如果那不在那里,你不会走得太远。

对于这项工作,打开清单文件,其中包括这它:

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

这会给你访问互联网。如果您仍然遇到问题,请尝试登录debug the application as mentioned in my blog post

+0

清单许可是存在的,我也不在办公室有wifi。我会在今晚尝试家中的调试器。 – Rick 2011-03-26 02:08:45

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空气释放:Adobe AIR