Boa tarde!!
Estou a trabalhar com o sensor de proximidade para gravar um som, quando passo o dedo no sensor este começa a gravar, mas o problema é saber como faço quando ao retirar o dedo este para de gravar e passa para outra activity(onde posso reproduzir o som). O que quero fazer está como comentário no "onSensorChanged". Obrigado
Código:
import android.content.Context;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;
import java.io.IOException;
public class Classe1 extends ActionBarActivity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mProximity;
private MediaRecorder gravador;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_classe1);
gravador = new MediaRecorder();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public final void onSensorChanged(SensorEvent event) {
if(event.values[0] > 3 ){
}
else{
startRecording();
}
// stopRecording();
//Intent intent=new Intent(this, Reproduzir.class);
//startActivity(intent);
}
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onStop() {
super.onStop();
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.unregisterListener(this);
}
private void startRecording() {
gravador = new MediaRecorder();
gravador.setAudioSource(MediaRecorder.AudioSource.MIC);
gravador.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
gravador.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
String filename = Environment.getExternalStorageDirectory().getAbsolutePath() + "/test2.3gp";
gravador.setOutputFile(filename);
try {
gravador.prepare();
gravador.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(getBaseContext(), "A gravar....", Toast.LENGTH_SHORT).show();
}
private void stopRecording() {
gravador.stop();
gravador.release();
Toast.makeText(getBaseContext(), "Gravação concluída!!", Toast.LENGTH_SHORT).show();
}
public void close(View view) {
Intent botaofechar= new Intent(this, MainActivity.class);
startActivity(botaofechar);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setLogo(R.mipmap.micro);
getSupportActionBar().setDisplayUseLogoEnabled(true);
return true;
}
}