gpt4 book ai didi

java - 如何更改 void 方法以在 Java 中返回值

转载 作者:行者123 更新时间:2023-11-29 04:53:42 24 4
gpt4 key购买 nike

所以我是 java 的新手,正在使用某人的开源代码进行 android 开发。我想在另一个 Activity 中使用这个程序中的可变颜色。我尝试将 void 更改为 int,然后在代码末尾返回颜色,但这没有任何区别,代码也不起作用。我很困惑为什么 void 不返回任何东西,但 int 返回一个整数。我的问题是如何从此代码中获取变量颜色的值,并将其存储在另一个变量中或自行创建变量颜色,以便我可以在我的 android 应用程序的其他 Activity 中使用它。这是我的代码:

public void onPreviewFrame(byte[] data, Camera camera) {

try {
Camera.Size previewSize = camera.getParameters().getPreviewSize();
int height = previewSize.height;
int width = previewSize.width;

ColorModelConverter converter = new ColorModelConverter(height, width);
int[] pixels = converter.convert(data, this.colorFormat);

int color = pickColor(pixels, height, width);
updateColorData(color);

Log.i("FRAME PREVIEW", "Color updated");
} catch (RuntimeException oops) {
// Do nothing, exception is thrown because onPreviewFrame is called after camera is released
Log.i("FRAME PREVIEW", "RuntimeException thrown into onPreviewFrame");
}
}

如果有所不同,这里还有完整项目的 github 链接:https://github.com/adlebzelaznog/colometer

最佳答案

我假设问题是 onPreviewFrame 是一种继承方法,由系统/框架调用,而不是由您调用(假设它是此处提到的方法:http://developer.android.com/reference/android/hardware/Camera.PreviewCallback.html)。

在那种情况下,我会保持签名不变,然后将值保存在例如共享首选项,以便您可以在应用程序的其他部分访问颜色值 (http://developer.android.com/reference/android/content/SharedPreferences.html)。

你的代码看起来像这样:

public void onPreviewFrame(byte[] data, Camera camera) {

try {
Camera.Size previewSize = camera.getParameters().getPreviewSize();
int height = previewSize.height;
int width = previewSize.width;

ColorModelConverter converter = new ColorModelConverter(height, width);
int[] pixels = converter.convert(data, this.colorFormat);

int color = pickColor(pixels, height, width);
updateColorData(color);

storeColorInSharedPreferences(color); //save variable here

Log.i("FRAME PREVIEW", "Color updated");
} catch (RuntimeException oops) {
// Do nothing, exception is thrown because onPreviewFrame is called after camera is released
Log.i("FRAME PREVIEW", "RuntimeException thrown into onPreviewFrame");
}
}

public void storeColorInSharedPreferences(int color)
{
//Logic to store color in Shared Preferences
//Something like this: (not tested!)
SharedPreferences shared = getSharedPreferences("com.myapp.sharedpreferences", MODE_PRIVATE);
SharedPreferences.Editor editor = shared.edit();
editor.putInt("PREVIEW_KEY", color);
editor.commit();
}

然后在另一个 Activity 中你可以得到这样的值:

SharedPreferences shared = getSharedPreferences("com.myapp.sharedpreferences", MODE_PRIVATE);
int color = (shared.getInt("PREVIEW_KEY", 0));

示例取自:Get Android shared preferences value in activity/normal class

关于java - 如何更改 void 方法以在 Java 中返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497076/

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