首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >samsung gear live音频编码

samsung gear live音频编码
EN

Stack Overflow用户
提问于 2014-09-29 23:38:53
回答 1查看 389关注 0票数 0

我目前正在开发一款Android Wear应用程序,我希望能进行音频录制。我已经在Android开发者网站上学习了教程,它在我的Nexus 7上运行得很好,但在我测试的三星Gear Live上就不行了。应用程序总是崩溃。

深入研究一下这个问题,我可能会发现这是记录器工作所需的两个参数的问题:要么是OutputFormat,要么是AudioEncoder。我试着配对并尝试所有可用的OutputFormatAudioEncoder,但一无所获。

所以我的问题是:是不是有人遇到了同样的问题?如果是这样,您是否找到了正确的Format/Encoder组合?

我不粘贴我的代码,因为它与文档中的代码完全相同。如果你想看一下,这里有个链接:http://developer.android.com/guide/topics/media/audio-capture.html

提前感谢您的回答和您的时间:)

EN

回答 1

Stack Overflow用户

发布于 2015-01-11 03:42:52

根本问题是您不能使用MediaRecorder,即使是Android audio capture example does,但您需要使用AudioRecord类。

此外,我建议将原始数据传输回手机,以便将其组装成音频文件,因为这在可穿戴设备上是非常棘手的。

有关更多信息,请参阅this answer

我已经包括了下面的一个样本,我得到了工作。

代码语言:javascript
复制
import android.app.Activity;
import android.content.Intent;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.support.wearable.view.WatchViewStub;
import android.util.Log;
import android.widget.TextView;
import android.view.View;

import java.util.List;

public class MainActivity extends Activity {
    private static final String TAG = MainActivity.class.getName();
    private static final int SPEECH_REQUEST_CODE = 1;

    private static final int RECORDER_SAMPLERATE = 44100;
    private static final int RECORDER_CHANNELS = AudioFormat.CHANNEL_IN_STEREO;
    private static final int RECORDER_AUDIO_ENCODING = AudioFormat.ENCODING_PCM_16BIT;

    private TextView mTextView;
    private AudioRecord recorder;
    private int bufferSize = 0;
    private Thread recordingThread = null;
    private volatile boolean isRecording;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.v(TAG, "Creating MainActivity");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
        stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
            @Override
            public void onLayoutInflated(WatchViewStub stub) {
                mTextView = (TextView) stub.findViewById(R.id.text);
            }
        });

        bufferSize =
                AudioRecord.getMinBufferSize(RECORDER_SAMPLERATE,
                        RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING);
    }

    public void handleRecordButtonClick(View view) {
        startAudioCapture();
    }

    public void handleStopButtonClick(View view) {
        stopAudioCapture();
    }

    private void startAudioCapture() {
        Log.v(TAG, "Starting audio capture");
        recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
                RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING,     bufferSize);
        if (recorder.getState() == AudioRecord.STATE_INITIALIZED) {
            recorder.startRecording();
            isRecording = true;
            Log.v(TAG, "Successfully started recording");

            recordingThread = new Thread(new Runnable() {

                @Override
                public void run() {
                    processRawAudioData();
                }
            }, "AudioRecorder Thread");

            recordingThread.start();
        } else {
            Log.v(TAG, "Failed to started recording");
        }
    }

    private void stopAudioCapture() {
        Log.v(TAG, "Stop audio capture");
        recorder.stop();
        isRecording = false;
        recorder.release();
    }

    private void processRawAudioData() {
        byte data[] = new byte[bufferSize];
        int read = 0;
        while(isRecording) {
            read = recorder.read(data, 0, bufferSize);

            if(AudioRecord.ERROR_INVALID_OPERATION != read) {
                Log.v(TAG, "Successfully read " + data.length + " bytes of audio");
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26103647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档