相关疑难解决方法(0)

AudioRecord对象未初始化

在下面的代码中,我的audioRecord对象没有初始化.我尝试将其移动到该onCreate方法并使其成为全局的.我已记录状态,并返回一个值1,表示可以使用.调试器表示startRecording正在未初始化的对象上调用它.它还说它无法获得音频源.

为什么我会收到这些错误?

    package com.tecmark;

    import java.io.BufferedOutputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import android.app.Activity;
    import android.media.AudioFormat;
    import android.media.AudioRecord;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.View;
    import android.widget.TextView;

    public class recorder extends Activity  {

        private Thread thread;
        private boolean isRecording;
        private AudioRecord recorder;
        private FileOutputStream os;
        private BufferedOutputStream bos;
        private DataOutputStream dos;
        private TextView text;
        private int audioSource = MediaRecorder.AudioSource.MIC;
        private int sampleRate = 22050;
        private int channel = AudioFormat.CHANNEL_CONFIGURATION_MONO; …
Run Code Online (Sandbox Code Playgroud)

android android-audiorecord

61
推荐指数
3
解决办法
6万
查看次数

Android AudioRecord示例

我正在设计一个Android应用程序,我需要实现一个AudioRecord类来记录用户的声音.经过一些研究(没有提供足够的信息)和几次失败的尝试,我想知道是否有人可以通过发布关于如何使用AudioRecord捕获高质量声音的示例(代码)来帮助我.我真的很感激.谢谢

audio android audiorecord android-audiorecord

54
推荐指数
2
解决办法
10万
查看次数

使用Android SDK从原始PCM数据创建WAV文件

我正在尝试使用AudioRecord类来记录WAV文件.问题是它只提供原始PCM数据,如果我将其写入文件,则没有标题信息,因此它不会在任何媒体播放器中播放.如何从这些原始数据创建WAV文件?

或者,有没有其他方法将Android中的声音录制到WAV文件(或者MP3)?

哦,我知道MediaRecorder无法使用,因为它不支持WAV或MP3格式.

audio android wav pcm audiorecord

20
推荐指数
1
解决办法
3万
查看次数

如何将.pcm文件转换为.wav或.mp3文件?

我目前正在开发一个具有录音和播放功能的Android应用程序.我是处理音频的新手,我在编码和格式方面遇到了一些麻烦.

我能够在我的应用程序中录制和播放音频,但在导出时我无法重现音频.我找到的唯一方法是导出我的.pcm文件并使用Audacity进行转换.

这是我记录音频的代码是:

private Thread recordingThread 
private AudioRecord mRecorder;
private boolean isRecording = false;

private void startRecording() {

    mRecorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            Constants.RECORDER_SAMPLERATE, Constants.RECORDER_CHANNELS,
            Constants.RECORDER_AUDIO_ENCODING, Constants.BufferElements2Rec * Constants.BytesPerElement);

    mRecorder.startRecording();
    isRecording = true;

    recordingThread = new Thread(new Runnable() {
        public void run() {
            writeAudioDataToFile();
        }
    }, "AudioRecorder Thread");
    recordingThread.start();
}

private void writeAudioDataToFile() {
    // Write the output audio in byte

    FileOutputStream os = null;
    try {
        os = new FileOutputStream(mFileName);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    while (isRecording) { …
Run Code Online (Sandbox Code Playgroud)

android pcm audiotrack

10
推荐指数
1
解决办法
1万
查看次数

捕获声音以进行分析并可视化Android中的频率

我是Android的新手,我正在尝试创建一个捕获音频声音的程序,然后显示其中存在的频率.我找到了一个绘制图形均衡器图形部分的示例.在此示例中,它使用AudioRecord类型的对象来捕获音频声音.用于将音频信号分解为分量频率的技术采用称为离散傅立叶变换(DFT)的数学变换,并且为了执行DFT,使用快速傅里叶变换(FFT).此示例使用实现FFT的包.该软件包链接到www.netlib.org/fftpack/jfftpack.tgz.问题是,在我运行此示例后,按下开始按钮后,图形均衡器不会出现在显示屏上.

以下是活动类的源代码:

package com.audio.processing;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;

import ca.uol.aig.fftpack.RealDoubleFFT;

public class AudioProcessing extends Activity implements OnClickListener{
    int frequency = 8000;
    int channelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_MONO;
    int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;


    private RealDoubleFFT transformer;
    int blockSize = 256;
    Button startStopButton;
    boolean started = false;

    RecordAudio recordTask;

    ImageView imageView;
    Bitmap bitmap;
    Canvas canvas;
    Paint paint; …
Run Code Online (Sandbox Code Playgroud)

android

8
推荐指数
2
解决办法
2万
查看次数

在左右扬声器上播放2个不同的音频流

一些特殊的情况迫使我做那种变态的事情.

是否可以在不同的频道上播放2个不同的音频流.想象一下耳机,我需要同时播放左扬声器的第一首歌和右扬声器的第二首歌.

经过一些研究,我发现可以在某个单一频道播放.甚至可以关闭其中一个.但我没有找到任何有关如何同时播放2个音频流的信息.

它甚至可能吗?如何?一些代码示例和链接赞赏!


研究结果.

1)AudioTrack能够在不同的频道上播放

// only play sound on left
for(int i = 0; i < count; i += 2){
    short sample = (short)(Math.sin(2 * Math.PI * i / (44100.0 / freqHz)) * 0x7FFF);
    samples[i + 0] = sample;
    samples[i + 1] = 0;
}
// only play sound on right
for(int i = 0; i < count; i += 2){
    short sample = (short)(Math.sin(2 * Math.PI * i / (44100.0 / freqHz)) * 0x7FFF);
    samples[i …
Run Code Online (Sandbox Code Playgroud)

audio android

8
推荐指数
1
解决办法
2648
查看次数

在Android中从麦克风录制wav文件 - 问题

我需要能够在Android中使用麦克风创建WAV文件.目前,我遇到了很多麻烦.到目前为止,这是我的情况.我正在使用micDroid项目代码的一部分进行记录:

//read thread


int sampleRate = 44100;
int bufferSize = AudioRecord.getMinBufferSize(sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
AudioRecord ar = new AudioRecord(AudioSource.MIC,sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT,bufferSize);
short[] buffer = new short[bufferSize];

ar.startRecording();
while(isRunning){
    try{
        int numSamples = ar.read(buffer, 0, buffer.length);
        queue.put(new Sample(buffer, numSamples));
    } catch (InterruptedException e){
        e.printStackTrace();
    }
}


//write thread


int sampleRate = 44100;
WaveWriter writer = new WaveWriter("/sdcard","recOut.wav",sampleRate,android.media.AudioFormat.CHANNEL_CONFIGURATION_MONO,android.media.AudioFormat.ENCODING_PCM_16BIT);
try {
    writer.createWaveFile();
} catch (IOException e) {
    e.printStackTrace();
}
while(isRunning){
    try {
        Sample sample = queue.take();
        writer.write(sample.buffer, sample.bufferSize);
    } catch (IOException e) {
        //snip
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常,但最终结果可识别地包含我所说的,但它是可怕的扭曲.这是大胆的屏幕上限(WMP拒绝播放文件).

替代文字

任何帮助将不胜感激,如果您需要更多代码/信息,请告诉我. …

java android wav audio-recording

4
推荐指数
1
解决办法
2万
查看次数