Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme WebView Thread

Sujet résolu
    7 mai 2013 à 18:38:56

    Bonjour,

    je me permet de poster ce message car je rencontres une grosse difficulté dans un de mes projets. 

    Je vais tenter d’être le plus clair possible pour vous expliquer de quoi il retourne.

    Tout d'abord je dispose d'une caméra, on peut récupérer la vue de cette camera sur une page Internet. Dans notre code java nous l'avons donc associé à un webview. Le but est de retrouver le même point sur deux images consécutives de la camera.

    L'utilisateur peut donc cliquer sur un bouton Follow, ce qui va afficher un carré sur la vue de la webcam, puis en appuyant une seconde fois, cela va lancer notre algorithme de recherche ( qui va rechercher dans les deux images des taux de couleurs similaires ). 

    C'est ici que repose le problème en effet, sans thread, le bouton follow va être bloqué car l'algorithme va tourner en boucle et cela va empecher le reste du programme de tourner.

    Voila donc le moment de création du thread, on execute donc l'algorithme dans ce dernier, et le problème rencontré est que nous avons le warning :

    Ce message d'erreur apparait quand la vue de la webcam n'est pas activé et que l'algorithme boucle sur la même page ( page not available ). 

    Mais lorsqu'on active la webcam, on va obtenir l'erreur : fatal signal 11 (sigsegv) at 0x00000000 (code=1) thread.

    Avez vous une idée de comment resoudre ce probleme, de comment utiliser le webview dans un autre thread ?

    Voici le code appelant le thread : 

    public void onClick(View v) {
          				if(!(clicked)) {
          					square.initCoord();
          					square.setVisibility(square.VISIBLE);
          					clicked = true;
          					AlertDialog alertDialog = new AlertDialog.Builder(source.main.WebCam.this).create();
          					alertDialog.setTitle("Select an object to follow");
          					alertDialog.setMessage("Please place the red square " +
          							"on the object you want the robot to follow");
          					alertDialog.show();
          				} else {
          					
          					square.setVisibility(square.INVISIBLE);
          					followButton.setVisibility(followButton.INVISIBLE);
          					StopFollowButton.setVisibility(StopFollowButton.VISIBLE);
          					clicked = false;
          					webView_.getContext();
          					Point loc = square.getSquareLocation();
          					System.out.println(loc.toString());
          					ArrayList<Couleur> colors=new ArrayList<Couleur>();
          					filtre.setBg(filtre.pictureDrawable2Bitmap(new PictureDrawable(webView_.capturePicture())));
          					search = new SearchThread(filtre, loc, colors, square);
          					search.start();
          					
          					recup = new RecupThread(webView_,filtre, mutex);
          					recup.start();
          				}
          			}
          		});

    C'est donc searchThread qui applique l'algorithme, on a même essayé de créer un seconde thread (recup thread ) pour recuperer le webview mais même soucis ...

    Et voici recup thread :

    	
    	private boolean stop;
    	private FiltreBmp filtre;
    	private Lock mutex;
    	private WebView web;
    
    	public RecupThread(WebView web,FiltreBmp filtre, Lock mutex) {
    		super();
    		this.stop = false;
    		this.filtre = filtre;
    		this.mutex = mutex;
    		this.web=web;
    	}
    	
    	public void setStop(boolean stop) {
    		this.stop = stop;
    	}
    	
    	@Override
    	public void run() {  
    		mutex = filtre.getMutex();
    			do {
    				mutex.lock();
    				try {
    					Picture p=web.capturePicture();
    					filtre.setBg(filtre.pictureDrawable2Bitmap(new PictureDrawable(p)));
    			} catch (IllegalArgumentException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}finally{
    					mutex.unlock();
    				}
    			} while(!stop);
    	}
    

    Cordialement,

    Florian



    -
    Edité par spierckelflorian 7 mai 2013 à 18:39:37

    • Partager sur Facebook
    • Partager sur Twitter
      8 mai 2013 à 11:25:13

      Bonjour,

      Je ne suis pas sur mais essaye de faire tourner ton thread dans l'UI Thread (c'est d'ailleurs ce que te signale le warning).

      Dans la méthode run de ton Thread, fait appel à la méthode RunOnUiThread, j'ai pas un exemple sous la main désolé.

      Cordialement.

      • Partager sur Facebook
      • Partager sur Twitter

      Probleme WebView Thread

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown