gpt4 book ai didi

android - 具有不同按钮 View 的多线程 : Android

转载 作者:搜寻专家 更新时间:2023-11-01 09:33:10 24 4
gpt4 key购买 nike

所以我正在编写一个 android 代码,其中有 3 个按钮:录制、暂停、取帧。 Record 按钮录制视频,pause 按钮​​暂停 VideoView 中显示的视频,Take frame 按钮显示 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 。”而且,如果我想再添加一个 PLAY(播放暂停的视频)按钮,那么我应该如何编写它,我无法理解。有人可以在这里帮助我如何在 Android 中线程化这样的程序吗?

最佳答案

View 对象只能由 UI 线程修改或执行任何操作如果另一个线程试图处理 View 对象,它应该这样调用,

runOnUiThread(new Runnable() {
@Override
public void run() {
// do the view operation here
}
});

更多信息可以引用this , this

关于android - 具有不同按钮 View 的多线程 : Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527265/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com