Запись звука из динамика в Silverlight WP7 - PullRequest
0 голосов
/ 19 сентября 2011

Мне нужно записать разные звуки в файл. файл может быть .mp3, .wav и т. д. как это возможно в Windows Phone 7?

1 Ответ

0 голосов
/ 28 сентября 2011

Существует простой способ сделать это в Windows Phone. Вы в основном используете класс Microphone, предоставляемый фреймворком. Для отличной статьи по теме перейдите на http://msdn.microsoft.com/en-us/magazine/gg598930.aspx

void OnRecordButtonClick (отправитель объекта, аргументы RoutedEventArgs) { если (микрофон. Состояние == MicrophoneState.Stopped) { // Очистить коллекцию для хранения буферов memoBufferCollection.Clear ();

            // Stop any playback in progress (not really necessary, but polite I guess)
            playback.Stop();

            // Start recording
            microphone.Start();
        }
        else
        {
            StopRecording();
        }

        // Update the record button
        bool isRecording = microphone.State == MicrophoneState.Started;
        UpdateRecordButton(isRecording);
    }

    void StopRecording()
    {
        // Get the last partial buffer
        int sampleSize = microphone.GetSampleSizeInBytes(microphone.BufferDuration);
        byte[] extraBuffer = new byte[sampleSize];
        int extraBytes = microphone.GetData(extraBuffer);

        // Stop recording
        microphone.Stop();

        // Create MemoInfo object and add at top of collection
        int totalSize = memoBufferCollection.Count * sampleSize + extraBytes;
        TimeSpan duration = microphone.GetSampleDuration(totalSize);
        MemoInfo memoInfo = new MemoInfo(DateTime.UtcNow, totalSize, duration);
        memoFiles.Insert(0, memoInfo);

        // Save data in isolated storage
        using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            using (IsolatedStorageFileStream stream = storage.CreateFile(memoInfo.FileName))
            {
                // Write buffers from collection
                foreach (byte[] buffer in memoBufferCollection)
                    stream.Write(buffer, 0, buffer.Length);

                // Write partial buffer
                stream.Write(extraBuffer, 0, extraBytes);
            }
        }

        // Scroll to show new MemoInfo item
        memosListBox.UpdateLayout();
        memosListBox.ScrollIntoView(memoInfo);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...