【发布时间】:2015-08-25 10:17:25
【问题描述】:
我正在开发一个应用程序,每当您单击开始录制按钮来录制我的音频时,当我单击停止录制按钮时,音频录制就会停止并将其保存在 sdcard,myFolder 当我单击开始录制时,出现 java.lang.NullPointerException 错误,应用程序意外停止。我该如何解决? 请帮助我,我是一个新的安卓开发者。
public class MainActivity extends AppCompatActivity {
protected static final int request = 0;
Intent intent;
private MediaRecorder myRecorder;
Button btnStopRecord;
Button btnStarRecord;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final File dir = new File(Environment.getExternalStorageDirectory() + "/myFolder");
dir.mkdirs();
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
btnStarRecord = (Button) findViewById(R.id.StartRecording);
btnStarRecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Date date = new Date();
final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
myRecorder.setOutputFile(Environment.getExternalStorageDirectory() + "/myFolder" + "/" + dateFormat.format(date) + ".amr");
start(v);
}
});
btnStopRecord = (Button) findViewById(R.id.stopRecording);
btnStopRecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
stop(v);
}
});
}
private void stop(View v) {
try {
myRecorder.stop();
myRecorder.release();
myRecorder = null;
btnStopRecord.setEnabled(false);
btnStarRecord.setEnabled(true);
Toast.makeText(getApplicationContext(), "Stop recording...",
Toast.LENGTH_SHORT).show();
} catch (IllegalStateException e) {
// it is called before start()
e.printStackTrace();
} catch (RuntimeException e) {
// no valid audio/video data has been received
e.printStackTrace();
}
}
private void start(View view) {
try {
myRecorder.prepare();
myRecorder.start();
} catch (IllegalStateException e) {
// start:it is called before prepare()
// prepare: it is called after start() or before setOutputFormat()
e.printStackTrace();
} catch (IOException e) {
// prepare() fails
e.printStackTrace();
}}
08-25 13:59:54.036 21607-21607/com.example.mehrdad.myapplication E/AndroidRuntime: FATAL EXCEPTION: main java.lang.NullPointerException 在 com.example.mehrdad.myapplication.MainActivity$4.onClick(MainActivity.java:165) 在 android.view.View.performClick(View.java:2408) 在 android.view.View$PerformClick.run(View.java:8816) 在 android.os.Handler.handleCallback(Handler.java:587) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper.loop(Looper.java:123) 在 android.app.ActivityThread.main(ActivityThread.java:4633) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:521) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 在 dalvik.system.NativeStart.main(Native Method)
【问题讨论】:
-
发布您的堆栈跟踪..
-
发布完整的堆栈跟踪
-
@Vishwa ........
-
@PedroOliveira .... 请帮帮我
标签: java android audio audio-recording mediarecorder