将编码的.mp3保存到applicationStorageDirectory Adob​​e Air iOS

时间:2012-01-04 17:17:02

标签: ios flash actionscript-3 actionscript air

我正在使用Flash CS5.5 AIR v.3.1

开发iOS iPad应用程序

我正在使用ShineMp3Encoder将Wav编码为Mp3: https://github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy

基本上它在代码中将byteArray(wav)转换为byteArray(mp3)或“mp3encoder.mp3Data”。

使用(new FileReference())保存它没有问题.save(mp3Data,filename);但由于这是在iOS AIR应用程序中使用,我想切换到使用File.applicationStorageDirectory,以便我可以将保存的mp3放入其自己的文件夹中以保持井井有条。当我运行代码时,它会执行所有步骤,将wav转换为mp3,然后说它保存但没有错误。声音存储在内存中,因为它可以播放直到应用程序关闭。我已将resolvePath更改为根文件夹myApp /和/ sounds - 这些都不起作用。我之前从未尝试过这样做,所以我有点迷失为什么没有创建文件。任何有任何建议的人都会有很多帮助。

function onEncoded(e:Event):void{
    myTI.text = "Mp3 encoded and saved. Press Play.";
    mp3encoder.mp3Data.position = 0;
    var myDate:Date = new Date();
    var theDate:String = myDate.monthUTC.toString() + myDate.dayUTC.toString() 
        + myDate.hoursUTC.toString() + myDate.minutesUTC.toString() 
        + myDate.secondsUTC.toString();

    var file:File = File.applicationStorageDirectory.resolvePath("myApp/sounds/myVoice+"+theDate+".mp3");
    var fileStream:FileStream = new FileStream;
    fileStream.open(file,FileMode.UPDATE);
    fileStream.writeBytes(mp3encoder.mp3Data);
    fileStream.close();
}

2 个答案:

答案 0 :(得分:1)

未经测试,但试试这个。如果可行,请根据需要将文件名修改为动态。

var myfilename:File = File.applicationStorageDirectory;
myfilename = myfilename.resolvePath("myVoice.mp3");


var outputStream:FileStream = new FileStream();
outputStream.open(myfilename,FileMode.WRITE);
outputStream.writeBytes(mp3encoder.mp3Data,0,mp3encoder.mp3Data.length);
outputStream.close();

答案 1 :(得分:1)

我知道我的答案有点迟了,但也许对将来会发现这篇文章的人有用。

当您在Adobe AIR中的Windows上进行开发并尝试在File.applicationStorageDirectory中保存时,它不会保存在与swf或fla文件相同的文件夹中。

它将保存在这里: C:\ Users [WIN_LOGIN] \ AppData \ Roaming [APP_ID] \ Local Store

您将在IOS的发布设置中找到并设置您的APP_ID。