如何在Android Wear上录制音频

7
有没有一种在Android Wear手表上录制音频的方法?我尝试使用AudioRecord API,但它导致应用程序崩溃。请问我做错了什么吗?
        short[] audioData = new short[minBufferSize];

        AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
                11025,
                AudioFormat.CHANNEL_CONFIGURATION_MONO,
                AudioFormat.ENCODING_PCM_16BIT,
                minBufferSize);

        audioRecord.startRecording();

        while(recording){
            int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);
            for(int i = 0; i < numberOfShort; i++){
                dataOutputStream.writeShort(audioData[i]);
            }
        }

        audioRecord.stop();

它使应用程序崩溃。-- 使用LogCat来检查与崩溃相关的Java堆栈跟踪:https://dev59.com/iGAg5IYBdhLWcg3wpMSz - CommonsWare
很不幸,LogCat没有显示任何错误,应用程序只是在没有错误消息的情况下崩溃了。我不确定Android Wear是否支持音频录制,想知道是否有人能够使用它。 - Leonardo Cartaxo
几个月前尝试过,我遇到了编码问题,这导致媒体记录器无法启动。自那以后就没有再尝试过,但也许如果你像当时有人建议的那样去除编码,它可能会起作用。 - Tony Malghem
请问您能否分享完整的代码?您是否使用了createNewFile()方法来创建新文件?另外,您是如何通过使用getExternalStorageDirectory解决EACCES问题的呢?谢谢。 - Siyamak Shahpasand
1个回答

6

AudioRecord支持并可在Android Wear上运行。如果您正在模拟器上测试,可能不支持您提供的采样率11025,请尝试另一个采样率,例如8000。

构建AudioRecord后,应检查状态以确认初始化成功,然后再尝试录制。

audioRecord.getState() == AudioRecord.STATE_INITIALIZED

还要确保您在清单中拥有正确的权限。最低要求是android.permission.RECORD_AUDIO以及任何用于写入文件的位置的权限。


2
我忘记在清单文件中添加音频权限了。现在它可以工作了,谢谢。 - Leonardo Cartaxo
你如何访问录制的音频? - Amir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接