当用户按下按钮时,我启动了我的MediaRecorder:
recorder.start();
当用户按下另一个按钮时,我用recorder.stop();
停止它。我该怎么做:
while(recorder is recording){
//do stuff here
}
我也有recorder.setMaxDuration(5000);
有没有简单的方法来完成这项任务?
答案 0 :(得分:1)
我已经编写了一个简单的例子,说明你正在尝试使用swing做什么。 (我从未做过任何Android编程,但希望这些想法可以帮助你。)
点击开始将开始一个新线程&每秒打印“做某事”。 单击停止将停止该线程打印。
<强> GUI 强>
public class MyGui {
static JButton startButton;
static JButton stopButton;
static RecorderThread thread;
public static void main(String[] args) throws ParseException {
startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
thread = new RecorderThread();
thread.start();
startButton.setEnabled(false);
stopButton.setEnabled(true);
}
});
stopButton = new JButton("stop");
stopButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
thread.kill();
startButton.setEnabled(true);
stopButton.setEnabled(false);
}
});
JFrame frame = new JFrame("Media Recorder");
JPanel panel = new JPanel();
panel.add(startButton);
panel.add(stopButton);
frame.getContentPane().add(panel);
frame.setSize(100, 100);
frame.setVisible(true);
}
}
<强>发强>
public class RecorderThread extends Thread {
volatile boolean isRunning = true;
public void kill(){
isRunning = false;
}
/* (non-Javadoc)
* @see java.lang.Thread#run()
*/
@Override
public void run() {
while(isRunning){
System.out.println("Do stuff");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
一切顺利!
答案 1 :(得分:0)
一旦介质记录器启动了您要执行的代码,就应该创建一个Thread。最后,当用户按下结束按钮时,您应该更改条件控制以便让线程完成。