我是java / Android的新手,并且在使用简单的录制应用时遇到了麻烦。 我一直在关注这个教程here,虽然我认为我在最后,我的应用程序无效。这是我的.java代码:
public class MainActivity extends Activity {
private MediaRecorder audioRecorder;
private String outFile = null;
private Button record, stop, play;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
record = (Button)findViewById(R.id.recordButton);
stop = (Button)findViewById(R.id.stopButton);
play = (Button)findViewById(R.id.playButton);
stop.setEnabled(false);
play.setEnabled(false);
outFile = Environment.getExternalStorageDirectory().getAbsolutePath()+"/myRec.3gp";
audioRecorder = new MediaRecorder();
audioRecorder.reset();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
audioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
audioRecorder.setOutputFile(outFile);
}
public void record(View view){
try {
audioRecorder.prepare();
audioRecorder.start();
}
catch(IllegalStateException ise){
ise.printStackTrace();
}
catch(IOException ioe) {
ioe.printStackTrace();
}
record.setEnabled(false);
stop.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recording...", Toast.LENGTH_SHORT).show();
}
public void stop(View view){
audioRecorder.stop();
audioRecorder.release();
audioRecorder = null;
stop.setEnabled(false);
play.setEnabled(true);
Toast.makeText(getApplicationContext(), "Recorded successfully.", Toast.LENGTH_SHORT).show();
}
public void play(View view) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException{
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(outFile);
mp.prepare();
mp.start();
Toast.makeText(getApplicationContext(), "Playing...", Toast.LENGTH_SHORT).show();
}
}
我已经确保在我的xml文件中包含正确的使用权限,以用于外部存储和录制音频。
当我运行应用程序时,我没有收到任何警告,但是我按下了录制按钮,没有任何反应。任何人都可以帮我看到我忽略的任何明显的东西吗?非常感谢!
我在Android Studio中使用win7并在摩托罗拉Moto G w / Android 4.4上进行测试。
答案 0 :(得分:0)
我正在用代码回答我自己的问题只是为了完整性,但所有的归功于那些指导我的那个人。
我根本没有设置按钮在点击时做任何事情。所以我需要更改我的xml以在点击时调用方法。我将此行添加到xml中的每个按钮(其中record是方法名称)。
android:onClick="record"
再次感谢immibis提供的帮助。