我有一个开始按钮,用于启动音频记录,一个停止按钮,用于结束录音。
这是开始按钮的Java代码:
startbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//My code
}
});
这是停止按钮的Java代码:
stopbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//My code
}
});
如果需要,这是它们各自的XML布局:
<Button
android:id="@+id/btnRecord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="5dp"
android:layout_marginLeft="100dp"
android:layout_marginTop="120dp"
android:layout_marginBottom="100dp"
android:text="Start Recording" />
<Button
android:id="@+id/btnStop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="5dp"
android:layout_marginLeft="100dp"
android:layout_marginBottom="40dp"
android:text="Stop Recording" />
到目前为止,我使用“ setEnabled(True)”或“ false”来管理应用程序。相反,我需要将这些状态合并到单个按钮中,以便可以对更简单的UI进行“开始/停止”操作。还有更多按钮,但是希望在学习了如何操作后自行修复。干杯!
PS:为了节省空间,我键入了“ //我的代码”而不是实际的代码。如果需要,我可以提供我的代码。
更新:我的日志猫:
2019-02-27 13:17:29.634 8550-8550/com.android.greg.garec E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.android.greg.garec, PID: 8550
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaRecorder.stop()' on a null object reference
at com.android.greg.garec.MainActivity$1.onClick(MainActivity.java:96)
at android.view.View.performClick(View.java:6897)
at android.widget.TextView.performClick(TextView.java:12693)
at android.view.View$PerformClick.run(View.java:26101)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
答案 0 :(得分:0)
嘿,如果您想将两个动作都添加到一个按钮中,那么只需将布尔标志用于状态即可,例如,如果开始并设置了录制,则设置标志 isRecording = true 录制停止时 isRecording = false 。 (注意:在类中设置isRecording全局键)
startbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isRecording){
stopRecording();
isRecording=false;
startbtn.settext("Start Recording")
}else{
startRecording();
isRecording=true;
startbtn.settext("Stop Recording")
}
}
});
答案 1 :(得分:-1)
使用“自定义”复选框进行记录和停止。 并检查是否选中
答案 2 :(得分:-1)
使用可以将单个按钮与.setTag()一起使用
singleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(singleBtn.getTag().toString().equals("Stop")){
stopRecording();
startbtn.settext("Start Recording")
singleBtn.setTag("Record");
}else if(singleBtn.getTag().toString().equals("Record")){
startRecording();
startbtn.settext("Stop Recording")
singleBtn.setTag("Stop");
}
}
});