Android 通过tinyalsa调试解决录制和播放音频问题

在Android设备上进行音频开发时,我们可能会遇到各种问题。其中之一是录音音量过低。在本文中,我将探讨如何诊断和解决这个问题,并简要介绍tinyalsa工具的使用。

问题描述

最近我在使用全志Android平台客户有个MIC需求,需要用到录制和播放音频的功能。我发现全志平台声卡驱动,它提供了两个麦克风输入,分别是 MIC1 和 MIC2。我想要使用 MIC1 作为录音输入源,而不是 MIC2。

我尝试了很多方法,包括修改声卡配置文件,混音器控件和录音命令,但都没有成功。

解决方法

经过一番搜索和尝试,找到了一个解决方法,就是通过修改声卡配置文件,混音器控件和录音命令来实现使用 MIC1 作为录音输入源,并且提高 MIC 的录音和功放耳机声音大小。

修改声卡配置文件

声卡配置文件是一个用于定义声卡参数和设备的文件,它通常位于 system\etc\codec_paths.xml 。:

  <path name="media-main-mic">
   <ctl name="Left Input Mixer MIC2 Boost Switch" value="1" />
   <ctl name="Right Input Mixer MIC2 Boost Switch" value="1" />
  </path>

  <path name="media-main-mic-close">
   <ctl name="Left Input Mixer MIC2 Boost Switch" value="0" />
   <ctl name="Right Input Mixer MIC2 Boost Switch" value="0" />
  </path>

源代码位置: hardware/aw/audio/codec_paths.xml

这段内容,它定义了Android音频系统中的音频路径配置。这些路径配置通常用于确定音频信号如何在硬件和软件之间流动。

  • media-main-mic路径被激活时,MIC2的增益开关在左右输入混音器上都会被打开,这允许MIC2的音频信号进入音频处理链路。

  • media-main-mic-close路径被激活时,MIC2的增益开关在左右输入混音器上都会被关闭,这阻止了MIC2的音频信号进入音频处理链路。

我对比了正常机器的文件是显示的MIC1 , 但不正常的是显示MIC2 所以我认为改这个是有效的。

修改混音器控件

接着我想起了很久以前用过的调试tinyalsa , 如果没有需要执行mmm external/tinyalsa/

混音器控件是一些用于控制声卡设置的参数,例如输入源、输出设备、增益、音量等。要修改混音器控件,需要使用一个命令行工具来查看和设置这些参数。在全志平台上,可以使用 tinyalsa 这个工具来实现这个功能。tinyalsa 他其实是一个简化的 ALSA 库,它提供了一些命令行工具来测试和控制音频设备。

要使用 tinyalsa 来修改混音器控件,比如调节 MIC 的录音和功放耳机声音大小的参数。可以使用 tinymix 命令来修改这些控件的值,例如:

tinymix "digital volume" 63
tinymix "Headphone volume" 63
tinymix "MIC gain volume" 7 7
tinymix "MIC1 boost volume" 7
tinymix "MIC2 boost volume" 7
tinymix "ADC gain volume" 7

它们可以影响 MIC 的录音和功放耳机声音大小:

  • digital volume: 这个控件可以调节数字音量,它的范围是 0 到 63,值越大音量越大。
  • Headphone volume: 这个控件可以调节耳机音量,它的范围是 0 到 63,值越大音量越大。
  • MIC gain volume: 这个控件可以调节 MIC 的增益,它有两个通道,分别对应 MIC1 和 MIC2。它的范围是 0 到 7,值越大增益越大。
  • MIC1 boost volume: 这个控件可以调节 MIC1 的额外增益,它的范围是 0 到 7,值越大增益越大。
  • MIC2 boost volume: 这个控件可以调节 MIC2 的额外增益,它的范围是 0 到 7,值越大增益越大。
  • ADC gain volume: 这个控件可以调节 ADC 的增益,它的范围是 0 到 7,值越大增益越大。

这些命令会将这些控件的值都设置为最大值,临时快捷的 从而提高 MIC 的录音和功放耳机声音大小。然后根据实际情况来调整代码这些值。

修改录音命令

录音命令是一个用于录制音频文件的命令行工具,它可以指定采样率、通道数、格式、时长等参数。在全志平台上,可以使用 tinyalsa 这个工具来实现这个功能。

要使用 tinyalsa 来修改录音命令,需要运行以下命令:

tinycap -D 0 -d mic -c 2 -r 44100 -b 16 -t 10 /sdcard/test.wav

这个命令表示使用声卡 0 的 mic 设备,双通道,44.1 kHz,16 位,录制 10 秒的音频文件到 /sdcard/test.wav。

