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. Mono for Android
- 2. Mono For Android MapsAndLocationDemo
- 3. messagebox for android mono
- 4. Compile Mono for Android ARM7
- 5. Mono For Android,FindViewById CheckBoxPreference?
- 6. AsyncTask in Mono for Android
- 7. Mono for Android LVL和
- 8. Java.Lang.Throwable in Mono for Android
- 9. ExpandableListView Mono for Android,ClickEvents
- 10. OnGlobalLayoutListener in Mono for Android
- 11. Mono for Android Widget教程
- 12. 安裝Xamarin Mono for Android
- 13. Mono for Android和MuPdf PInvoke
- 14. Mono for Android Html Agility Pack
- 15. Mono for Android內存泄漏
- 16. Mono for Android發行錯誤
- 17. Monotouch/Mono for Android Javascript to C#
- 18. 安裝Xamarin Mono for Android
- 19. 使用Mono for Android的Xsd2Code
- 20. Mono for Android,讀寫XLSX
- 21. Mono for Android如何工作?
- 22. Mono for Android保存數據
- 23. Mono for Android Visual Design for Visual Studio 10.0?
- 24. Mono for Android發短信/電子郵件
- 25. Xamarin Android(Mono for Android)分割動作條
- 26. Mono for Android無法創建程序集目錄
- 27. 斷點不被打Mono For Android(Monodroid)
- 28. Xamarin的Android for Mono是否支持與Mono相同的.NET庫?
- 29. Mono for Android 4.0錯誤編譯
- 30. Nlog支持Monotouch和Mono for 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