2
A
回答
4
这是一个基本的例子,它使用默认的audiorecorder并将音频记录为.3gp格式。 它有一个活动,有两个按钮和一个文本视图,用于在录制音频时显示计时器。
活动(AudoRecorderActivity.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using System.Timers;
using System.Threading;
namespace App.MonoDroid {
[Activity (Label = "Record Audio")]
public class AudioRecorderActivity : Activity {
Button btnStart;
Button btnStop;
public TextView tvTime;
private System.Timers.Timer tm;
private TimeSpan m_offset;
private DateTime m_startTime;
private const string STOPWATCH_ZERO = "00:00:00";
AudioRecorder rec;
private string FileName;
bool isStarted = false;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.audiorecorder);
btnStart = FindViewById<Button> (Resource.Id.btnStart);
btnStart.Click += new EventHandler (btnStart_Click);
tvTime = FindViewById<TextView> (Resource.Id.tvTimer);
btnStop = FindViewById<Button> (Resource.Id.btnStop);
btnStop.Click += new EventHandler (btnStop_Click);
m_offset = new TimeSpan (0);
m_startTime = DateTime.Now;
tvTime.SetText (STOPWATCH_ZERO, TextView.BufferType.Normal);
}
void btnStop_Click (object sender, EventArgs e)
{
this.Finish();
}
void btnStart_Click (object sender, EventArgs e)
{
//Check if SD card is mounted
if (Android.OS.Environment.ExternalStorageState.Equals (Android.OS.Environment.MediaMounted)) {
if (isStarted) {
tm.Stop();
rec.Stop();
rec = null;
Finish();
}
else {
rec = new AudioRecorder (Android.OS.Environment.ExternalStorageDirectory.AbsolutePath
+ "/Android/data/" + this.Application.PackageName, "audiotest.3gp");
m_offset = TimeSpan.Parse (tvTime.Text);
m_startTime = DateTime.Now;
tm = new System.Timers.Timer (1000.0);
tm.Elapsed += new ElapsedEventHandler (tm_Elapsed);
tm.Start();
rec.Start();
isStarted = true;
btnStart.Text = GetString ("Stop");
}
}
}
protected override void OnPause()
{
base.OnPause();
this.Save();
}
void tm_Elapsed (object sender, ElapsedEventArgs e)
{
DisplayTime();
}
private void DisplayTime()
{
TimeSpan elapsed = (DateTime.Now - m_startTime) + m_offset;
RunOnUiThread (() => tvTime.SetText (String.Format ("{0:00}:{1:00}:{2:00}",
(int)elapsed.TotalHours, elapsed.Minutes, elapsed.Seconds), TextView.BufferType.Normal));
}
//Stop the activity from being rotated so that the timer/recording isn't stopped.
public override void OnConfigurationChanged (Android.Content.Res.Configuration newConfig)
{
base.OnConfigurationChanged (newConfig);
SetRequestedOrientation ((Android.Content.PM.ScreenOrientation)this.RequestedOrientation);
}
}
}
布局文件(audiorecorder.axml):
<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/tvTimer"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="100px"
android:gravity="center_horizontal"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="100"
android:orientation="horizontal"
>
<Button
android:id="@+id/btnStart"
android:text="@string/Start"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
/>
<Button
android:id="@+id/btnStop"
android:text="@string/CancelButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="50"
/>
</LinearLayout>
</LinearLayout>
相关问题
- 1. Java.Lang.Throwable in Mono for Android
- 2. Mono for Android LVL和
- 3. AsyncTask in Mono for Android
- 4. ExpandableListView Mono for Android,ClickEvents
- 5. 使用Mono for Android的Xsd2Code
- 6. 安装Xamarin Mono for Android
- 7. Mono for Android如何工作?
- 8. 安装Xamarin Mono for Android
- 9. Mono for Android内存泄漏
- 10. Mono for Android Visual Design for Visual Studio 10.0?
- 11. Mono for Android发短信/电子邮件
- 12. 断点不被打Mono For Android(Monodroid)
- 13. Xamarin的Android for Mono是否支持与Mono相同的.NET库?
- 14. Honeycomb 3.1/Mono for Android坚持'LightsOut'
- 15. Mono for Android:显示文件选择器?
- 16. Mono for Android - 布局设计器问题
- 17. 使用C#mono for android或java?
- 18. 适用于Android的ORM for Mono
- 19. Mac:Uninstall MonoDevelop加载项:Mono for Android
- 20. DotnetBrowser和Mono for ARM
- 21. Kinect for Windows v2的录音
- 22. Android的录音
- 23. 音频录音机Android
- 24. android录音音量变化
- 25. Android的录音音量
- 26. FFT录音机Android
- 27. Mono for OS X和Cocoa
- 28. mono for android。主屏幕上的小工具
- 29. android音频录制
- 30. Android音频录制
我会尝试了这一点。顺便说一句,您使用哪个程序进行UI设计(控件组合)? – SharpAffair 2012-01-02 23:00:29
我只是在Monodevelop或Visual Studio中手动完成它。他们有自动完成内置的单声道为Android附加。否则,我认为你可以使用DroidDraw http://www.droiddraw.org/。 – startupsmith 2012-01-02 23:25:26