我正在设计一个Android应用程序,我需要实现一个AudioRecord类来记录用户的声音.经过一些研究(没有提供足够的信息)和几次失败的尝试,我想知道是否有人可以通过发布关于如何使用AudioRecord捕获高质量声音的示例(代码)来帮助我.我真的很感激.谢谢
所以我有一个小问题,我正在编写一个需要向服务器发送屏幕宽度的功能.我得到了一切工作,我使用:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
Run Code Online (Sandbox Code Playgroud)
获得宽度.但是.getWidht()函数已被弃用,它表示你需要使用:
Point size = new Point();
display.getSize(size);
Run Code Online (Sandbox Code Playgroud)
但是这个功能只适用于api等级13或更高,而我的最小sdk是8.那我该怎么办?如果我留在getWidth是否安全?为什么要添加新功能而不使它们向后兼容?
ensureIndex(data)当典型数据看起来像我打电话时到底发生了什么data:{name: "A",age:"B", job : "C"}?它会在这三个字段上创建一个复合索引,还是只在请求数据的任何内容或完全不同的东西时才创建一个索引?
我正在试图弄清楚运行Android 2.2及更高版本的手机支持哪些采样率.我们想以低于44.1kHz的速率进行采样,而不必重新采样.
我知道所有手机都支持44100Hz,但是想知道是否有一张桌子显示哪些采样率对特定手机有效.我已经看过Android的文档(
http://developer.android.com/reference/android/media/AudioRecord.html),但它没有多大帮助.
有没有人找到这些采样率的清单?
我的Android Java应用程序需要将音频数据记录到RAM中并进行处理.这就是我使用"AudioRecord"类而不是"MediaRecorder"(仅记录到文件)的原因.
直到现在,我使用繁忙的循环轮询"read()"来表示音频数据.到目前为止,这一直在起作用,但它过多地占用了CPU.在两次民意调查之间,我将线程置于休眠状态以避免100%的CPU使用率.但是,这并不是一个干净的解决方案,因为无法保证睡眠时间,您必须减去安全时间,以免丢失音频片段.这不是CPU的最佳选择.对于并行运行的线程,我需要尽可能多的空闲CPU周期.
现在我使用"OnRecordPositionUpdateListener"实现了录制.根据SDK Docs,这看起来很有前途,也是正确的方法.一切似乎都有效(打开音频设备,读取()数据等)但从不调用Listner.
有人知道为什么吗?
信息:我正在使用真实的设备,而不是在仿真器下.使用Busy Loop录制基本上可以工作(但不是满意).永远不会调用Callback Listener.
这是我的源代码片段:
public class myApplication extends Activity {
/* audio recording */
private static final int AUDIO_SAMPLE_FREQ = 16000;
private static final int AUDIO_BUFFER_BYTESIZE = AUDIO_SAMPLE_FREQ * 2 * 3; // = 3000ms
private static final int AUDIO_BUFFER_SAMPLEREAD_SIZE = AUDIO_SAMPLE_FREQ / 10 * 2; // = 200ms
private short[] mAudioBuffer = null; // audio buffer
private int mSamplesRead; // how many samples are recently read
private AudioRecord mAudioRecorder; // Audio Recorder
... …Run Code Online (Sandbox Code Playgroud) 如何将自定义对话框显示为容器的中心?
Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar);
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
window.setGravity(Gravity.CENTER);
Run Code Online (Sandbox Code Playgroud)
R.style.Theme_Translucent_NoTitleBar - 用于删除cutomdialog的边框.一旦我使用此行,对话框将出现在平板电脑的顶部角落?
任何人都可以帮我解决这个问题吗?
我在初始化AudioRecordAndroid时遇到了这个问题.我在网上搜索了一段时间没有成功.
对于手机,我在SDK版本7上使用三星GalaxyS.对于AudioRecord初始化,我使用8000作为采样率,MONO用于通道配置,16位用于音频格式,并根据日志,minBufferSize设置是4160.我已将清单的AUDIO_RECORD权限添加到了清单中.
我的初始化代码如下:
...
private static int SAMPLE_RATE = 8000;
private static int CHANNEL_CONFIG = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private static int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
// ??? Both 8Bit and Default are deemed illegal.
public MicVolumeManager() {
this.bufferSize = AudioRecord.getMinBufferSize(SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT);
PhoneDebugger.debug("AUDIO-BUFFER-SIZE",
Integer.toString(this.bufferSize));
this.recorder = new AudioRecord(AudioSource.MIC, SAMPLE_RATE,
CHANNEL_CONFIG, AUDIO_FORMAT, this.bufferSize);
this.audioBuffer = new byte[this.bufferSize];
}
...
Run Code Online (Sandbox Code Playgroud)
但是,对象(this.recorder)无法初始化.以下是使用DDMS的日志:
AUDIO-BUFFER-SIZE(3253): 4160
AudioRecord(3253): set():sampleRate 8000,channels 16,frameCount 2080
AudioPolicyManager(2175): getInput()inputSource 1,samplingRate 8000,format 1,channels 10,acoustics 0
AudioFlinger (2175): openInput()openInputStream返回输入0x0,SamplingRate 8000,格式1,通道10,声学0,状态-17
AudioRecord(3253):无法获取记录源1的音频输入 …
Hej,我目前正试图让AudioRecord工作.因为我需要一个更大的项目.但它似乎搞得很多.我一直在尝试很多东西,所以当我追踪这个bug时我回到了基础.我正在使用我的三星Galaxy S作为我的调试设备.
我的问题是,第一次重启我的设备后,我可以初始化我创建的AudioRecord对象没有问题.但是第二次运行它时,它不会初始化AudioRecord对象.我已经尝试了几个频率,fyi.
这是我的代码:
package android.audiorecordtest;
import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class AudioRecordTest extends Activity {
int frequency;
AudioRecord audRec;
TextView txtVw;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtVw = (TextView) findViewById(R.id.txtVw);
frequency=8000;
int bufferSize=(AudioRecord.getMinBufferSize(frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT))*2;
if (bufferSize>0) {
audRec = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
int status = audRec.getState();
if (status == …Run Code Online (Sandbox Code Playgroud) 我需要知道ImageView的宽度和高度.有没有办法在片段中测量它?在标准Activity中我使用:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
image.getWidth();
image.getHeight();
}
Run Code Online (Sandbox Code Playgroud)
但是我可以在哪里使用image.getWidth();和image.getHeight();片段?
我正在寻找一种方法来获得自定义对话框的大小.我经历了这个问题,但是给出的唯一答案是没用的,因为如果我尝试mDialog.getWindow().getAttributes().height;它只返回-2,这是WRAP_CONTENT我设置为对话的属性的常量.我怎样才能得到它的大小.我想知道背景图像的siye.
android ×9
audio ×4
alsa ×1
audiorecord ×1
callback ×1
deprecated ×1
dialog ×1
indexing ×1
java ×1
mongodb ×1
recording ×1
sample-rate ×1
width ×1