1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Bekomme immer NullPointer, vielleicht Android Bug?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von keinbrain, 13.07.2012.

  1. keinbrain, 13.07.2012 #1
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    Hi, ich versuche seit geraumer Zeit die "supportedpicutreformats" auszulesen, jedoch bekomme ich IMMER NullPointer.

    Code:
    List<Integer> supportedPictureFormats = params.getSupportedPictureFormats();
    
    Was davor oder danach steht spielt keine Rolle, ich hab alles bis auf diese Zeile auskommentiert und der NullPointer bleibt. Muss ich vielleicht vorher irgendwas initialisieren? Was hab ich vergessen ? ODer ist es vielleicht sogar ein 2.3 Bug?

    Hoffe ihr könnt mir helfen, ich verzweifle hier grade total dran.
     
  2. v Ralle v, 13.07.2012 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Beiträge:
    913
    Erhaltene Danke:
    199
    Registriert seit:
    27.08.2010
    Was soll uns die Zeile sagen?! Wenn du sagst, dass der Rest davor egal ist, dann ist params null. Schau notfalls in die Implementierung der Getter Methode.
     
  3. Son Goku, 13.07.2012 #3
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
  4. keinbrain, 13.07.2012 #4
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    genau, so steht es bei mir in code auch weiter oben (das war natürlich nicht auskommentiert^^ ) trotzdem gibt mir genau diese zuordnung bzw. das eintragen der unterstützten Formate einen Nullpointer. Egal, wie ich diese Zeile umschreibe, etc. ich hab echt alles versucht, doch es kommt immer dieser blöde Fehler.
     
  5. Son Goku, 13.07.2012 #5
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
    Du hast doch dein Debugfenster mit den Variablen drin udn welche Werte die haben. Schau doch mal, was da bei Params steht. Evtl. vorher auf die Zeile nen Breakpoint setzen.

    Ansonsten würde ich vorschlagen: Kopier die Klasse, die ich oben verlinkt hab, und versuche es mit der. Dann kannst du nach und nach die nicht relevanten Codeteile streichen und mit etwas Glück findest du am Ende sogar raus, wo du den Fehler gemacht hast.
     
  6. keinbrain, 13.07.2012 #6
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    ok hier ist nochmal der gesamte Code :

    Code:
    
    Camera nCamera = Camera.open();
          Camera.Parameters params = nCamera.getParameters();
    
          int bli = 0 ;
            
              List<Integer> supportedPictureFormats = new ArrayList<Integer>();
                      
                      supportedPictureFormats.addAll(params.getSupportedPictureFormats());
            
    
            if (supportedPictureFormats.contains(PixelFormat.JPEG)){
                
                 bli = 12 ;
            
            }
    
    
            String nap6 = (new Integer(bli)).toString();
    
            TextView tv3 = (TextView) findViewById(R.id.tv3);
            tv3.setText(nap6);    
       
        }
    }
    
    
    Andere Dinge wie "getPictureForamt, getPreviewFormat,getSupportedPicutreSizes" , etc , funktionert einwandfrei. aber diese eine Zeile lässt das Programm immer abstürzen
     
  7. Son Goku, 13.07.2012 #7
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
    Code:
    List<Integer> supportedPictureFormats = new ArrayList<Integer>();
    Warum ArrayList und nicht "List"?

    Ich arbeite jetzt zwar nicht schon so lange mit Java, aber ich glaube auch, du kannst keiner List/ArrayList aus Integern keine Liste (Rückgabe von "getSupportedPictureFormats()") zuweisen. Müsste da dann nicht "List<List>" stehen?
    Weil dein Konstruckt passt irgendwie nicht ganz in mein Logikvertsändnis rein.

    Aber lassen wir das mal.
    Würde das so nicht viel besser passen?
    Code:
    List<Integer> supportedPictureFormats = params.getSupportedPictureFormats();
    
     
  8. keinbrain, 13.07.2012 #8
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    achso ja das mit "list" also GENAU so wie du es oben beschreiben hast hatte ich auch die ganze zeit, aber ich wollte man ausprobieren ob es vielleicht daran leigt das es keine arraylist ist. aber wie gesagt, dass problem existiertt auch exakt bei deinem codebeispiel. es wäre nett wenn du mal versuchen könntest das in eine testapp zu kopieren und zu starten.
     
  9. Son Goku, 13.07.2012 #9
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
    Funktioniert!

    Hab das in einer bereits bestehen App getestet.

    Folgende 3 Zeilen von weiter oben hab ich direkt beim onCreate meiner Start-Activity eingetrahen, direkt anch dem "setContentView()". Ich erhalte keine NullPointerException.
    Code:
    Camera camera = Camera.open();
    Camera.Parameters params = camera.getParameters();
    List<Integer> supportedPictureFormats = params.getSupportedPictureFormats();
    
    Das ist mein Import:
    Code:
    import java.util.List;
    import android.hardware.Camera;
    
    Und das hab ich noch in meinem Manifest, vielleicht fehlt das:
    Code:
    <uses-feature android:name="android.hardware.camera" />
    <uses-permission android:name="android.permission.CAMERA" />
    
    Ich muss jetzt leider noch einen Termin wahrnehmen.
    Wenn es nicht funktionieren sollte, hilft vielleicht jemand anders weiter, ansonsten schau ich morgen nochmal danach.
     
  10. keinbrain, 13.07.2012 #10
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    ok ich komm nicht weiter. vielleicht is mein eclipse zu doof, vielleicht der emulator, vielleicht ich. ich hab zwar genau das gleiche wie du , permissions auch, aber es fuktioniert nicht. egal, ich versuchs weiter mit 'an den pc treten' und kopf-gege-die-wand-hauen . trotzdem danke
     
  11. Son Goku, 13.07.2012 #11
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
    So, für den Post hab ich doch noch Zeit...

    Da haben wir doch das Problem. Dein Emulator ist schuld.
    Seit ich bei meiner ersten App, die die Kamera benutzt hat es nicht geschafft hab die Kamera zu aktivieren, benutze ich immer mein Handy oder Tablet zum debuggen (Samsung Galaxy S1 / Galaxy Tab 10.1).
    Ich weiß jetzt nicht, wie es der Großteil der anderen Entwickler macht, aber das ist für mich auf jeden Fall die bessere Alternative.
    Ich würde Dir raten, nimm dein USB-Kabel, stell dein Handy auf USB-Debugging um und versuch dort dein Glück.

    Im Notfall erstell einfach eine neue App und füge nur diese 3 Zeilen ein und setze die Berechtigungen.
     
    keinbrain bedankt sich.
  12. keinbrain, 13.07.2012 #12
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    ok dann is der emulator schuld, nur ein problem hab ich dann trotzdem. Hab kein android-Handy (ja ich weiß, developer , aber hat keinen droiden , absurd ^^) . mich wundert es nur das die ganzen anderen vorher beschriebenen werte abgefragt werden können, also supportedpicturesize, etc. naja vielleicht lass ich diese einr zeile dann einfach bei meiner app weg, wird schon keinen stören
     
  13. Son Goku, 13.07.2012 #13
    Son Goku

    Son Goku Android-Hilfe.de Mitglied

    Beiträge:
    55
    Erhaltene Danke:
    5
    Registriert seit:
    07.12.2010
    Du wirst selbst wissen müssen, ob du die Daten, die die Funktion zurückliefert brauchst oder nicht. Wenn nicht spricht natürlich nichts dagegen diese wegzulassen.
    Ich hatte wie gesagt schon Probleme damit überhaupt ein Bild der Webcam oder ein anderes Bild da rein zu bekommen. Da war immer nur ein Schachbrettmuster zu sehen. Geschafft hab ich es nie.

    Zum Debuggen reicht das übrigens schon aus, auch wenn das Display etwas klein ist. Aber ich hab die Erfahung gemacht, was auf nem kleinem Display gut aussieht, wird auf einem großen nicht schlechter. ;)
    Huawei Ideos X3 Handy 3,2 Zoll schwarz: Amazon.de: Elektronik


    Zu deinem Problem:
    Du kannst ja mal deine App kompilieren und mir per Mail zukommen lassen, die schick ich Dir dann per PN wenn du willst, dann schau ich mal, ob es bei mir funktioniert. Alternativ geht auch eine kurze "Hello World"-App mit nur den 3 oben genannten Zeilen. Dann hättest du zumindest gewissheit, dass es an deinem Emulator liegt.


    Die Funktion gibt es auch erst seit API-Level 5. Hast du das auch so eingestellt? Es gibt/gab in Eclipse/ADT einen Bug, so dass er bei einem Projekt nicht meckert, wenn Methoden verwendet werden, die gar nicht dem API-Level entsprechen. Erst seit dem neusten Update bekomme ich entsprechende Hinweise. Ich hab aktuell sogar noch eine App im Market bei der das so ist und die ich sogar kompilieren konnte. Bin gerade dabei alles anzupassen. Musste dadurch das API-Level von 3 auf 8 erhöhen.


    Also das kannst du ja noch checken und dich dann wieder melden, wenn du mit der gefunden Lösung noch nicht zufrieden bist.
     
    keinbrain bedankt sich.
  14. keinbrain, 14.07.2012 #14
    keinbrain

    keinbrain Threadstarter Fortgeschrittenes Mitglied

    Beiträge:
    316
    Erhaltene Danke:
    21
    Registriert seit:
    07.03.2012
    Also danke für das rausgesuchte Handy, aber zurzeit kann ich das echt nicht kaufen ^^ Ich wollte aber unbedingt das Nexus 7 kaufen, sobald es in Europa erhältlich ist, ich denke das reicht dann erstmal zum testen :D

    Das du diese 3 Zeilen nochmal testest ist echt nicht nötig, ich will keine Zeile im Programmcode haben, die ich vor jedem Emulatortest auskommentieren muss, daher werde ich sie einfach weglassen, wie gesagt, es ist eigentlich auch kein wesentlicher Bestandteil meiner App.

    Und das Api-Level ist auf 10 , die ganzen Cameraparameter liegen bei 5, daher denke ich nicht dass das das Problem ist (wow 3 das(s) xD )

    Also danke für deine Mühe :)
     

Diese Seite empfehlen