IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Can't getService HwBDService


Sujet :

Android

  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut Can't getService HwBDService
    Bonjour,

    En testant mon application sur un smartphone huawei P8 lite 2017 model PRA-LX1, des lignes (rouges ) me disent dans le logcat, ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    E/BD.Reporter﹕ Can't getService HwBDService
    E/OpenGLRenderer﹕ allen debug liyu Key: 0
    E/HW-JPEG-DEC﹕ [HME_JPEG_DEC_Delete](3321): HME_JPEG_DEC_Delete: decoder_ctx=null
    E/OpenGLRenderer﹕ allen debug liyu Key: 1
    I/HwPointEventFilter﹕ do not support AFT because of no config
    E/OpenGLRenderer﹕ allen debug liyu Key: 240518168576
    E/OpenGLRenderer﹕ allen debug liyu Key: 68724719680
    E/OpenGLRenderer﹕ allen debug liyu Key: 34359738371
    Mon programme se lance sans problème, li la vidéo d'introduction sans problème, sauf que les annotations de mon code ne se lisent pas (celles appelées avec Log.d("txt","...") ) d'un part et surtout d'autre part, la suite de mon programme ne se lance pas, il reste bloqué.

    Avec d'autres smartphones il ne pose aucun problèmes.

    Avez vous une idée de ce qui peut se passer et comment résoudre le pb ?

    Merci

  2. #2
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    521
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 521
    Par défaut
    En fait, il semblerait que le problème de blocage vienne du chargement de textures avec l'OpenGL...
    En utilisant un Thread pour charger différentes textures, malgré l'utilisation de conditions, il bloque, de temps en temps je ne comprends pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     @Override
        public void onDrawFrame(GL10 gl) {
            drawing = true ;
            time = System.nanoTime() ;
            Texture.update();
            GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
            GLES20.glClearColor(red, green, blue, alpha);
            Game.draw();
            drawing = false ;
     
        }
    J'ai crée un objet statique Texture pour les charger, ) l'aide de la fonction loadTexture(), depuis un thread, et la fonction update() depuis ma GLSurfaceview ( sur laquelle j'ai implémenté un Renderer ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    public class Texture {
     
        static boolean update = false, recyle = false ;
        static int[] textures = null ;
        static Bitmap[] bitmaps = null ;
     
        static void loadTexture(int[] txt__, Bitmap[] btm__, boolean recycle__ ){
            while ( update ){}
            bitmaps = btm__;
            recyle = recycle__;
            textures = txt__;
            update = true ;
        }
        static void update(){
            if ( update ){
                for ( int i = 0 ; i < textures.length ; i ++ ){
                    GLES20.glDeleteTextures(1, textures, i);
                    GLES20.glGenTextures(1, textures, i);
                    final BitmapFactory.Options options = new BitmapFactory.Options();
                    options.inScaled = false ;
                    GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textures[i]);
                    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST);
                    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST);
                    GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmaps[i], 0);
                    if ( recyle ){
                        bitmaps[i].recycle();
                    }
                }
                update = false ;
            }
        }
    }
    J'utilise la fonction loadTextures comme cela, par exemple depuis un objet quelconque, lors de son initialisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        static void init(){
            texture = new int[1] ;
            Bitmap[] bitmap = new Bitmap[]{BitmapFactory.decodeResource(Main.context.getResources(), R.drawable.matexture)};
            Texture.loadTexture(texture , bitmap , true);
        }

    Cela fonctionne, seulement voilà, lors du lancement il reste parfois bloqué...


    Comment cela se fait il ?
    Cela peut il venir du fait que j'utilise un Renderer en tant qu'implémentation de GLSurfaceView ?

    ( public class Surface extends GLSurfaceView implements GLSurfaceView.Renderer {} )

    Autre remarque : ce problème ne survient que sur un téléphone récent et relativement performant ( HUAWEI P8 lite 2017 ) et pas sur un téléphone simple voir lowcost.

    Merci si vous pouvez m'aider.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 141
    Par défaut
    Je pense qu'une partie de ton problème vient du fait que tu initialise tes textures dans la boucle d'affichage : onDraw().

    Si tu ne le fais qu'une fois pour toute n'y a t'il pas moyen de le faire à l'initialisation de la surface genre onSurfaceCreated() ?

    Ensuite au niveau de l'initialisation init() tu utilises une resource depuis drawable.

    Attention car ces ressources sont généralement indépendant de la taille.

    Elles seront donc mises à l'échelle en fonction de l'endroit où elles se trouvent (repertoires drawable-????) et de la densité écran du device.

    Du style tu mets une texture de 256 pixels mais celle-ci est up-scalée à 1024 pixels...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. ERROR 13: Can't get stat of
    Par delph_b dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/07/2004, 14h23
  2. ERROR 2003: Can't connect to MySQL server on 'localhost'...
    Par tonton54 dans le forum Installation
    Réponses: 8
    Dernier message: 25/04/2004, 16h51
  3. Mysql ERROR 2002: Can't connect to local MySQL
    Par Michel dans le forum Réseau
    Réponses: 2
    Dernier message: 17/01/2004, 18h35
  4. XML sample can't be loaded...
    Par coca dans le forum XMLRAD
    Réponses: 2
    Dernier message: 03/11/2003, 12h11
  5. [Connexion MySQL] Can't connect to MySQL server
    Par mat_dum dans le forum Outils
    Réponses: 12
    Dernier message: 17/07/2003, 07h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo