Я начинаю с Android и Java, и мой английский не очень хорош (извините). Я делаю приложение, которое сравнивает 2 снимка, принимаемых камерой, и возвращает значение поплавка = отношение идентичных пикселей на 2 изображениях.Android - Получение возвращаемого значения потока
public static float comparePic(String img_1, String img_2){
Bitmap bitmap1 = BitmapFactory.decodeFile(img_1);
Bitmap bitmap2 = BitmapFactory.decodeFile(img_2);
int equ = 0;
//get one height and one width because we assume that pictures have always same sizes
int h = bitmap1.getHeight();
int w = bitmap1.getWidth();
for(int y=0;y<h;y++){
for (int x=0;x<w;x++){
int pixel1 = bitmap1.getPixel(x,y);
int pixel2 = bitmap2.getPixel(x,y);
//alpha doesn't matter, they're jpg
int redValue1 = Color.red(pixel1);
int redValue2 = Color.red(pixel2);
int greenValue1 = Color.green(pixel1);
int greenValue2 = Color.green(pixel2);
int blueValue1 = Color.blue(pixel1);
int blueValue2 = Color.blue(pixel2);
if (redValue1==redValue2 && greenValue1==greenValue2 && blueValue1==blueValue2){
equ++;
}
}
}
return (float)equ/(h*w);
}
Когда я исполню его, у меня есть такое сообщение: «Я/Хореограф: Пропущено 730 кадров Приложение может делать слишком много работы на своем главном потоке.» Итак, я попытался сделать это с помощью потока, но я всегда терпеть неудачу, потому что не знаю, как вернуть значение. Futhermore, пропуская рамки, я думаю, это неправильное соотношение. Я знаю, что это асинхронная работа, так что я могу сделать? Спасибо!
Не могли бы вы показать нам, как вы попытались решить вашу проблему с помощью потока? – DennisW