as3 android在sdcard上保存远程声音 - 稍后访问?

时间:2012-08-20 07:01:37

标签: android actionscript-3 flash air audio

这段代码很酷!试试吧。它会在您的用户中创建一个名为.007的文件夹,并保存一个名为yahoo.mp3的mp3。

如果权限设置正确,它也会在Android设备上执行。

创建文件夹并保存mp3后,它将循环通过文件夹并获取文件路径和文件名。

我的问题是:如何访问它并在Android上播放声音?如果您测试它,它可以在桌面上工作但不在机器人上。有什么想法吗?

import flash.filesystem.*;
var urlString:String = "http://YourWebsite.com/YourSound.mp3";
var urlReq:URLRequest = new URLRequest(urlString);
var urlStream:URLStream = new URLStream();
var fileData:ByteArray = new ByteArray();
urlStream.addEventListener(Event.COMPLETE, loaded);
urlStream.load(urlReq);

function loaded(event:Event):void
{
    urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
    writeAirFile();
}

function writeAirFile():void
{

    var file:File = File.userDirectory.resolvePath(".007/Yahoo.mp3");
    var fileStream:FileStream = new FileStream();
    fileStream.open(file, FileMode.WRITE);
    fileStream.writeBytes(fileData, 0, fileData.length);
    fileStream.close();
    trace("The file is written.");

    var desktop:File = File.userDirectory.resolvePath(".0");
    var files:Array = desktop.getDirectoryListing();
    for (var i:uint = 0; i < files.length; i++)
    {
        trace(files[i].nativePath);// gets the path of the files
        trace(files[i].name);// gets the name


        var mySound:Sound = new Sound();
        var myChannel:SoundChannel = new SoundChannel();
        var lastPosition:Number = 0;
        mySound.load(new URLRequest(files[0].nativePath));
        myChannel = mySound.play();

    }


}

1 个答案:

答案 0 :(得分:3)

file:// &lt; ------- 答案!

知道了!访问Android手机上“sdcard”所需的文件路径必须以: file://

开头

如果您想从手机加载声音,它将如下所示。这是所需的一条重要线。我将在下面发布完整的代码。

mySound.load(new URLRequest("file://mnt/sdcard/AnyFolder/YourSound.mp3"));

由于我在上面使用了一个循环来获取特定文件夹中的所有文件,因此这是上面示例中适用于我的代码。

mySound.load(new URLRequest("file://"+files[0].nativePath));

完整代码加载并播放DROID上的声音

var mySound:Sound = new Sound();
var myChannel:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;
mySound.load(new URLRequest("file://mnt/sdcard/AnyFolder/YourSound.mp3"));
myChannel = mySound.play();

我努力寻找这个答案。我希望这有助于许多人。 如果此代码对您有所帮助,请记得+1。 :)

我喜欢StackOverflow! :)