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