Google app engine 将音频文件从WP7发布到应用引擎服务器(Java)
我有一个Windows Phone 7应用程序(QuickNote),允许用户录制语音备忘。我正在尝试添加一项功能,允许用户将其音频笔记作为附件发送电子邮件。我使用XNA音频库在手机上播放语音备忘,并将原始音频(字节数组)保存在一个对象上,以便可以播放 我需要能够创建一个音频文件(.wav、.mp3或其他文件),并将其发布到我创建的App Engine java servlet,以便我可以将音频文件作为附件发送电子邮件Google app engine 将音频文件从WP7发布到应用引擎服务器(Java),google-app-engine,windows-phone-7,audio,attachment,wav,Google App Engine,Windows Phone 7,Audio,Attachment,Wav,我有一个Windows Phone 7应用程序(QuickNote),允许用户录制语音备忘。我正在尝试添加一项功能,允许用户将其音频笔记作为附件发送电子邮件。我使用XNA音频库在手机上播放语音备忘,并将原始音频(字节数组)保存在一个对象上,以便可以播放 我需要能够创建一个音频文件(.wav、.mp3或其他文件),并将其发布到我创建的App Engine java servlet,以便我可以将音频文件作为附件发送电子邮件 非常感谢您提供任何指导和/或代码示例。我没有java部分,但我有客户机部分-
非常感谢您提供任何指导和/或代码示例。我没有java部分,但我有客户机部分-我的帖子:
public部分类主页:PhoneApplicationPage
{
//建造师
公共主页()
{
初始化组件();
}
私有无效选择按钮\单击(对象发送者、路由目标)
{
PhotoChooserTask=新的PhotoChooserTask();
task.Completed+=task_Completed;
task.Show();
}
私有无效任务_已完成(对象发送方,照片结果e)
{
if(e.TaskResult!=TaskResult.OK)
返回;
const int BLOCK_SIZE=4096;
Uri=新的Uri(“http://localhost:4223/File/Upload“,乌里金。绝对);
WebClient wc=新的WebClient();
wc.AllowReadStreamBuffering=true;
wc.AllowWriteStreamBuffering=true;
//写流打开时要做什么
wc.OpenWriteCompleted+=(s,args)=>
{
使用(BinaryReader br=新的BinaryReader(e.ChosenPhoto))
{
使用(BinaryWriter bw=新的BinaryWriter(args.Result))
{
长b计数=0;
long fileSize=e.ChosenPhoto.Length;
字节[]字节=新字节[块大小];
做
{
字节=br.ReadBytes(块大小);
bCount+=字节。长度;
写入(字节);
}而(b计数<文件大小);
}
}
};
//写作完成后要做什么
wc.WriteStreamClosed+=(s,args)=>
{
MessageBox.Show(“发送完成”);
};
//写入WebClient
OpenWriteAsync(uri,“POST”);
}
}
基本上,您只需运行一个指向某个URL的HTTP POST。在我博客中的示例中,我正在发布一个ASP.NET MVC控制器操作,它只接收传入的输入流并将其写入磁盘
希望这能有所帮助。如果您在java方面有问题,请告诉我,我会看看是否也能找到相应的示例
/克里斯你不是问过同样的问题吗?没有。在那里,我询问如何将原始音频数据获取到应用程序引擎,并从中创建一个文件。现在我在问如何发送文件。谢谢你的关心。
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");
}
}