Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. How to get a screenshot in Android?

How to get a screenshot in Android?

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
29 Posts 3 Posters 3.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Mikeeeeee
    wrote on 31 Jul 2019, 16:24 last edited by
    #6

    I get error:use of undeclared identifier 'fullScreen'

    K 1 Reply Last reply 31 Jul 2019, 16:26
    0
    • M Mikeeeeee
      31 Jul 2019, 16:24

      I get error:use of undeclared identifier 'fullScreen'

      K Offline
      K Offline
      KroMignon
      wrote on 31 Jul 2019, 16:26 last edited by KroMignon
      #7
      This post is deleted!
      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mikeeeeee
        wrote on 31 Jul 2019, 16:34 last edited by
        #8

        This piece of code doesn't work either. I put in my code that converts QScreen to QByteArray. QByteArray is empty.

        QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow());
        //    if(!currentWindow)
        //        return;
             QScreen* screen = currentWindow->screen();
        
        1 Reply Last reply
        0
        • M Offline
          M Offline
          Mikeeeeee
          wrote on 31 Jul 2019, 16:36 last edited by
          #9

          This all code

          QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow());
          

          // if(!currentWindow)
          // return;
          QScreen* screen = currentWindow->screen();
          // if(!screen)
          // return;
          //QRect screenGeometry = fullScreen ? screen->geometry() : currentWindow->geometry();
          /* QRect screenGeometry = fullScreen ? screen->geometry() : currentWindow->geometry();
          auto pm = screen->grabWindow(0, screenGeometry.x(), screenGeometry.y(), screenGeometry.width(), screenGeometry.height());

          QByteArray bArray;
          QBuffer buffer(&bArray);
          buffer.open(QIODevice::WriteOnly);
          pm.save(&buffer, "PNG");*/
          
          
          
          QImage myScreen;
          //QPixmap pic = QPixmap::grabWindow(QWidget::winId(),0,0,50,50);
          //qDebug()<<QWidget::winId();
          

          // QScreen *screen = QGuiApplication::primaryScreen();
          QPixmap pixamp;
          pixamp = screen->grabWindow(0);
          myScreen = pixamp.toImage();
          //myScreen = QPixmap::grabWindow();
          //myScreen = quickView->grabWindow();
          //myScreen.save("C:\Users\New Owner\Downloads\i.png");
          QByteArray bArray;
          QBuffer buffer(&bArray);
          buffer.open(QIODevice::WriteOnly);
          //myScreen.save(&buffer, "JPEG");
          //QString image("data:image/jpg;base64,");
          myScreen.save(&buffer, "PNG");
          QString image("data:image/png;base64,");
          image.append(QString::fromLatin1(bArray.toBase64().data()));
          qDebug()<<"screenShot:"<<image;
          return image;

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Mikeeeeee
            wrote on 31 Jul 2019, 16:38 last edited by
            #10

            Maybe you can use it?

            foreach(QObject* obj, engine.rootObjects()) {
            QQuickWindow* window = qobject_cast<QQuickWindow*>(obj);
            if (window) {
            QImage image = window->grabWindow();
            qDebug() << image;
            }
            }

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mrjj
              Lifetime Qt Champion
              wrote on 31 Jul 2019, 16:39 last edited by
              #11

              is the image valid then ?
              like
              qDebug() << image.isNull();
              says false ?

              1 Reply Last reply
              0
              • M Offline
                M Offline
                Mikeeeeee
                wrote on 31 Jul 2019, 17:01 last edited by Mikeeeeee
                #12

                qDebug()<<"screenShot:"<<image;
                return:
                "screenShot: "data:image/png;base64,""

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  Mikeeeeee
                  wrote on 31 Jul 2019, 17:04 last edited by
                  #13

                  @mrjj said in How to get a screenshot in Android?:

                  qDebug() << image.isNull();

                  qDebug() <<"image.isNull() :" << image.isNull();
                  return:
                  image.isNull() : false

                  M 1 Reply Last reply 31 Jul 2019, 17:06
                  0
                  • M Mikeeeeee
                    31 Jul 2019, 17:04

                    @mrjj said in How to get a screenshot in Android?:

                    qDebug() << image.isNull();

                    qDebug() <<"image.isNull() :" << image.isNull();
                    return:
                    image.isNull() : false

                    M Offline
                    M Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on 31 Jul 2019, 17:06 last edited by
                    #14

                    @mikeeeeee
                    Ok, that means its does grab something :)

                    1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      Mikeeeeee
                      wrote on 31 Jul 2019, 17:07 last edited by
                      #15

                      But how to get a picture out of it?

                      M 1 Reply Last reply 31 Jul 2019, 17:18
                      0
                      • M Mikeeeeee
                        31 Jul 2019, 17:07

                        But how to get a picture out of it?

                        M Offline
                        M Offline
                        mrjj
                        Lifetime Qt Champion
                        wrote on 31 Jul 2019, 17:18 last edited by
                        #16

                        @mikeeeeee
                        Cant you just save it ?
                        https://doc.qt.io/qt-5/qimage.html#save

                        1 Reply Last reply
                        0
                        • M Offline
                          M Offline
                          Mikeeeeee
                          wrote on 31 Jul 2019, 17:26 last edited by
                          #17

                          We've made a mistake. I immediately ask the text QString image("data:image/png;base64,"); And so, pictures of the there is no. Need another code.

                          M 1 Reply Last reply 31 Jul 2019, 17:30
                          0
                          • M Offline
                            M Offline
                            Mikeeeeee
                            wrote on 31 Jul 2019, 17:29 last edited by
                            #18

                            qDebug() <<"image.isNull() :" << image.isNull()<<"screen->size() :"<<screen->size();
                            return
                            image.isNull() : false screen->size() : QSize(360, 640)

                            1 Reply Last reply
                            0
                            • M Mikeeeeee
                              31 Jul 2019, 17:26

                              We've made a mistake. I immediately ask the text QString image("data:image/png;base64,"); And so, pictures of the there is no. Need another code.

                              M Offline
                              M Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on 31 Jul 2019, 17:30 last edited by
                              #19

                              @mikeeeeee
                              Im really not sure what you are saying. :)
                              That code work for others it seemed
                              https://stackoverflow.com/questions/21697185/how-to-take-screenshot-of-qml-application-without-qquickview/38501975

                              What Qt version are you using?

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                Mikeeeeee
                                wrote on 31 Jul 2019, 17:30 last edited by
                                #20

                                Could the screen be incorrectly processed?

                                1 Reply Last reply
                                0
                                • M Offline
                                  M Offline
                                  Mikeeeeee
                                  wrote on 31 Jul 2019, 17:31 last edited by
                                  #21

                                  I use Qt 5.13

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    Mikeeeeee
                                    wrote on 31 Jul 2019, 17:32 last edited by
                                    #22

                                    my initial code worked in Windows, but it doesn't work in Android.

                                    M 1 Reply Last reply 31 Jul 2019, 17:35
                                    0
                                    • M Mikeeeeee
                                      31 Jul 2019, 17:32

                                      my initial code worked in Windows, but it doesn't work in Android.

                                      M Offline
                                      M Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on 31 Jul 2019, 17:35 last edited by
                                      #23

                                      @mikeeeeee
                                      Hi
                                      Not all android devices can take shot of QML. Need support in openGL driver.

                                      Hmm. your Qt version seems new enough.
                                      if you google "qt qml grabwindow bug" you can see there been quite some issues but
                                      it should work with new Qt versions.

                                      How type of android device are you using ? I mena is it old or kinda new ?

                                      1 Reply Last reply
                                      0
                                      • M Offline
                                        M Offline
                                        Mikeeeeee
                                        wrote on 31 Jul 2019, 17:36 last edited by
                                        #24

                                        I use Android 5,6,9

                                        M 1 Reply Last reply 31 Jul 2019, 17:52
                                        0
                                        • M Mikeeeeee
                                          31 Jul 2019, 17:36

                                          I use Android 5,6,9

                                          M Offline
                                          M Offline
                                          mrjj
                                          Lifetime Qt Champion
                                          wrote on 31 Jul 2019, 17:52 last edited by
                                          #25

                                          @mikeeeeee
                                          Well if possible you can try on another android device to see if same happens.

                                          1 Reply Last reply
                                          0

                                          15/29

                                          31 Jul 2019, 17:07

                                          • Login

                                          • Login or register to search.
                                          15 out of 29
                                          • First post
                                            15/29
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved