我正在開發android音樂鋼琴應用程序。在我使用的Soundpool播放音頻,但我怎麼能記錄聲音,使用戶能唱能帶錄製音樂一起錄製自己的歌聲跳動音樂應用程序的錄音聲音
-3
A
回答
0
下面是WO功能中的一個記錄和其他播放
private void startRecord(){
File file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
try {
file.createNewFile();
recording=true;
OutputStream outputStream = new FileOutputStream(file);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream);
int minBufferSize = AudioRecord.getMinBufferSize(SmpleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT);
short[] audioData = new short[minBufferSize];
AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC,
SmpleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
minBufferSize);
AudioManager audio=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
audio.setMicrophoneMute(true);
//int sessionId=audioRecord.getAudioSessionId();
// NoiseSuppressor.create(sessionId);
audioRecord.startRecording();
while(recording){
int numberOfShort = audioRecord.read(audioData, 0, minBufferSize);
for(int i = 0; i < numberOfShort; i++){
dataOutputStream.writeShort(audioData[i]);
}
}
audioRecord.stop();
dataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
void playRecord(){
File file = new File(Environment.getExternalStorageDirectory(), "test.pcm");
int shortSizeInBytes = Short.SIZE/Byte.SIZE;
int bufferSizeInBytes = (int)(file.length()/shortSizeInBytes);
short[] audioData = new short[bufferSizeInBytes];
try {
InputStream inputStream = new FileInputStream(file);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
DataInputStream dataInputStream = new DataInputStream(bufferedInputStream);
int i = 0;
while(dataInputStream.available() > 0){
audioData[i] = dataInputStream.readShort();
i++;
}
dataInputStream.close();
AudioTrack audioTrack = new AudioTrack(
AudioManager.STREAM_MUSIC,
SmpleRate,
AudioFormat.CHANNEL_OUT_MONO,
AudioFormat.ENCODING_PCM_16BIT,
bufferSizeInBytes,
AudioTrack.MODE_STREAM);
audioTrack.play();
audioTrack.write(audioData, 0, bufferSizeInBytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
+0
什麼是採樣率? – user3592848
+0
這裏我們把整數值。您可以使用44100代替採樣率,因爲這可以被所有設備識別 – yasiriqbal776
相關問題
- 1. 類似的聲音音樂
- 2. 爲程序音樂尋找免費的單獨音符聲音
- 3. 編程音樂音序器
- 4. C#音樂/聲音同步
- 5. 通知聲音interupting音樂
- 6. Java聲音。暫時靜音背景音樂並播放聲音
- 7. 停止音樂應用播放音樂
- 8. 我的iPhone應用程序與音頻單元播放的錄音聲音
- 9. 音樂轉錄
- 10. 流音樂在我的應用程序
- 11. 控制應用程序內的音樂音量[iOS]
- 12. iOS音樂應用程序的音頻框架
- 13. Android音樂播放器應用程序的語音命令
- 14. 阻止其他聲音/音樂
- 15. 音樂Y或音樂N
- 16. PulpCore音樂播放 - 循環用聲音和動畫音量
- 17. 如何在iOS應用程序中播放聲音以及背景音樂?
- 18. iPod - 讓本機音樂應用程序在後臺播放聲音
- 19. 從應用程序播放音樂時在Xcode中播放聲音
- 20. 如何在Android應用程序中從音樂庫中排除聲音剪輯
- 21. 排序音樂
- 22. 將音頻剪切爲背景音樂 - PhoneGap應用程序
- 23. UIApplication -beginReceivingRemoteControlEvents導致音樂應用程序接管音頻
- 24. 在應用程序中銷售音樂
- 25. Android應用程序與音樂
- 26. Android,建立音樂應用程序?
- 27. iPad音樂應用程序,如界面
- 28. Android應用程序版權音樂
- 29. 創建簡單音樂應用程序
- 30. Android音樂流媒體應用程序
您需要展示您所做的工作以及問題所在。不要指望爲你完成這項工作。 – slybloty