google-app-engine - 将音频文件从WP7发布到App Engine服务器(Java)

标签 google-app-engine windows-phone-7 audio attachment wav

我有一个Windows Phone 7应用程序(QuickNote),该应用程序允许用户记录语音注释。我正在尝试添加一项功能,使用户可以通过电子邮件将音频笔记作为附件发送。我使用XNA音频库在电话上播放语音注释,并将原始音频(字节数组)保存在对象上,以便可以播放。

我需要能够创建音频文件(.wav,.mp3或其他文件)并将其发布到我创建的App Engine Java Servlet中,以便我可以通过电子邮件将音频文件作为附件发送。

非常感谢任何方向和/或代码样本。

最佳答案

我没有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");
    }
}

基本上,您只需对某个URL运行HTTP POST。在我博客的示例中,我将发布到ASP.NET MVC Controller Action,该Action仅接收传入的输入流并将其写入磁盘。

希望这会有所帮助。如果您在Java方面遇到问题,请告诉我,我将看看是否也可以为此提供样本。

/克里斯

关于google-app-engine - 将音频文件从WP7发布到App Engine服务器(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784825/

相关文章:

python - 如何测试 Appengine 中 ReferenceProperty 的有效性?

html - 如何使用 Servlet 流式传输 MP3、MP4、AVI 等音频/视频文件

ios - iOS音频样本仅在耳机输出上播放

node.js - 在 google cloud sql nodejs 上定义 Sequelize

java - 在 Gae 上创建一个大的 Zip 文件(在 blobstore 中)

java - 在 GoogleEngine (Java) 上,在 JDO 中,如何根据父对象的 id 查询子对象列表?

batch-file - 使用批处理播放音乐文件?

silverlight - 以编程方式确定文本框的最大适合度 (WP7)

c# - WP7如何让网格尺寸适配图像尺寸

windows-phone-7 - WP7 附加菜单,它有什么用?