Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   запись звука с микрофона в iOS и Android (http://www.flasher.ru/forum/showthread.php?t=160461)

olkina 13.07.2011 03:22

запись звука с микрофона в iOS и Android
 
Пишу приложение для iPad и Adroid планшетов, которое записывает звук с микрофона, а потом проигрывает его.

То, что замечательно работает на моем комьютере, ни в какую не согласно работать на планшетах.

Подробности:

Вот код, который начинает запись и ведет ее:

Код AS3:

                public function startRecording():void {
                        if (Microphone.isSupported) {
                                _isRecording = true;
                                _microphone = Microphone.getMicrophone(Microphone.names[0]);
                                _microphone.rate = 22;
                                _microphone.gain = 100;
                                _microphone.setSilenceLevel(0, 4000);
                                _soundData = new ByteArray();
                                _microphone.addEventListener(SampleDataEvent.SAMPLE_DATA, onSampleDataReceived);
                        } else {
                                trace("No microphone support!");
                        }
                }
                protected function onSampleDataReceived(event:SampleDataEvent):void
                {
                        while(event.data.bytesAvailable)
                        {
                                var sample:Number = event.data.readFloat();
                                _soundData.writeFloat(sample);
                        }
                }

На Android-e функция onSampleDataReceived не вызывается, видимо, event не приходит.

На iPad-е я нахожусь на более продвинутом этапе. SampleDataEvent приходит, _soundData явно содержит информацию (причем достаточно адекватную, чтобы нарисовать диаграмму звука), но проигрывать этот звук iPad отказывается. Максимум, что я могу услышать - несколько миллисекунд шума под конец.

Проигрываю звук я так:
Код AS3:

                public function playRecording():void {
                        if (_soundData != null) {
                                _soundData.position = 0;
                                var sound:Sound= new Sound();
                                sound.addEventListener(SampleDataEvent.SAMPLE_DATA, sound_sampleDataHandler);
                                var channel:SoundChannel = sound.play();
                                channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
                        }
                }
 
                protected function sound_sampleDataHandler(event:SampleDataEvent):void
                {
                        if (!_soundData.bytesAvailable > 0)
                        {
                                return;
                        }
 
                        for (var i:int = 0; i < 8192; i++)
                        {
                                var sample:Number = 0;
                                if (_soundData.bytesAvailable > 0)
                                {
                                        sample = _soundData.readFloat();
                                }
                                event.data.writeFloat(sample);
                                event.data.writeFloat(sample)
                        }
 
                }
                protected function soundCompleteHandler(event:Event):void
                {
                        //some code
                }

Внимание, вопрос: кто-нибудь писал приложение, которое бы нормально работало с микрофоном на планшетах?

Upd: В app.xml доступ к миктофону, вроде, разрешен
Код:

<android>
        <manifestAdditions><![CDATA[
                        <manifest android:installLocation="auto">
                            <!--See the Adobe AIR documentation for more information about setting Google Android permissions-->
                            <!--Removing the permission android.permission.INTERNET will have the side effect
                of preventing you from debugging your application on your device-->
                            <uses-permission android:name="android.permission.INTERNET"/>
                          <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                            <!--<uses-permission android:name="android.permission.READ_PHONE_STATE"/>-->
                            <!--<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>-->
                            <!--The DISABLE_KEYGUARD and WAKE_LOCK permissions should be toggled together
                in order to access AIR's SystemIdleMode APIs-->
                            <!--<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>-->
                            <!--<uses-permission android:name="android.permission.WAKE_LOCK"/>-->
                            <!--<uses-permission android:name="android.permission.CAMERA"/>-->
                            <uses-permission android:name="android.permission.RECORD_AUDIO"/>
                            <!--The ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE permissions should be toggled
                together in order to use AIR's NetworkInfo APIs-->
                            <!--<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>-->
                            <!--<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>-->
                        </manifest>
                       
                ]]></manifestAdditions>
    </android>


VovkaMorkovka1 23.07.2011 12:54

А ты почитай доку - работа со звуком не на всех устройствах есть. То есть микрофон имеется, но записывать с него флешом нельзя. Правов у флеша таких нету

olkina 23.07.2011 13:20

все оказалось сложнее. планшет с андроидом у меня оказался с неисправным микрофоном, на первом iPade я записываю звук с микрофона, а воспроизвести не могу, а на втором iPade - все работает


Часовой пояс GMT +4, время: 10:36.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.