gpt4 book ai didi

java - 重复按钮按住回调

转载 作者:行者123 更新时间:2023-11-29 21:02:58 26 4
gpt4 key购买 nike

我在我的 Android 应用程序中实现了一个 Camera.PreviewCallback 来从纹理 View 中抓取帧,它工作正常。我想知道在按下按钮时继续重复此回调。

我的代码如下:

 This is the code for the Camera.PreviewCallback:

Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
Camera.Parameters parameters = camera.getParameters();
Size size = parameters.getPreviewSize();
YuvImage image = new YuvImage(data, parameters.getPreviewFormat(),size.width, size.height, null);
image.compressToJpeg(new Rect(0, 0, image.getWidth(), image.getHeight()), 90, out);
byte[] imageBytes = out.toByteArray();
Bitmap images = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
rev = new ArrayList<Bitmap>();
rev.add(images);

}
};

这是处理按钮按下的代码:

    button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
mCamera.setPreviewCallback(previewCallback);
break;
case MotionEvent.ACTION_UP:
// End
break;
}
return false;
}
});

再次强调一下,当按下按钮时如何使回调重复。谢谢

最佳答案

首先我们需要一种方法来检查 Button 是否仍然被按下。为此,定义一个名为 buttonPressed 的新 boolean 字段:

private boolean buttonPressed = false;

接下来我们定义Runnable,只要按下Button,我们就想运行:

private final Runnable buttonPressedRunnable = new Runnable() {
@Override
public void run() {
// Check if the Button is pressed
if(buttonPressed) {
// Insert whatever you want to do while the Button is pressed here
...

// Repost the Runnable with an appropriate delay
button.postDelayed(this, 100);
}
}
};

最后,在您的 OnTouchListener 中,您需要在 ACTION_DOWN 中将 buttonPressed 设置为 true 并再次设置为 ACTION_UP 中为 false。您还需要发布一次 buttonPressedRunnable,只要按下 Button,它就会重新发布。

button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
mCamera.setPreviewCallback(previewCallback);
buttonPressed = true;
button.post(buttonPressedRunnable);
break;
case MotionEvent.ACTION_UP:
buttonPressed = false;
break;
}
return false;
}
});

关于java - 重复按钮按住回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445951/

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