介绍
这篇文章主要介绍了Android如何实现伴奏录音合成MP3,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。
具体内容如下
基本实现思路如下:
1。利用Android自带的录音类(AudioRecord)实现录音。
,/* * *,才能播放伴奏 ,*/,private MediaPlayer 运动员;/* * *,才能返回按钮 ,*/,private ImageView  btnBack;/* * *,才能切换歌曲 ,*/,private Button  btnSwitchSong;/* * *,才能伴唱时长 ,*/,private TextView  tv_recod_time;/* * *,才能歌词视图 ,*/,private LyricView  lv_lyric;/* * *,才能开始录制 ,*/,private Button  btnPlay;/* * *,才能标题 ,*/,private TextView  ivTitle; ,private boolean canPlay =,真的; ,private boolean isPause =,假; ,/* * * *,才能背景音乐模式 ,*/,private BackgroudMusicMode mode =, BackgroudMusicMode.Accompany;/* * *,才能歌曲id ,*/,private String  songId;/* * *,才能歌曲名称 ,*/,private String  songName;/* * *,才能歌手名字 ,*/,private String  singerName;/* * *,才能伴奏文件 ,*/,private File 文件;/* * *,才能是否正在录制 ,*/,private boolean isStart =,假;/* * *,才能录音状态 ,*/,private boolean starting =,假;/* * *,才能伴奏时间 ,*/,private int bztimetmp =, 0;/* * *,才能伴奏时间 ,*/,private String bztime =,““ ,/* * *,才能录制时间 ,*/,private int  recordTimeLength=0;/* * *,才能更新伴奏时间 ,*/,private RecordTask rt =,空; ,/* * *,才能录制频率,单位赫兹。这里的值注意了,写的不好,可能实例化AudioRecord对象的时候,会出错。我开始写成11025就不行。这取决于硬件设备 *,才能设置音频采样率,44100年是目前的标准,但是某些设备仍然支持22050,16000,11025 ,*/,private int sampleRateInHz =, 44100;/* * *,才能设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道 ,*/,private int channelConfig =, AudioFormat.CHANNEL_CONFIGURATION_MONO; ,/* * *,才能音频数据格式:PCM 16位每个样本。保证设备支持.PCM 8位每个样本。不一定能得到设备支持。 ,*/,private int audioFormat =, AudioFormat.ENCODING_PCM_16BIT; ,/* * *,才能调整播放音量 ,*/,private AudioManager  audioManager; ,/* * *,才能最大音量 ,*/,private int maxVolume =, 0; ,/* * *,才能当前音量 ,*/,private int currentVolume =, 0; ,/* * *,才能AudioRecord 写入缓冲区大小 ,*/,protected int  m_in_buf_size;/* * *,才能录制音频对象 ,*/,private AudioRecord  mRecorder;/* * *,才能录入的字节数组 ,*/,private byte [], m_in_bytes;/* * *,才能存放录入字节数组的大小 ,*/,private LinkedList< byte[]祝辞,m_in_q;/* * *,才能AudioTrack 播放缓冲大小 ,*/,private int  m_out_buf_size;/* * *,才能播放音频对象 ,*/,private AudioTrack  mAudioTrack;/* * *,才能播放的字节数组 ,*/,private byte [], m_out_bytes;/* * *,才能录制音频线程 ,*/,private Thread 记录;/* * *,才能播放音频线程 ,*/,private Thread ;/* * *,才能让线程停止的标志 ,*/,private boolean flag =,真的;/* * *,才能是否启动回声 ,*/,private boolean room_flag =,真的; , ,/* * *上面有个播放歌词的组件 ,/* * * *,才能初始化 ,*/,private void  init (), { ,, audioManager 才能=,(AudioManager) getSystemService (Context.AUDIO_SERVICE); 时间=maxVolume 才能;audioManager.getStreamMaxVolume (AudioManager.STREAM_VOICE_CALL); 时间=currentVolume 才能;audioManager.getStreamVolume (AudioManager.STREAM_VOICE_CALL); registerHeadsetPlugReceiver才能(); ycApplication 才能=,(YueChangApplication), getApplication (); 时间=coverDao 才能;new CoverDao (getApplicationContext ()); Bundle 才能;Bundle =, getIntent () .getExtras (); 时间=songId 才能;bundle.getString (“songId"); 时间=songName 才能;bundle.getString (“songName"); 时间=singerName 才能;bundle.getString (“singerName"); null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null nullAndroid如何实现伴奏录音合成MP3