簡體   English   中英

如何將聲音保存為鈴聲/通知?

[英]How to Save Sound as Ringtone/Notification?

嘿大家所以不確定這是否可以使用as3 for Android Air App。 我已經參加了一個星期,雖然取得了一些進展但不是我想要的。

到目前為止,我已經將它用於當用戶滑動聲音時它帶出存儲位置以將聲音保存在手機上的位置。 唯一的問題是它不允許我將其保存為鈴聲或通知。 只需將其保存在設備上;

我希望用戶能夠點擊保存並將其保存到鈴聲中,以便將其設置為鈴聲等...

任何幫助,將不勝感激。 這是我到目前為止:

我將聲音保存為wav。 仍有一些問題,因為一旦文件在設備上,我嘗試播放它,它播放它,但然后崩潰,說無法讀取文件。

var snd:Sound = new sndPanda();

        var sndBytes:ByteArray = new ByteArray();
        sndBytes.endian = Endian.LITTLE_ENDIAN;

        snd.extract( sndBytes, 44100 * 2 );

        var wav:ByteArray = encode( sndBytes );

        var f:FileReference = new FileReference(); //save file to phone
        f.save( wav, "Panda.Mp3" ); 



        function encode( data:ByteArray ):ByteArray
        {
            var channels:uint = 2;
            var bits:uint = 16;
            var rate:uint = 44100;

            var bytes: ByteArray = new ByteArray();
            bytes.endian = Endian.LITTLE_ENDIAN;

            bytes.writeUTFBytes( 'RIFF' );
            bytes.writeInt( uint( data.length + 44 ) );
            bytes.writeUTFBytes( 'WAVE' );
            bytes.writeUTFBytes( 'fmt ' );
            bytes.writeInt( uint( 16 ) );
            bytes.writeShort( uint( 1 ) );
            bytes.writeShort( channels );
            bytes.writeInt( rate );
            bytes.writeInt( uint( rate * channels * ( bits / 8 ) ) );
            bytes.writeShort( uint( channels * ( bits / 8 ) ) );
            bytes.writeShort( bits );
            bytes.writeUTFBytes( 'data' );
            bytes.writeInt( data.length );
            data.position = 0;
            var length:int = data.length - 4;
            while (data.position < length) { // could be better :-)
                bytes.writeShort(uint(data.readFloat() * 65536));
            }
            bytes.position = 0;

            return bytes;
        }

你可以看到我正在使用FileReference保存到設備。 但我知道必須有一種方法可以保存為鈴聲。 提前致謝。

唯一的問題是它不允許我將其保存為鈴聲或通知。 只需將其保存在設備上即可

這就是FileReference功能。 加載到您的應用程序或保存到設備存儲。
AS3中沒有內置方式將音頻設置為Android鈴聲/通知。 您可以考慮尋找ANE(Android原生擴展)。

我將聲音保存為wav。

為什么將MP3擴展名放在帶有WAV(PCM)數據的文件上? 見: f.save( wav, "Panda.Mp3" );

我嘗試播放它,它播放但然后崩潰,並說無法讀取文件。

我不知道這是否能解決你的問題,但考慮到var snd:Sound = new sndPanda(); ...
如果sndPanda是MP3數據,那么使用:

var snd:Sound = new sndPanda();
var sndBytes:ByteArray = new ByteArray();

var totalSamples : int = int( Math.floor ( (snd.length/1000) * 44100) );

sndBytes.endian = Endian.LITTLE_ENDIAN;
snd.extract( sndBytes, totalSamples );

var wav:ByteArray = encode( sndBytes );
var f:FileReference = new FileReference(); //save file to phone

f.save( wav, "Panda.Mp3" );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM