2
Android用モノラルを使用してボイスを録音する方法が不思議です。私はAndroidの下で音声を録音するためのさまざまな素材を見てきましたが、いずれもMonoバージョンのトピックをカバーしていないようです。Android用モノラル - ボイスレコーディング
ありがとうございました。
Android用モノラルを使用してボイスを録音する方法が不思議です。私はAndroidの下で音声を録音するためのさまざまな素材を見てきましたが、いずれもMonoバージョンのトピックをカバーしていないようです。Android用モノラル - ボイスレコーディング
ありがとうございました。
ここでは、デフォルトのaudiorecorderを使用し、オーディオを.3gp形式で記録する基本的な例を示します。 2つのボタンと、オーディオを録音するときにタイマーを表示するテキストビューを備えたアクティビティがあります。
活動(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>
が、私はこれを試してみましょう。ちなみに、どのプログラムをUIデザイン(コントロールの構成)に使用していますか? – SharpAffair
私はMonodevelopやVisual Studioで手作業でやっています。彼らはアンドロイドのアドオンのためにモノにオートコンプリートを内蔵しています。それ以外の場合は、DroidDraw http://www.droiddraw.org/を使用することができます。 – startupsmith