#actionscript-3 #ringtone #audio
#actionscript-3 #мелодия звонка #Аудио
Вопрос:
я новичок в этом. только что сделал двухстраничную звуковую панель. работает отлично. проблема в том, что я хотел бы предоставить возможность сохранять звуки в качестве рингтонов / уведомлений. нет примеров того, как это сделать в as3. помогите, пожалуйста!
Комментарии:
1. Привет, я подозреваю, что никто не попытался помочь, потому что вы предоставили очень мало информации. Не существует стандартного типа файла для рингтонов (уведомлений?) и вам придется выбрать один или два, чтобы определить проблему. Сохранение файла в MP3 — довольно сложная задача, сохранение в WAV — немного сложнее. Вам придется провести некоторое исследование классов ByteArray и FileReference. Можно предположить, что вы загружаете звуки в свое приложение в формате MP3, так что, возможно, вы ближе, чем думаете.
Ответ №1:
-
запишите звук с помощью:http://www.bytearray.org/?p=1858
-
кодирование в mp3 с помощью:https://github.com/kikko/Shine-MP3-Encoder-on-AS3-Alchemy
-
сохраните данные mp3 в файл как таковой :
private function saveFile() { // WRITE ID3 TAGS var sba:ByteArray = mp3Encoder.mp3Data; sba.position = sba.length - 128 sba.writeMultiByte("TAG", "iso-8859-1"); sba.writeMultiByte("Microphone Test 1-2, 1-2 " String.fromCharCode(0), "iso-8859-1"); // Title sba.writeMultiByte("jordansthings " String.fromCharCode(0), "iso-8859-1"); // Artist sba.writeMultiByte("Jordans Thingz Bop Volume 1 " String.fromCharCode(0), "iso-8859-1"); // Album sba.writeMultiByte("2010" String.fromCharCode(0), "iso-8859-1"); // Year sba.writeMultiByte("www.jordansthings.com " String.fromCharCode(0), "iso-8859-1");// comments sba.writeByte(57); filePath = (File.applicationStorageDirectory.resolvePath("sound3.mp3")).url; // get the native path var wr:File = new File(filePath); // create filestream var stream:FileStream = new FileStream(); // open/create the file, set the filemode to write in order to save. stream.open( wr , FileMode.WRITE); // write your byteArray into the file. stream.writeBytes ( sba, 0, sba.length ); // close the file. stream.close(); }