Search code examples
javaandroidarcore

AugmentedImageDatabase Arcore: add multiple images


I have folder with images, but i cant add them to database. They have specific names. App says "AR session failed" This is my code:

  public void setupDatabase(Config config, Session session)
    {
        String filepath = getIntent().getStringExtra("filepath");
        Log.d ("AID", "Veriable:" + filepath);
        File dir = new File (filepath);
        File[] files = dir.listFiles();

        AugmentedImageDatabase aid = new AugmentedImageDatabase(session);

        for (int i = 0; i < files.length; i++)
        {
            if (files[i].getName().startsWith("arimage"))
            {
                String filename = files[i].getName ();
                Log.d ("AID", "FileName:" + files[i].getName ());
                Bitmap arcontentBitmap =loadAugmentedImage(files[i]);
                Log.d ("AID", "Files:" + files[i].getPath ());
                String imagename = filename.substring(0, filename.length() - 4);
                Log.d ("AID", "NameImage:" + imagename);

                aid.addImage(imagename, arcontentBitmap);

            }

        }
        config.setAugmentedImageDatabase(aid);
    }

Method loadAugmentedImage

private Bitmap loadAugmentedImage(File file)
    {
        try (InputStream is = new FileInputStream (file))
        {
            return BitmapFactory.decodeStream(is);
        }
        catch (IOException e)
        {
            Log.e("ImageLoad", "IO Exception", e);
        }
        return null;
    }

Solution

  • I changed a size of buffer from 1024 to 4096 of downloaded file and unzip method. I put a full path of images to my Method loadAugmentedImage.

    public void setupDatabase(Config config, Session session) 
    {
            AugmentedImageDatabase aid = new AugmentedImageDatabase(session);
            Intent intent = getIntent ();
            String filepath = intent.getStringExtra ("filepath");
            Log.d ("AID", "Veriable:" + filepath);
            File directory = new File (filepath);
            File[] files = directory.listFiles ();
            Log.d ("AID", "Size: " + files.length);
            for (int i = 0; i < files.length; i++)
            {
    
                if (files[i].getName().startsWith("arimage"))
                {
                    String filename = files[i].getName ();
                    Log.d ("AID", "FileName:" + filename);
                    Bitmap arcontentBitmap = loadAugmentedImage(files[i].getPath ());
                    Log.d ("AID", "FilePath:" + files[i].getPath ());
                    Log.d ("AID", "Files:" + files[i].getAbsolutePath ());
                    String imagename = filename.substring(0, filename.length() - 4);
                    Log.d ("AID", "NameImage:" + imagename);
                    aid.addImage(imagename, arcontentBitmap);
                }
            }
            config.setAugmentedImageDatabase(aid);
    }
    

    Method loadAugmentedImage

    private Bitmap loadAugmentedImage(String file)
        {
            try (InputStream is = new FileInputStream (file))
            {
                return BitmapFactory.decodeStream(is);
            }
            catch (IOException e)
            {
                Log.e("loadAugmentedImage", "IO Exception", e);
            }
            return null;
        }