结果验证

经过以上的修改,我就可以使用 MIC2 来录制和播放音频了。可以使用以下命令来验证我的结果:

tinyplay -D 0 /sdcard/test.wav

这个命令表示使用声卡 0 播放 /sdcard/test.wav 文件。可以听到我录制的音频内容,并且声音很清晰和响亮。

至此我的问题解决了,


其他Audio调试方法

以下是一些常用的命令和方法,用于调试音频相关问题:

1. 音频配置文件检查

在特定的平台,如全志,可能存在为音频设置而特定的配置文件或工具。可以在/system/etc或其他相关目录中查找这些文件 。

2. 使用dumpsys命令

dumpsys 它能够提供系统服务的详细信息。为了获取音频系统的详细信息,可以使用:

XXX # dumpsys media.audio_flinger
Library loudness_enhancer
  Loudness Enhancer / The Android Open Source Project
    UUID: fa415329-2034-4bea-b5dc-5b381c8d1e2c
    TYPE: fe3199be-aed0-413f-87bb-11260eb63cf1
    apiVersion: 00020000
    flags: 00000008
Library downmix
  Multichannel Downmix To Stereo / The Android Open Source Project
    UUID: 93f04452-e4fe-41cc-91f9-e475b6d1d69f
    TYPE: 381e49cc-a858-4aa2-87f6-e8388e7601b2
    apiVersion: 00020000
    flags: 00000008
Library visualizer
  Visualizer / The Android Open Source Project
    UUID: d069d9e0-8329-11df-9168-0002a5d5c51b
    TYPE: e46b26a0-dddd-11db-8afd-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000008
Library reverb
  Insert Preset Reverb / NXP Software Ltd.
    UUID: 172cdf00-a3bc-11df-a72f-0002a5d5c51b
    TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000048
  Auxiliary Preset Reverb / NXP Software Ltd.
    UUID: f29a1400-a3bb-11df-8ddc-0002a5d5c51b
    TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000001
  Insert Environmental Reverb / NXP Software Ltd.
    UUID: c7a511a0-a3bb-11df-860e-0002a5d5c51b
    TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
    apiVersion: 00020000
    flags: 00000048
  Auxiliary Environmental Reverb / NXP Software Ltd.
    UUID: 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
    TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
    apiVersion: 00020000
    flags: 00000001
Library bundle
  Volume / NXP Software Ltd.
    UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
    TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000050
  Equalizer / NXP Software Ltd.
    UUID: ce772f20-847d-11df-bb17-0002a5d5c51b
    TYPE: 0bed4300-ddd6-11db-8f34-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000048
  Virtualizer / NXP Software Ltd.
    UUID: 1d4033c0-8557-11df-9f2d-0002a5d5c51b
    TYPE: 37cc2c00-dddd-11db-8577-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000250
  Dynamic Bass Boost / NXP Software Ltd.
    UUID: 8631f300-72e2-11df-b57e-0002a5d5c51b
    TYPE: 0634f220-ddd4-11db-a0fc-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000248
Clients:
  pid: 2404
Notification Clients:
  pid: 1755
  pid: 1765
  pid: 2404
  pid: 4551
  pid: 5872
Global session refs:
  session   pid count
        9  2404     1
Hardware status: 0
Standby Time mSec: 3000

Output thread 0xae003d40 type 0 (MIXER):
  Thread name: AudioOut_D
  I/O handle: 13
  TID: 1823
  Standby: yes
  Sample rate: 44100 Hz
  HAL frame count: 2720
  HAL format: 0x1 (pcm16)
  HAL buffer size: 10880 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x1 (pcm16)
  Processing frame size: 4 bytes
  Pending config events: none
  Output device: 0x2 (SPEAKER)
  Input device: 0 (NONE)
  Audio source: 0 (default)
  Normal frame count: 2720
  Last write occurred (msecs): 2158695
  Total writes: 4459
  Delayed writes: 0
  Blocked in write: no
  Suspend count: 0
  Sink buffer : 0xae054000
  Mixer buffer: 0xae072000
  Effect buffer: 0xae057000
  Fast track availMask=0xfe
  Standby delay ns=3000000000
  AudioStreamOut: 0xae548150 flags 0x2 (PRIMARY)
  Frames written: 12128480
  Suspended frames: 0
  Hal stream dump:
  Thread throttle time (msecs): 1037
  AudioMixer tracks: 0x00000001
  Master mono: off
  FastMixer not initialized
  Stream volumes in dB: 0:-5.9, 1:-6, 2:0, 3:0, 4:0, 5:0, 6:0, 7:-6, 8:-6, 9:0, 10:0, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 0 are active
    Name Active Client Type      Fmt Chn mask Session fCount S F SRate  L dB  R dB    Server Main buf  Aux Buf Flags UndFrmCnt
       0     no   2404    1 00000001 00000003       9   4512 S 1 48000  -inf  -inf  0005B6E0 0xae054000 0x0 0x600         0
  0 Effect Chains

