How do I export Point Cloud Data (Project Tango)?

后端 未结 5 947
孤街浪徒
孤街浪徒 2020-12-03 05:46

Just got a Project Tango Development Kit tablet and have worked through some of the demos and examples.

Some older blog posts use the log files from a "Tango Map

5条回答
  •  眼角桃花
    2020-12-03 06:27

    Thank you Mark for your advice. I am a novice programmer and it is my first time working with java... I am interested in exporting the Tango acquired PointCloud data to a file and I would like to ask for your feedback on my approach (I created a Save button, and onClick the data would be saved to a file on an external drive). Please find the code bellow for the part that should save the xyzIj data:

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        ...
            case R.id.save_button:
                savePointCloud();
                break;
            default:
                Log.w(TAG, "Unrecognized button click.");
            }
    }
    
    
    private static void savePointCloud(final TangoXyzIjData xyzIj, String file) {
        File directoryName =  getAlbumStorageDir(file);
        FileOutputStream out = new FileOutputStream(directoryName,"text.txt");
        byte[] buffer = new byte[xyzIj.xyzCount * 3 * 4];
        FileInputStream fileStream = new FileInputStream(
                xyzIj.xyzParcelFileDescriptor.getFileDescriptor());
        int read;
           while ((read=fileStream.read(buffer))!=1){
               try{
               out.write(buffer, 0, read);
               out.close();
               System.out.println("Printed to file");
           }catch(IOException e){e.printStackTrace();}
           }
    }
    
    public File getAlbumStorageDir(String dirName) {
        if (!isExternalStorageWritable()) {
            return null;
        } else {
            // Get the directory for the user's public downloads directory.
            File file = new File(Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_DOWNLOADS), dirName);
            if (!file.mkdirs() || !file.exists()) {
                Log.e(TAG, "Directory not created");
                return null;
            }
            return file;
        }
    }
    
    public boolean isExternalStorageWritable() {
        String state = Environment.getExternalStorageState();
        if ((Environment.MEDIA_MOUNTED.equals(state)
                && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state))) {
            return true;
        } else {
            Log.e(TAG, "External storage is not mounted READ/WRITE.");
            return false;
        }
    }
    

提交回复
热议问题