所以我正在编写一个android代码,其中有3个按钮:录制、暂停、拍摄帧。录制按钮录制视频,暂停按钮暂停 VideoView 中显示的视频,拍摄帧按钮显示 imageView 中暂停的帧。现在我需要 3 个线程 - 一个主线程用于用户交互(暂停按钮),一个子线程记录视频(录制按钮),第二个子线程保存帧(拍摄帧按钮)。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mvideoview = (VideoView) findViewById(R.id.videoView);
imgview = (ImageView) findViewById(R.id.imageView);
mrecord = (Button) findViewById(R.id.button);
mpause = (Button) findViewById(R.id.button2);
mtakeframe = (Button) findViewById(R.id.button4);
mrecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dispatchTakeVideoIntent();
mvideoview.start();
}
});
mpause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mvideoview.pause();
}
});
mtakeframe.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bitmap bmp = takeFrame();
imgview.setImageBitmap(bmp);
}
});
}
private void dispatchTakeVideoIntent() {
//code directs towards the video recorder screen
}
protected void onActivityResult(int requestcode, int resultcode, Intent intent) {
//recorded video sent back and its path stored
}
public Bitmap takeFrame() {
//paused frame shown in imageView
}
我尝试将不同的线程放在不同按钮的 onClick(View view) 上,但最终应用程序崩溃,并显示错误“只有创建 View 层次结构的原始线程才能触摸其 View 。”另外,如果我想再添加一个“播放”按钮(播放暂停的视频),那么我应该如何编写它,我无法理解。有人可以帮助我如何在 Android 中线程化这样的程序吗?
最佳答案
View对象只能通过UI线程修改或执行任何操作如果另一个线程尝试处理View对象,它应该像这样调用,
runOnUiThread(new Runnable() {
@Override
public void run() {
// do the view operation here
}
});
关于android - 具有不同按钮 View 的多线程 : Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527265/