Делаю приложение очистки галереи от ненужных изображений. В анализе есть несколько правил попиксельного анализа изображения - это занимает много времени, в течение которого на экране ничего не показывается (тёмный экран), работу приложения приходится контролировать по логам, хотя я хотел бы сделать чтобы процесс анализа изображения отображался на экране конечно. Хотя бы номер изображения которое сейчас анализируется.
То есть после выбора файла через стандартный файловый менеджер и отображения конечного результата анализа изображений в папке проходит много времени, в течение которого не видно что происходит, если не логировать работу приложения.
Часть кода с выбором файла для анализа взята с интернета, так что я не совсем понимаю, что надо изменить, чтобы активити отображалась и во время всего процесса анализа изображений.
public class MainActivity extends AppCompatActivity {
private static final int ACTIVITY_CHOOSE_FILE = 3;
TextView sourcePath;
TextView destPath;
TextView imageNumber;
ImageView imageOnProcess;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button chooseFolder = (Button) findViewById(R.id.choose_folder);
sourcePath = (TextView) findViewById(R.id.source_path);
destPath = (TextView) findViewById(R.id.destination_path);
imageNumber = (TextView) findViewById(R.id.imagenumber);
imageOnProcess = (ImageView) findViewById(R.id.imageOnProcess);
chooseFolder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent chooseFile;
Intent intent;
chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
chooseFile.setType("file/*");
intent = Intent.createChooser(chooseFile, "Choose a file");
startActivityForResult(intent, ACTIVITY_CHOOSE_FILE);
}
});
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) return;
if (requestCode == ACTIVITY_CHOOSE_FILE) {
Uri uri = data.getData();
String firstFilePath = getRealPathFromURI(uri);
//МНОГО КОДА ПОПИКСЕЛЬНОГО АНАЛИЗА ИЗОБРАЖЕНИЯ И ПЕРЕМЕЩЕНИЕ В НУЖНУЮ ПАПКУ
}
}
public String getRealPathFromURI(Uri contentUri) {
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
if (cursor == null) return null;
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}