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. Access image captured by Camera app through JNI
Forum Updated to NodeBB v4.3 + New Features

Access image captured by Camera app through JNI

Scheduled Pinned Locked Moved Solved Mobile and Embedded
2 Posts 1 Posters 938 Views 1 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.
  • A Offline
    A Offline
    algogr
    wrote on last edited by
    #1

    Hello,

    I am trying to access an image that i want to capture through Android camera app and save it to a file,from my app. The camera activity starts, but after pressing the button to capture the image, it returns back to my app without saving any file. This is my code

     QAndroidJniObject ACTION_SET_TIMER = QAndroidJniObject::getStaticObjectField("android/provider/MediaStore","ACTION_IMAGE_CAPTURE", "Ljava/lang/String;");
               QAndroidJniObject intent("android/content/Intent","(Ljava/lang/String;)V",ACTION_SET_TIMER.object());
                QAndroidJniObject filename=QAndroidJniObject::fromString("/mnt/sdcard/1.jpg");
               QAndroidJniObject file("java/io/File","(Ljava/lang/String;)V",filename.object<jstring>());
               QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri","fromFile", "(Ljava/io/File;)Landroid/net/Uri;", file.object());
               
                        QAndroidJniObject uristr=uri.callObjectMethod("toString", "()Ljava/lang/String;");
               
                         QAndroidJniObject key=QAndroidJniObject::fromString("MediaStoreEXTRA_OUTPUT");
    
               intent.callObjectMethod("putExtra","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",key.object(), uristr.object());
    
               QAndroidJniObject activity = QtAndroid::androidActivity();
    
               QAndroidJniObject packageManager = activity.callObjectMethod("getPackageManager","()Landroid/content/pm/PackageManager;");
               QAndroidJniObject componentName = intent.callObjectMethod("resolveActivity","(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;",packageManager.object());
               if (componentName.isValid()) {
                   
                   QtAndroid::startActivity(intent, 42);
               } else {
                   qWarning() << "Unable to resolve activity";
               }
    

    Can anybody tell me what i am doing wrong?
    Thank you in advance

    1 Reply Last reply
    0
    • A Offline
      A Offline
      algogr
      wrote on last edited by
      #2

      For anybody who may be interested i found the solution,thanks to this

      1 Reply Last reply
      2

      • Login

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