как сделать тост из другого потока (без runOnUiThread)

Мне нужно сделать тост Android из потока обработки, который является обычным для OpenCV, поэтому я не могу использовать runOnUiThread (), как предлагается здесь: Android: тост в ветке .

Большая часть этого кода взята из примера приложения CVCamera. Но те, кто не знаком, когда я нажимаю кнопку меню Surf, SURFProcessor вызывается так:

           else if (item.getTitle().equals("SURF")) {

                   defaultcallbackstack.addFirst(new SURFProcessor());
                   toasts(DIALOG_TUTORIAL_SURF, "");

           }

Этот поток процессора запускается так, что, когда я нажимаю кнопку камеры телефона (capturePress = true), делается снимок и обработка завершается. Я хочу вызвать метод тостов, как показано:

class SURFProcessor implements NativeProcessor.PoolCallback {

           @Override
           public void process(int idx, image_pool pool, long timestamp,
                           NativeProcessor nativeProcessor) {
                   if(capturePress) {
                           String processMsg = processor.processFeatures(idx, pool, cvcamera.DETECT_SURF);
                           capturePress = false;
                           toasts(PROCESS_MESSAGE, processMsg);
                   }
           }
}

Вот метод тостов, расположенный в основном классе, расширяющем Activity:

void toasts(int id, String msg) {
           switch (id) {
           case PROCESS_MESSAGE:
                   Toast.makeText(MMRapp.this, msg, Toast.LENGTH_LONG).show();
                   break;
.........

Прямо сейчас этот код выдает мне ошибку: «не удается создать обработчик внутри потока, который не вызвал Looper.prepare () ". Как мне вызвать метод тостов? Или возможно, чтобы метод тостов отслеживал изменение в processMsg? Если возможно, я могу обойтись отправкой processMsg или изменением переменной класса. По сути, Мне нужно обновить строку из этого потока процессора.

Большое спасибо, я предоставлю дополнительную информацию / код, если хотите.
-Tom

5
задан Community 23 May 2017 в 12:32
поделиться