USB audio module:
  No output streams.

  No input streams.

Reroute submix audio module:
 route[0] rate in=0 out=0, addr=[]
 route[1] rate in=0 out=0, addr=[]
 route[2] rate in=0 out=0, addr=[]
 route[3] rate in=0 out=0, addr=[]
 route[4] rate in=0 out=0, addr=[]
 route[5] rate in=0 out=0, addr=[]
 route[6] rate in=0 out=0, addr=[]
 route[7] rate in=0 out=0, addr=[]
 route[8] rate in=0 out=0, addr=[]
 route[9] rate in=48000 out=48000, addr=[]
a40-p1:/data/data # cat /proc/asound/cards
 0 [audiocodec     ]: audiocodec - audiocodec
                      audiocodec
 1 [fmidi          ]: MIDI Gadget - f_midi
                      MIDI Gadget
a40-p1:/data/data # dumpsys media.audio_flinger
Library loudness_enhancer
  Loudness Enhancer / The Android Open Source Project
    UUID: fa415329-2034-4bea-b5dc-5b381c8d1e2c
    TYPE: fe3199be-aed0-413f-87bb-11260eb63cf1
    apiVersion: 00020000
    flags: 00000008
Library downmix
  Multichannel Downmix To Stereo / The Android Open Source Project
    UUID: 93f04452-e4fe-41cc-91f9-e475b6d1d69f
    TYPE: 381e49cc-a858-4aa2-87f6-e8388e7601b2
    apiVersion: 00020000
    flags: 00000008
Library visualizer
  Visualizer / The Android Open Source Project
    UUID: d069d9e0-8329-11df-9168-0002a5d5c51b
    TYPE: e46b26a0-dddd-11db-8afd-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000008
Library reverb
  Insert Preset Reverb / NXP Software Ltd.
    UUID: 172cdf00-a3bc-11df-a72f-0002a5d5c51b
    TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000048
  Auxiliary Preset Reverb / NXP Software Ltd.
    UUID: f29a1400-a3bb-11df-8ddc-0002a5d5c51b
    TYPE: 47382d60-ddd8-11db-bf3a-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000001
  Insert Environmental Reverb / NXP Software Ltd.
    UUID: c7a511a0-a3bb-11df-860e-0002a5d5c51b
    TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
    apiVersion: 00020000
    flags: 00000048
  Auxiliary Environmental Reverb / NXP Software Ltd.
    UUID: 4a387fc0-8ab3-11df-8bad-0002a5d5c51b
    TYPE: c2e5d5f0-94bd-4763-9cac-4e234d06839e
    apiVersion: 00020000
    flags: 00000001
Library bundle
  Volume / NXP Software Ltd.
    UUID: 119341a0-8469-11df-81f9-0002a5d5c51b
    TYPE: 09e8ede0-ddde-11db-b4f6-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000050
  Equalizer / NXP Software Ltd.
    UUID: ce772f20-847d-11df-bb17-0002a5d5c51b
    TYPE: 0bed4300-ddd6-11db-8f34-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000048
  Virtualizer / NXP Software Ltd.
    UUID: 1d4033c0-8557-11df-9f2d-0002a5d5c51b
    TYPE: 37cc2c00-dddd-11db-8577-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000250
  Dynamic Bass Boost / NXP Software Ltd.
    UUID: 8631f300-72e2-11df-b57e-0002a5d5c51b
    TYPE: 0634f220-ddd4-11db-a0fc-0002a5d5c51b
    apiVersion: 00020000
    flags: 00000248
Clients:
  pid: 2404
Notification Clients:
  pid: 1755
  pid: 1765
  pid: 2404
  pid: 4551
  pid: 5872
Global session refs:
  session   pid count
        9  2404     1
Hardware status: 0
Standby Time mSec: 3000

