0
Мне нужно записать звук с устройства Android. Начало записи работает нормально, но я не могу остановить запись звука. Я получаю ошибку исключения нулевого указателя. Я обращаюсь к start()
и stop()
от других классов. Когда я использую метод stop
, запись имеет значение NULL.Исключение Null Pointer при остановке аудиозаписей
Вот мой аудио класс
private String getFilename(){
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath,AUDIO_RECORDER_FOLDER);
if(!file.exists()){
file.mkdirs();
}
return (file.getAbsolutePath() + "/Questionnair_" + System.currentTimeMillis() + file_exts[currentFormat]);
}
public String startRecording(){
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(getFilename());
recorder.setOnErrorListener(errorListener);
recorder.setOnInfoListener(infoListener);
try {
recorder.prepare();
recorder.start();
//dbstore(getFilename());
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private MediaRecorder.OnErrorListener errorListener = new MediaRecorder.OnErrorListener() {
@Override
public void onError(MediaRecorder mr, int what, int extra) {
AppLog.logString("Error: " + what + ", " + extra);
}
};
public static Context getAppContext()
{
return Audio.context;
}
private MediaRecorder.OnInfoListener infoListener = new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
AppLog.logString("Warning: " + what + ", " + extra);
}
};
public void stopRecording(View v) {
// TODO Auto-generated method stub
System.out.println("stoping");
try {
if (null != recorder) {
System.out.println("recrder is null");
recorder.stop();
recorder.release();
recorder = null;
}
} catch (IllegalStateException e) {
// it is called before start()
e.printStackTrace();
} catch (RuntimeException e) {
// no valid audio/video data has been received
e.printStackTrace();
}
}
Вот код, как я доступ к методам
new Audio().startRecording();
new Audio().stopRecording();
Как исправить эту проблему для остановки записи звука
Можете ли вы показать больше своего кода – Abhishek
есть полный класс аудио и метод вызова кода.Что вы хотите больше? –
проблема поиска между методом stopRecording, тем, что вы вызываете, и тем, что вы реализовали [с параметром просмотра], пожалуйста, проверьте. Кстати, не вызывайте stopRecording с новым экземпляром вашего класса аудио, используйте тот же экземпляр, с которым вы вызываете метод start – Abhishek