2015-11-03 3 views
1

Диалог предупреждения появляется всплывающее окно 27 раз. У меня есть обработчик и внутри обработчика, я использую CountDownTimer. Диалоговое окно «Предупреждение» включено в OnFinish CountDownTimer. Ниже приведены мои коды.Alert Dialog всплывает 27 раз в обработчике

public void onCreate(Bundle savedInstanceState) { 





    Log.i(TAG, "called onCreate"); 
    super.onCreate(savedInstanceState); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    setContentView(R.layout.face_detect_surface_view); 

    mOpenCvCameraView = (Tutorial3View) findViewById(R.id.tutorial3_activity_java_surface_view); 

    mOpenCvCameraView.setCvCameraViewListener(this); 



    mPath=getFilesDir()+"/facerecogOCV/"; 

    labelsFile= new labels(mPath); 

    Iv=(ImageView)findViewById(R.id.imageView1); 
    textresult = (TextView) findViewById(R.id.textView1); 

    mHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      Log.e("X", (String) msg.obj); 

      if (msg.obj=="IMG") 
      { 
      Canvas canvas = new Canvas(); 
      canvas.setBitmap(mBitmap); 
      Iv.setImageBitmap(mBitmap); 
      if (countImages>=MAXIMG-1) 
      { 
       toggleButtonGrabar.setChecked(false); 
       grabarOnclick(); 
      } 
      } 
      else 
      { 
       textresult.setText(msg.obj.toString()); 

       textpercent.setVisibility(View.VISIBLE); 
       textpercent.setText(mLikely + "%"); 


       new CountDownTimer(5000, 1000) { 

        @Override 
        public void onTick(long millisUntilFinished) { 
         // TODO Auto-generated method stub 
         mOpenCvCameraView.enableView(); 
        } 

        @Override 
        public void onFinish() { 
         // TODO Auto-generated method stub 
         final AlertDialog ad = new AlertDialog.Builder(FdActivity.this).create(); 
         ad.setTitle("Recognition Status"); 
         ad.setMessage("Criminal ID :" + textresult.getText().toString() + "\nSimilarities : " + textpercent.getText().toString() ); 
         ad.setButton("Rescan", new DialogInterface.OnClickListener() { 

          public void onClick(DialogInterface dialog, int which) { 


           Toast.makeText(getApplicationContext(), 
             "Rescanning", Toast.LENGTH_SHORT).show(); 
           Bundle configBundle = new Bundle(); 
           onCreate(configBundle); 
           mOpenCvCameraView.enableView(); 



          } 
         }); 




         ad.show();//pops out 27 times 

         mOpenCvCameraView.disableView(); 
         buttonSearch.setChecked(false); 


        } 
       }.start(); 

      } 

     } 
    }; 
    text=(EditText)findViewById(R.id.editText1); 
    buttonCatalog=(Button)findViewById(R.id.buttonCat); 
    toggleButtonGrabar=(ToggleButton)findViewById(R.id.toggleButtonGrabar); 
    buttonSearch=(ToggleButton)findViewById(R.id.buttonBuscar); 
    toggleButtonTrain=(ToggleButton)findViewById(R.id.toggleButton1); 
    textState= (TextView)findViewById(R.id.textViewState);  
    textpercent = (TextView)findViewById(R.id.textViewpercent); 
    imCamera=(ImageButton)findViewById(R.id.imageButton1); 
    textpercent.setVisibility(View.INVISIBLE);  
     text.setVisibility(View.INVISIBLE); 
     textresult.setVisibility(View.INVISIBLE);  
     toggleButtonGrabar.setVisibility(View.INVISIBLE);  
     text.setOnKeyListener(new View.OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if ((text.getText().toString().length()>0)&&(toggleButtonTrain.isChecked())) 
        toggleButtonGrabar.setVisibility(View.VISIBLE); 
       else 
        toggleButtonGrabar.setVisibility(View.INVISIBLE); 

      return false; 
     } 
    }); 

    toggleButtonTrain.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (toggleButtonTrain.isChecked()) { 
       textState.setText(getResources().getString(R.string.SEnter)); 
       buttonSearch.setVisibility(View.INVISIBLE); 
       textresult.setVisibility(View.VISIBLE); 
       text.setVisibility(View.VISIBLE); 
      textresult.setText(getResources().getString(R.string.SFaceName)); 
       if (text.getText().toString().length() > 0) 
        toggleButtonGrabar.setVisibility(View.VISIBLE); 
       textpercent.setVisibility(View.INVISIBLE); 


      } else { 
       textState.setText(R.string.Straininig); 
       textresult.setText(""); 
       text.setVisibility(View.INVISIBLE); 

       buttonSearch.setVisibility(View.VISIBLE); 
       ; 
       textresult.setText(""); 
       { 
        toggleButtonGrabar.setVisibility(View.INVISIBLE); 
        text.setVisibility(View.INVISIBLE); 
       } 
       Toast.makeText(getApplicationContext(), getResources().getString(R.string.Straininig), Toast.LENGTH_LONG).show(); 
       fr.train(); 
       textState.setText(getResources().getString(R.string.BLANK)); 

      } 
     } 

    }); 
    toggleButtonGrabar.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      grabarOnclick(); 
     } 
    }); 

    imCamera.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 

      if (mChooseCamera==frontCam) 
      { 
       mChooseCamera=backCam; 
       mOpenCvCameraView.setCamBack(); 
      } 
      else 
      { 
       mChooseCamera=frontCam; 
       mOpenCvCameraView.setCamFront(); 

      } 
     } 
    }); 

    buttonSearch.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       if (buttonSearch.isChecked()) 
       { 
        if (!fr.canPredict()) 
         { 
         buttonSearch.setChecked(false); 
         Toast.makeText(getApplicationContext(), getResources().getString(R.string.SCanntoPredic), Toast.LENGTH_LONG).show(); 
         return; 
         } 
        textState.setText(getResources().getString(R.string.SSearching)); 
        toggleButtonGrabar.setVisibility(View.INVISIBLE); 
        toggleButtonTrain.setVisibility(View.INVISIBLE); 
        text.setVisibility(View.INVISIBLE); 
        faceState=SEARCHING; 
        textresult.setVisibility(View.VISIBLE); 
       } 
       else 
       { 
        faceState=IDLE; 
        textState.setText(getResources().getString(R.string.SIdle)); 
        toggleButtonGrabar.setVisibility(View.INVISIBLE); 
        toggleButtonTrain.setVisibility(View.VISIBLE); 
        text.setVisibility(View.INVISIBLE); 
        textresult.setVisibility(View.INVISIBLE); 

       } 
      } 
     }); 

    boolean success=(new File(mPath)).mkdirs(); 
    if (!success) 
    { 
     Log.e("Error", "Error creating directory"); 
    } 
} 

Кто-нибудь, пожалуйста, помогите мне решить эту проблему. Я все еще участвую в Android-программировании. У меня не было идеи о том, как это исправить.

Благодаря

+0

Возможно, mHandler вызывает 'public void handleMessage (Message msg)' 27 раз? – walkmn

+0

должен ли я удалить его? –

+0

нет, проверив другой код. mHandler, где используется и называется? – walkmn

ответ

0

Я думаю, что ваш обработчик получает прошло, что количество сообщений. Вы можете убедиться в том, что с

Log.e("X", msg.obj); 

и проверьте логарифм для этого выхода.

+0

Где я могу вставить это? –

+0

Прямо перед этой строкой 'textresult.setText (msg.obj.toString());' – LilaQ

+0

11-04 00: 49: 31.789 9487-9487/com.example.arafat.portablefacerecognitionsystem E/X: h 11-04 00 : 49: 31.794 9487-10308/com.example.arafat.portablefacerecognitionsystem D/CameraBridge: значение mStretch: 1.0416666 11-04 00: 49: 31.807 9487-9487/com.example.arafat.portablefacerecognitionsystem D/JavaCameraView: предварительный просмотр кадра , Размер рамки: 622080 –