/ / Obtener Objeto de la memoria usando la dirección de memoria - android, memory, mediarecorder

Obtenga objetos de la memoria usando la dirección de la memoria: android, memory, mediarecorder

Quiero saber cómo obtener un Objeto de la memoria, en mi caso, un MediaRecorder. Aquí está mi clase:

Clase Mymic:

public class MyMic  {

MediaRecorder recorder2;
File file;
private Context c;


public MyMic(Context context){
this.c=context;
recorder2=  new MediaRecorder();
}


private void stopRecord() throws IOException {
recorder2.stop();
recorder2.reset();
recorder2.release();

}


private void startRecord() {

recorder2.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder2.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder2.setOutputFile(file.getPath());
try {
recorder2.prepare();
recorder2.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}



}

mi clase de receptor:

 public class MyReceiver extends BroadcastReceiver {

private Context c;
private MyMic myMic;
@Override
public void onReceive(Context context, Intent intent) {
this.c=context;
myMic = new MyMic(c);
if(my condition = true){
myMic.startRecord();
}else

myMic.stopRecord();
}

}

Entonces cuando estoy llamando startRecord() crea un nuevo MediaRecorder pero cuando instancia mi clase por segunda vez no puedo "recuperar mi Objeto. ¿Puedo recuperar mi MediaRecorder con su destinatario

Respuestas

1 para la respuesta № 1

Debe colocar su constructor para MediaRecorder dentro del constructor para la clase que está creando, en lugar de dentro del método startRecord () de esta manera:

public class MyMic  {

MediaRecorder recorder2;
File file;
private Context c;


public MyMic(Context context){
this.c=context;
recorder2=  new MediaRecorder();

}


private void stopRecord() throws IOException {
recorder2.stop();
recorder2.reset();
recorder2.release();

}


private void startRecord() {

recorder2.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder2.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder2.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder2.setOutputFile(file.getPath());
try {
recorder2.prepare();
recorder2.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

}



}

Además, no puedo entender exactamente lo que erestratando de hacerlo con la lógica dentro de su Constructor, pero probablemente no debería hacerlo de la manera en que lo hace. No debe hacer su clase de modo que tenga que hacer una nueva instancia de ella cada vez que quiera comenzar / detener la grabación. El objetivo final debe ser un objeto que cree una instancia y mantenga una referencia para que pueda llamar al inicio / detente cuando quieras.

¿Puedes publicar la actividad (u otra estructura de Android) que estás usando esta clase desde dentro? Si es así, puedo ayudarte a unir los dos de una manera más limpia.