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?
Forum Updated to NodeBB v4.3 + New Features

How to get a screenshot in Android?

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
29 Posts 3 Posters 3.0k Views 2 Watching
  • 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.
  • mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #2

    Hi
    of your own app ?
    or of whole "Desktop" / other app.

    1 Reply Last reply
    0
    • M Offline
      M Offline
      Mikeeeeee
      wrote on last edited by
      #3

      I will be satisfied with any screenshot, application or desktop. My application on QML.

      1 Reply Last reply
      0
      • M Offline
        M Offline
        Mikeeeeee
        wrote on last edited by
        #4

        I use QQmlApplicationEngine

        KroMignonK 1 Reply Last reply
        0
        • M Mikeeeeee

          I use QQmlApplicationEngine

          KroMignonK Offline
          KroMignonK Offline
          KroMignon
          wrote on last edited by
          #5

          @mikeeeeee I would to it like this:

          QQuickWindow* currentWindow = qobject_cast<QQuickWindow*>(QGuiApplication::focusWindow());
          if(!currentWindow)
              return;
          QScreen* screen = currentWindow->screen();
          if(!screen)
              return;
          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");
          
          
          1 Reply Last reply
          1
          • M Offline
            M Offline
            Mikeeeeee
            wrote on last edited by
            #6

            I get error:use of undeclared identifier 'fullScreen'

            KroMignonK 1 Reply Last reply
            0
            • M Mikeeeeee

              I get error:use of undeclared identifier 'fullScreen'

              KroMignonK Offline
              KroMignonK Offline
              KroMignon
              wrote on last edited by KroMignon
              #7
              This post is deleted!
              1 Reply Last reply
              0
              • M Offline
                M Offline
                Mikeeeeee
                wrote on 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 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 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
                    • mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 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 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 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

                          mrjjM 1 Reply Last reply
                          0
                          • M Mikeeeeee

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

                            qDebug() << image.isNull();

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

                            mrjjM Offline
                            mrjjM Offline
                            mrjj
                            Lifetime Qt Champion
                            wrote on last edited by
                            #14

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

                            1 Reply Last reply
                            0
                            • M Offline
                              M Offline
                              Mikeeeeee
                              wrote on last edited by
                              #15

                              But how to get a picture out of it?

                              mrjjM 1 Reply Last reply
                              0
                              • M Mikeeeeee

                                But how to get a picture out of it?

                                mrjjM Offline
                                mrjjM Offline
                                mrjj
                                Lifetime Qt Champion
                                wrote on 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 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.

                                  mrjjM 1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    Mikeeeeee
                                    wrote on 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

                                      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.

                                      mrjjM Offline
                                      mrjjM Offline
                                      mrjj
                                      Lifetime Qt Champion
                                      wrote on 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 last edited by
                                        #20

                                        Could the screen be incorrectly processed?

                                        1 Reply Last reply
                                        0
                                        • M Offline
                                          M Offline
                                          Mikeeeeee
                                          wrote on last edited by
                                          #21

                                          I use Qt 5.13

                                          1 Reply Last reply
                                          0

                                          • Login

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