Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.07.2011, 03:22
olkina вне форума Посмотреть профиль Отправить личное сообщение для olkina Найти все сообщения от olkina
  № 1  
Ответить с цитированием
olkina
 
Аватар для olkina

Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
По умолчанию запись звука с микрофона в 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>


Последний раз редактировалось olkina; 13.07.2011 в 03:40. Причина: добавила подробности и запятые
Старый 23.07.2011, 12:54
VovkaMorkovka1 вне форума Посмотреть профиль Отправить личное сообщение для VovkaMorkovka1 Посетить домашнюю страницу VovkaMorkovka1 Найти все сообщения от VovkaMorkovka1
  № 2  
Ответить с цитированием
VovkaMorkovka1

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

Старый 23.07.2011, 13:20
olkina вне форума Посмотреть профиль Отправить личное сообщение для olkina Найти все сообщения от olkina
  № 3  
Ответить с цитированием
olkina
 
Аватар для olkina

Регистрация: Apr 2004
Адрес: Ramat Gan, Israel
Сообщений: 30
все оказалось сложнее. планшет с андроидом у меня оказался с неисправным микрофоном, на первом iPade я записываю звук с микрофона, а воспроизвести не могу, а на втором iPade - все работает

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
Android , ios , микрофон , планшеты

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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