Ich versuche, Audio in Android aufzunehmen, aber ich stehe vor einem Problem.Der Versuch, Audio aufzunehmen, aber die Nachricht "mediarecorder kam mit unbehandelten Ereignissen weg" und "Fatal signal 11 (SIGSEGV) ...."
Ich habe Start-und Stop-Tasten, "Start" zum Starten der Aufnahme und "Stop" zum Stoppen der Aufnahme.
Das Problem ist, wenn ich die Stopp-Taste drücken, dann protokolliert meine Anwendung eine Meldung "W/MediaRecorder (635): Mediendatensatz ging mit unbehandelten Ereignissen weg". (Start Funktion ist die Audiodatei richtig zu speichern.)
Dann, wenn ich wieder Start oder Stop Taste drücke, bekomme ich die Fehlermeldung "A/libc (743): Fatal Signal 11 (SIGSEGV) bei 0x00000010 (code = 1), Gewinde 743 (xample.recorder „) ist
Code of Aufzeichnungs Klasse unter:
/**
* Creates a new audio recording at the given path (relative to root of SD card).
*/
public AudioRecorder(String path) {
this.path = sanitizePath(path);
}
private String sanitizePath(String path) {
if (!path.startsWith("/")) {
path = "/" + path;
}
if (!path.contains(".")) {
path += ".3gp";
}
return Environment.getExternalStorageDirectory().getAbsolutePath() + path;
}
public void start() throws IOException {
String state = android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) {
throw new IOException("SD Card is not mounted. It is " + state + ".");
}
// make sure the directory we plan to store the recording in exists
File directory = new File(path).getParentFile();
if (!directory.exists() && !directory.mkdirs()) {
throw new IOException("Path to file could not be created.");
}
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(path);
try{
recorder.prepare();
}
catch(IOException e){
Log.e("Recorder","Recording failed");
}
recorder.start();
}
/**
* Stops a recording that has been previously started.
*/
public void stop() throws IOException {
recorder.stop();
recorder.release();
}
Code of Hauptaktivität ist unten:
/*
* */
public class Recorder extends Activity implements OnClickListener
{
private static final String TAG="Recorder";
AudioRecorder ar=new AudioRecorder("/TestAudio.3gp");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recorder);
final Button start = (Button) this.findViewById(R.id.btn_start);
start.setOnClickListener(this);
final Button stop = (Button) this.findViewById(R.id.btn_stop);
stop.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_recorder, menu);
return true;
}
public void onClick(View v) {
// TODO Auto-generated method stub
try{
switch (v.getId()) {
case R.id.btn_start:
ar.start();
Log.d("Recorder","Recorded");
Toast.makeText(this, "Controll returned from start function", Toast.LENGTH_LONG).show();
break;
case R.id.btn_stop:
ar.stop();
Toast.makeText(this, "Recording stopped; Starting MediaPlayer", Toast.LENGTH_SHORT).show();
//Toast.makeText(this, "Starting media player", Toast.LENGTH_LONG).show();
ar.startPlaying();
//Toast.makeText(this, "Recording stopped", Toast.LENGTH_LONG).show();
break;
}
}
catch(Exception e){
Log.e("Recorder", e.getMessage(), e);
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}
Dies ist nicht der vollständige Code? Ich sehe den Konstruktor hier nicht recorder = new MediaRecorder(); show all stacktrace, hast du weitere Ausnahmen erhalten? – dimetil
Ich habe dieses Tutorial http://www.benmccann.com/dev-blog/android-audio-recording-tutorial/ verwendet. Im Start-Button rufe ich die Funktion start auf und im Stop-Button rufe ich die Funktion stop auf ... Nach Drücken der Taste Start-Taste, ich drücke Stop und dann, wenn ich erneut die Start-Taste drücke, erhalte ich die Fehlermeldung "A/libc (743): Tödliches Signal 11 (SIGSEGV) bei 0x00000010 (Code = 1), Thread 743 (xample.recorder)" – blackfyre
Mein Fix https: // stackoverflow.com/a/47992111/4592448 – Fortran