Grabar sonido Y reproducir sonido modulado En Android?

Hola estoy haciendo una aplicación relacionada con la modulación de sonido Necesito saber cómo grabar un sonido y modular el sonido grabado en otra voz. Como Talking Tom Cat Application. Había intentado una solución de la pila sobre el flujo de aquí

Y De Otro Blog Blog Dirección

Pero no conseguí ninguna idea. ¿Puede cualquier uno por favor darme algunas ideas o solución?

Al fin he encontrado la solución esto puede ayudar a alguien

http://android-er.blogspot.in/2012/06/implement-voice-changer-by-changing.html

código

public class Sound_modActivity extends Activity { Integer[] freqset = {11025, 16000, 22050, 44100}; private ArrayAdapter<Integer> adapter; Spinner spFrequency; Button startRec, stopRec, playBack; Boolean recording; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); startRec = (Button)findViewById(R.id.startrec); stopRec = (Button)findViewById(R.id.stoprec); playBack = (Button)findViewById(R.id.playback); startRec.setOnClickListener(startRecOnClickListener); stopRec.setOnClickListener(stopRecOnClickListener); playBack.setOnClickListener(playBackOnClickListener); spFrequency = (Spinner)findViewById(R.id.frequency); adapter = new ArrayAdapter<Integer>(this, android.R.layout.simple_spinner_item, freqset); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spFrequency.setAdapter(adapter); } OnClickListener startRecOnClickListener = new OnClickListener(){ public void onClick(View arg0) { Thread recordThread = new Thread(new Runnable(){ public void run() { recording = true; startRecord(); } }); recordThread.start(); }}; OnClickListener stopRecOnClickListener = new OnClickListener(){ public void onClick(View arg0) { recording = false; }}; OnClickListener playBackOnClickListener = new OnClickListener(){ public void onClick(View v) { playRecord(); } }; private void startRecord(){ File file = new File(Environment.getExternalStorageDirectory(), "test.pcm"); int sampleFreq = (Integer)spFrequency.getSelectedItem(); try { file.createNewFile(); OutputStream outputStream = new FileOutputStream(file); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); DataOutputStream dataOutputStream = new DataOutputStream(bufferedOutputStream); int minBufferSize = AudioRecord.getMinBufferSize(sampleFreq, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT); short[] audioData = new short[minBufferSize]; AudioRecord audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleFreq, 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(); 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(); int sampleFreq = (Integer)spFrequency.getSelectedItem(); AudioTrack audioTrack = new AudioTrack( AudioManager.STREAM_MUSIC, sampleFreq, AudioFormat.CHANNEL_CONFIGURATION_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(); } } } 
  • Cómo iniciar una tarea de fondo de larga ejecución en el servicio de Android
  • OnServiceConnected nunca llamado después del método bindService
  • Cómo saber si el usuario está en la pantalla de bloqueo desde el servicio
  • cómo abrir la configuración de accesibilidad de mi aplicación directamente?
  • GCM de Android SERVICE_NOT_AVAILABLE
  • Servicio de ejecución en el fondo?
  • Cómo utilizar NotificationCompat.Builder y startForeground?
  • Android: uso de la red en un servicio
  • NotificationManager.cancel () no funciona para mí
  • Llamar a getLayoutInflater () en lugares que no están en actividad
  • Adquisición de instancia del servicio de fondo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.