| 
 在 Android Studio 中使用 Java 的 javax.sound.sampled.AudioFormat 类通常不是直接可行的,因为 Android 平台并不完全支持 Java 的 javax.sound.sampled 包,这部分 API 主要设计用于桌面 Java 应用,并不适用于 Android。 解决方案如果你需要在 Android 应用中处理音频(例如播放或录制音频),你应该使用 Android 提供的音频 API。Android 提供了自己的音频管理类,例如 AudioTrack 和 AudioRecord,这些类允许你在 Android 设备上更高效地处理音频。 1. 使用 AudioTrack 播放音频- import android.media.AudioFormat;
 
 - import android.media.AudioManager;
 
 - import android.media.AudioTrack;
 
  
- public class AudioPlayer {
 
 -     private AudioTrack audioTrack;
 
 -     private byte[] audioBuffer;
 
  
-     public AudioPlayer(int sampleRate, int channelConfig, int audioFormat, int bufferSize) {
 
 -         audioBuffer = new byte[bufferSize];
 
 -         int minBufferSize = AudioTrack.getMinBufferSize(sampleRate, channelConfig, audioFormat);
 
 -         if (bufferSize < minBufferSize) {
 
 -             bufferSize = minBufferSize;
 
 -             audioBuffer = new byte[bufferSize];
 
 -         }
 
 -         audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, sampleRate, channelConfig, audioFormat, bufferSize, AudioTrack.MODE_STREAM);
 
 -     }
 
  
-     public void play() {
 
 -         audioTrack.play();
 
 -         audioTrack.write(audioBuffer, 0, audioBuffer.length);
 
 -     }
 
  
-     public void stop() {
 
 -         audioTrack.stop();
 
 -         audioTrack.release();
 
 -     }
 
 - }
 
 
  复制代码 2. 使用 AudioRecord 录制音频 
- import android.media.AudioFormat;
 
 - import android.media.AudioRecord;
 
 - import android.media.MediaRecorder;
 
  
- public class AudioRecorder {
 
 -     private AudioRecord audioRecord;
 
 -     private int sampleRate = 44100; // 采样率
 
 -     private int channelConfig = AudioFormat.CHANNEL_IN_MONO; // 单声道
 
 -     private int audioFormat = AudioFormat.ENCODING_PCM_16BIT; // 采样格式
 
 -     private int bufferSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat);
 
 -     private byte[] audioBuffer;
 
  
-     public AudioRecorder() {
 
 -         audioBuffer = new byte[bufferSize];
 
 -         audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, channelConfig, audioFormat, bufferSize);
 
 -     }
 
  
-     public void startRecording() {
 
 -         audioRecord.startRecording();
 
 -         new Thread(new Runnable() {
 
 -             public void run() {
 
 -                 while (true) { // 循环读取数据直到停止录音
 
 -                     int numberOfBytesRead = audioRecord.read(audioBuffer, 0, bufferSize);
 
 -                     // 处理音频数据,例如保存到文件或进一步处理
 
 -                 }
 
 -             }
 
 -         }).start();
 
 -     }
 
  
-     public void stopRecording() {
 
 -         audioRecord.stop();
 
 -         audioRecord.release();
 
 -     }
 
 - }
 
 
  复制代码 注意事项:- 1、在使用 Android 的音频 API 时,确保你了解每个参数(如采样率、通道配置和音频格式)对你的应用性能和音质的影响。
 - 2、处理音频数据时,考虑到性能和资源使用,特别是在主线程中避免进行耗时的操作。通常建议使用单独的线程来处理音频数据的读写。
 - 3、上述代码示例仅为基本框架,实际应用中你可能需要根据具体需求调整参数和处理逻辑。例如,在录制音频时,你可能需要将数据
 - 4、写入文件或通过网络发送。在播放音频时,你可能需要从文件或网络读取
 
 
  
 
 
 
 |