【发布时间】:2015-12-28 16:28:34
【问题描述】:
所以我是 java 新手,正在使用某人的开源代码进行 android 开发。我想在另一个活动中使用这个程序中的变量颜色。我尝试将 void 更改为 int ,然后在代码末尾返回颜色,但这并没有什么不同,代码也不起作用。我很困惑为什么 void 不返回任何东西,但 int 返回一个整数。我的问题是如何从该代码中获取变量颜色的值并将其存储在另一个变量中或使变量颜色本身,以便我可以在我的 android 应用程序的其他活动中使用它。这是我的代码:
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
【问题讨论】:
-
如果你从
void更改为int然后在方法中添加一个return语句,返回值。 -
onPreviewFrame是来自android.hardware.Camera.PreviewCallback的回调。不确定您是如何设法将void更改为int并且您的代码仍然有效