Output thread 0xae003d40 type 0 (MIXER):
  Thread name: AudioOut_D
  I/O handle: 13
  TID: 1823
  Standby: yes
  Sample rate: 44100 Hz
  HAL frame count: 2720
  HAL format: 0x1 (pcm16)
  HAL buffer size: 10880 bytes
  Channel count: 2
  Channel mask: 0x00000003 (front-left, front-right)
  Processing format: 0x1 (pcm16)
  Processing frame size: 4 bytes
  Pending config events: none
  Output device: 0x2 (SPEAKER)
  Input device: 0 (NONE)
  Audio source: 0 (default)
  Normal frame count: 2720
  Last write occurred (msecs): 2540304
  Total writes: 4459
  Delayed writes: 0
  Blocked in write: no
  Suspend count: 0
  Sink buffer : 0xae054000
  Mixer buffer: 0xae072000
  Effect buffer: 0xae057000
  Fast track availMask=0xfe
  Standby delay ns=3000000000
  AudioStreamOut: 0xae548150 flags 0x2 (PRIMARY)
  Frames written: 12128480
  Suspended frames: 0
  Hal stream dump:
  Thread throttle time (msecs): 1037
  AudioMixer tracks: 0x00000001
  Master mono: off
  FastMixer not initialized
  Stream volumes in dB: 0:-5.9, 1:-6, 2:0, 3:0, 4:0, 5:0, 6:0, 7:-6, 8:-6, 9:0, 10:0, 11:0, 12:0
  Normal mixer raw underrun counters: partial=0 empty=0
  1 Tracks of which 0 are active
    Name Active Client Type      Fmt Chn mask Session fCount S F SRate  L dB  R dB    Server Main buf  Aux Buf Flags UndFrmCnt
       0     no   2404    1 00000001 00000003       9   4512 S 1 48000  -inf  -inf  0005B6E0 0xae054000 0x0 0x600         0
  0 Effect Chains

USB audio module:
  No output streams.

  No input streams.

Reroute submix audio module:
 route[0] rate in=0 out=0, addr=[]
 route[1] rate in=0 out=0, addr=[]
 route[2] rate in=0 out=0, addr=[]
 route[3] rate in=0 out=0, addr=[]
 route[4] rate in=0 out=0, addr=[]
 route[5] rate in=0 out=0, addr=[]
 route[6] rate in=0 out=0, addr=[]
 route[7] rate in=0 out=0, addr=[]
 route[8] rate in=0 out=0, addr=[]
 route[9] rate in=48000 out=48000, addr=[]

3. 查看ALSA PCM设备

要查看当前系统中的ALSA PCM设备,使用以下命令:

XXX:/data/data # cat /proc/asound/pcm
00-00: SUNXI-CODEC sun8iw11codec-0 :  : playback 1 : capture 1

4. 列出所有声卡

要查看系统中所有的声卡,使用以下命令:

XXX:/data/data # cat /proc/asound/cards
 0 [audiocodec     ]: audiocodec - audiocodec
                      audiocodec
 1 [fmidi          ]: MIDI Gadget - f_midi
                      MIDI Gadget

5. 使用tinyalsa工具

tinyalsa是一个用于与ALSA接口交互的工具。要列出所有的混音器控制,比如使用:

XXX:/ # tinymix
Mixer name: 'audiocodec'
Number of controls: 48
ctl     type    num     name                                     value
0       ENUM    1       codec hub mode                           hub_disable
1       INT     1       digital volume                           63
2       INT     1       Headphone volume                         59
3       INT     2       LINEIN Mixer volume                      3 3
4       INT     1       FM gain volume                           3
5       INT     1       LINEIN gain volume                       3
6       INT     2       MIC gain volume                          3 3
7       INT     1       phoneout volume                          3
8       INT     1       MIC1 boost volume                        4
9       INT     1       MIC2 boost volume                        4
10      INT     1       ADC gain volume                          3
11      ENUM    1       MIC2 Mux                                 MIC2IN
12      ENUM    1       HPL Mux                                  DAC
13      ENUM    1       HPR Mux                                  DAC
14      BOOL    1       Phone Out Mixer LOMIX Switch             Off
15      BOOL    1       Phone Out Mixer ROMIX Switch             Off
16      BOOL    1       Phone Out Mixer MIC2 Boost Switch        Off
17      BOOL    1       Phone Out Mixer MIC1 Boost Switch        Off
18      BOOL    1       Right Input Mixer LOMIX Switch           Off
19      BOOL    1       Right Input Mixer ROMIX Switch           Off
20      BOOL    1       Right Input Mixer FMR Switch             Off
21      BOOL    1       Right Input Mixer LINEINR Switch         Off
22      BOOL    1       Right Input Mixer LINEINLR Switch        Off
23      BOOL    1       Right Input Mixer MIC2 Boost Switch      On
24      BOOL    1       Right Input Mixer MIC1 Boost Switch      Off
25      BOOL    1       Left Input Mixer ROMIX Switch            Off
26      BOOL    1       Left Input Mixer LOMIX Switch            Off
27      BOOL    1       Left Input Mixer FML Switch              Off
28      BOOL    1       Left Input Mixer LINEINL Switch          Off
29      BOOL    1       Left Input Mixer LINEINLR Switch         Off
30      BOOL    1       Left Input Mixer MIC2 Boost Switch       On
31      BOOL    1       Left Input Mixer MIC1 Boost Switch       On
32      BOOL    1       Right Output Mixer DACL Switch           Off
33      BOOL    1       Right Output Mixer DACR Switch           On
34      BOOL    1       Right Output Mixer FMR Switch            Off
35      BOOL    1       Right Output Mixer LINEINR Switch        Off
36      BOOL    1       Right Output Mixer LINEINLR Switch       Off
37      BOOL    1       Right Output Mixer MIC2 Boost Switch     Off
38      BOOL    1       Right Output Mixer MIC1 Boost Switch     Off
39      BOOL    1       Left Output Mixer DACR Switch            Off
40      BOOL    1       Left Output Mixer DACL Switch            On
41      BOOL    1       Left Output Mixer FML Switch             Off
42      BOOL    1       Left Output Mixer LINEINL Switch         Off
43      BOOL    1       Left Output Mixer LINEINLR Switch        Off
44      BOOL    1       Left Output Mixer MIC2 Boost Switch      Off
45      BOOL    1       Left Output Mixer MIC1 Boost Switch      Off
46      BOOL    1       Headphone Switch                         On
47      BOOL    1       Phoneout Speaker Switch                  Off

