- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想知道如何使用 Mono for Android 录制语音。我看过各种在 Android 下录制语音的资料,但似乎都没有涵盖 Mono 版本主题。
谢谢。
最佳答案
这是一个基本示例,它使用默认的 audiorecorder 并将音频录制为 .3gp 格式。它有一个带有几个按钮的 Activity 和一个在您录制音频时显示计时器的 TextView 。
Activity (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>
关于android - Mono for Android - 录音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8699885/
我正在使用 twilio JS 客户端从 Web 进行调用。客户端调用后端获取 token 。这里是返回 token 的后端代码。如何记录通话。表示在哪里设置录制网址。通话成功。但是不知道从哪里传录音
我有一个软件,可以记录 5 秒间隔的声音,然后将其发送进行处理。它在无限循环中运行,如下所示: while (true) { System.out.println("recording..")
我目前正在做一个项目,需要录制 iPhone 播放的声音。通过这个,我的意思是录制在后台播放的声音,如声音剪辑或其他任何东西,而不是使用内置麦克风。 这能做到吗?我目前正在试验 AVAudioReco
当我将蓝牙免提连接到 Android 手机设备时,是否可以使用手机麦克风录制声音并在免提中听到? 我设法通过手机麦克风录制声音,并通过手机扬声器或耳机听到声音。但是当耳机有麦克风时,通常是免提,它默认
我想访问我在我的应用程序中记录的跟踪数据和自定义数据。 有人可以提供不同数据轨道保存在 mp4 中的格式吗? 使用这个例子https://github.com/google-ar/arcore-and
我想知道,在C++中进行音频记录/回放/搜索的跨平台实用工具是什么?我当时在考虑采用ALUT(OpenAL)的路线,但是有更好的方法吗?如果不是,你们是否知道ALUT的任何优秀教程/示例代码? 最佳答
我目前正在开发一个项目,该项目允许用户录制音频消息,但是最近提出了一个要求,允许他们暂停录制过程,然后继续录制(将新的音频追加到之前的录制之后)。 示例: 用户按下记录并进行初始记录。 用户按下暂停按
我见过几个这样的例子,但它们似乎是针对旧版本的 SDK。我正在尝试设置基本的录音,以下代码在针对 SDK 2.0 版时给我一个 NullPointerException。 ContentValues
我开发了一款安卓游戏,使用 Audio Record 获取麦克风输入。 可以看一下https://play.google.com/store/apps/details?id=fixappmedia.m
我想在最近的项目中使用该插件进行音频捕获。我找到了 Matt Diamond 的努力 demo here正如大多数文章所指向的那样。我尝试在本地重新创建这个完全相同的演示,但没有成功。 我包括了所有依
我正在设置录音机,但在 soundRecorder = try AVAudioRecorder(URL: getFileURL(), settings: recordSettings as! [Str
作为一名吉他手,我一直想开发自己的录音、混音软件。我在 Direct Sound、Windows Multimedia(waveOutOpen 等)方面有一些经验。我意识到这将是一个复杂的项目,但纯粹
我不想记录我自己的击键来创建 asciinema 教程,而是想编写它们的脚本,这样我就可以随着时间的推移轻松地改进我的教程,而不必担心每次我想进行更改时都要重做,或者花很多时间尝试更正录音中的错别字。
我正在尝试使用 Flutter 构建一个应用程序,其中包含录音机。如何访问录音机?请帮我弄清楚它的包、依赖项和代码。 最佳答案 您可以使用 audio_recorder 包: https://pub.
掌握 Java Flight recorder (JFR) 配置,我有一个最合理的配置: -XX:+UnlockCommercialFeatures -XX:+DebugNonSafepoints -
我正在尝试播放我从 twilio 取回的通话录音。到目前为止,我在我的网站上有一个所有通话录音的列表,当我点击它们时,它会将我发送到 twilio 以收听它们。然后我发出一个 ajax 请求以从 tw
我们可以用 iPhone 直接线路输入录制音频吗? 最佳答案 唯一的方法是使用底座连接器创建您自己的配件,然后使用提供的 API! 关于iPhone LINE-IN 录音 可以吗?,我们在Stack
基本上,我希望用户使用 SoundCloud 录音机录制声音,一旦他们单击“保存”,他们刚刚录制的声音就会嵌入到我的网页中。 我使用 SC.record() 方法来获取录音。这是我保存录音的功能...
我正在尝试在网站中实现录音。基本上,用户应该能够按下一个按钮并对着麦克风说些什么。然后应将录制的音频发送到服务器以进行进一步处理。我知道您可以使用 Flash 做到这一点,但现在我正在努力避免这种情况
我正在尝试“录制”一个音频文件,我读过这个 doc ,实际上我想在文件中将“采样”值记录为双倍值,这是我使用的代码(不起作用,我不知道为什么没有): /* Use the newer ALSA API
我是一名优秀的程序员,十分优秀!