Опубликовать аудиофайл с WP7 на сервер App Engine (Java) - PullRequest
1 голос
/ 26 апреля 2011

У меня есть приложение для Windows Phone 7 (QuickNote), которое позволяет пользователям записывать голосовые заметки.Я пытаюсь добавить функцию, которая позволит пользователям отправлять свои аудиозаписи по электронной почте в виде вложений.Я использую аудио библиотеку XNA для воспроизведения голосовых заметок на телефоне и сохраняю необработанное аудио (байтовый массив) на объекте, чтобы его можно было воспроизвести.

Мне нужно иметь возможность создавать аудиофайл (.wav, .mp3 или любой другой) и опубликуйте его в Java-сервлете App Engine, который я создал, чтобы я мог отправить аудиофайл по электронной почте в виде вложения.

Любое направление и / или примеры кода значительнооценили.

1 Ответ

0 голосов
/ 20 августа 2011

У меня нет java-части, но у меня есть клиентская часть - из моего поста на http://chriskoenig.net/2011/08/19/upload-files-from-windows-phone/:

public partial class MainPage : PhoneApplicationPage
{
    // Constructor
    public MainPage()
    {
        InitializeComponent();
    }

    private void SelectButton_Click(object sender, RoutedEventArgs e)
    {
        PhotoChooserTask task = new PhotoChooserTask();
        task.Completed += task_Completed;
        task.Show();
    }

    private void task_Completed(object sender, PhotoResult e)
    {
        if (e.TaskResult != TaskResult.OK)
            return;

        const int BLOCK_SIZE = 4096;

        Uri uri = new Uri("http://localhost:4223/File/Upload", UriKind.Absolute);

        WebClient wc = new WebClient();
        wc.AllowReadStreamBuffering = true;
        wc.AllowWriteStreamBuffering = true;

        // what to do when write stream is open
        wc.OpenWriteCompleted += (s, args) =>
        {
            using (BinaryReader br = new BinaryReader(e.ChosenPhoto))
            {
                using (BinaryWriter bw = new BinaryWriter(args.Result))
                {
                    long bCount = 0;
                    long fileSize = e.ChosenPhoto.Length;
                    byte[] bytes = new byte[BLOCK_SIZE];
                    do
                    {
                        bytes = br.ReadBytes(BLOCK_SIZE);
                        bCount += bytes.Length;
                        bw.Write(bytes);
                    } while (bCount < fileSize);
                }
            }
        };

        // what to do when writing is complete
        wc.WriteStreamClosed += (s, args) =>
        {
            MessageBox.Show("Send Complete");
        };

        // Write to the WebClient
        wc.OpenWriteAsync(uri, "POST");
    }
}

По сути, вы просто запускаете HTTP POST для некоторого URL. В примере из моего блога я публикую сообщение о действии контроллера ASP.NET MVC, которое просто принимает входящий поток ввода и записывает его на диск.

Надеюсь, это поможет. Если у вас возникли проблемы со стороной Java, дайте мне знать, и я посмотрю, смогу ли я подшучивать над образцом для этого тоже.

/ * Крис 1009 *

...