6. 查看音频相关日志

使用logcat工具,可以查看与系统音频相关的日志 是否存在问题报错:

logcat | grep -i audio

7. 查看内核日志

dmesg命令可以看看内核日志,检查下音频驱动是否存在问题 报错:

dmesg | grep -i audio

总结

通过这个过程,学习了如何使用全志Android平台的 声卡驱动来录制和播放音频,特别是如何使用 MIC1 作为录音输入源,也学习了如何使用 tinyalsa 这个工具来查看和设置声卡参数和设备。

我希望这篇博客对你有所帮助,如果有任何问题或建议,请在评论区留言。谢谢!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android蓝牙和线同时播放音频是可以实现的,需要使用AudioManager的多媒体音量控制和AudioTrack进行音频播放。 具体实现步骤如下: 1. 获取系统AudioManager实例。 ``` AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); ``` 2. 将多媒体音量设置为最大值。 ``` audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC), 0); ``` 3. 初始化AudioTrack,指定音频采样率、声道数和音频格式。 ``` int sampleRate = 44100; int channelConfig = AudioFormat.CHANNEL_OUT_STEREO; int audioFormat = AudioFormat.ENCODING_PCM_16BIT; int bufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat); AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, bufferSize, AudioTrack.MODE_STREAM); ``` 4. 将音频数据写入AudioTrack。 ``` audioTrack.write(audioData, 0, audioData.length); ``` 5. 启动AudioTrack播放音频。 ``` audioTrack.play(); ``` 同时,如果要实现Android蓝牙音频播放录制,需要使用BluetoothA2dp和BluetoothHeadsetProfile代表蓝牙A2DP和耳机协议,并使用MediaRecorder进行录制。 具体实现步骤如下: 1. 获取系统BluetoothAdapter实例。 ``` BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); ``` 2. 获取蓝牙A2DP和耳机协议的代表实例。 ``` BluetoothProfile a2dpProfile = bluetoothAdapter.getProfileProxy(context, new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.A2DP) { a2dpProfile = (BluetoothA2dp) proxy; } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.A2DP) { a2dpProfile = null; } } }, BluetoothProfile.A2DP); BluetoothProfile headsetProfile = bluetoothAdapter.getProfileProxy(context, new BluetoothProfile.ServiceListener() { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { headsetProfile = (BluetoothHeadset) proxy; } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { headsetProfile = null; } } }, BluetoothProfile.HEADSET); ``` 3. 连接蓝牙设备。 ``` BluetoothDevice device = bluetoothAdapter.getRemoteDevice(deviceAddress); a2dpProfile.connect(device); headsetProfile.connect(device); ``` 4. 使用MediaRecorder进行录制。 ``` MediaRecorder mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); mediaRecorder.setOutputFile(outputFile); mediaRecorder.prepare(); mediaRecorder.start(); ``` 5. 使用AudioTrack进行播放。 ``` int sampleRate = 44100; int channelConfig = AudioFormat.CHANNEL_OUT_STEREO; int audioFormat = AudioFormat.ENCODING_PCM_16BIT; int bufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat); AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, bufferSize, AudioTrack.MODE_STREAM); audioTrack.play(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值