Upload Media

This documentation provides guidelines on uploading images and video to server using the TruVideo Media SDK. The SDK offers simple methods to integrate upload functionalities into your application.

Prerequisites

  • Ensure you have integrated the TruVideo Core SDK into your project and completed with the authentication process

  • Camera module will provide MediaItem or simply provide filepath to upload (optional)

Step 1 : Create a MediaBuilder object

final TruvideoSdkMediaFileUploadRequestBuilder builder = TruvideoSdkMedia.getInstance().FileUploadRequestBuilder(filePath);

Step 2 : Set tags or metaData mediaBuilder object if required

// Option 1: use the file upload request builder directly
builder.addTag("key", "value");
builder.addTag("color", "red");
builder.addTag("order-number", "123");

// Option 2: use the tag builder
TruvideoSdkMediaTags tags = TruvideoSdkMediaTags.builder()
        .set("key", "value")
        .set("color", "red")
        .set("order-number", "123")
        .build();
builder.setTags(tags);

// --------------------------
// Metadata
// --------------------------
// Option 1: use the file upload request builder directly
builder.addMetadata("key", "value");
builder.addMetadata("list", new String[]{"value1", "value2"});
builder.addMetadata("nested", TruvideoSdkMediaMetadata.builder()
    .set("key", "value")
    .set("list", new String[]{"value1", "value2"})
    .build()
);


// Option 2: use the metadata builder
TruvideoSdkMediaMetadata metadata = TruvideoSdkMediaMetadata
    .builder()
    .set("key", "value")
    .set("list", new String[]{"value1", "value2"})
    .set("nested", TruvideoSdkMediaMetadata.builder()
            .set("key", "value")
            .set("list", new String[]{"value1", "value2"})
            .build()
    )
    .build();
builder.setMetadata(metadata);

Step 3 : Build the request with mediaBuilder

// Build request
builder.build(new TruvideoSdkMediaCallback<TruvideoSdkMediaFileUploadRequest>() {
    @Override
    public void onComplete(TruvideoSdkMediaFileUploadRequest data) {
        // File upload request created successfully
        // Send to upload
    }

    @Override
    public void onError(@NonNull TruvideoSdkException exception) {
        // Handle error creating the file upload request
    }
});

Step 4 : Create object for getting callbacks from the SDK

new TruvideoSdkMediaFileUploadCallback() {
        @Override
        public void onError(@NonNull String id, @NonNull TruvideoSdkException ex) {
            // Handle error uploading the file
        }

        @Override
        public void onProgressChanged(@NonNull String id, float progress) {
            // Handle uploading progress
        }
        @Override
        public void onComplete(@NonNull String id, @NonNull TruvideoSdkMediaFileUploadRequest response) {
            // File uploaded successfully
        }
}

Step 5 : Finally call the upload to push data to server

// File upload request created successfully
// Send to upload
data.upload(new TruvideoSdkMediaCallback<Unit>() {
            @Override
            public void onComplete(Unit data) {
                // Upload started successfully
            }
            @Override
            public void onError(@NonNull TruvideoSdkException exception) {
                // Upload started with error
            }
        },
        new TruvideoSdkMediaFileUploadCallback() {
            @Override
            public void onError(@NonNull String id, @NonNull TruvideoSdkException ex) {
                // Handle error uploading the file
            }

            @Override
            public void onProgressChanged(@NonNull String id, float progress) {
                // Handle uploading progress
            }
            @Override
            public void onComplete(@NonNull String id, @NonNull TruvideoSdkMediaFileUploadRequest response) {
                // File uploaded successfully
            }
    }
);

Finalize :

After completing this steps the function should look like

import com.truvideo.sdk.media.TruvideoSdkMedia;
import com.truvideo.sdk.media.builder.TruvideoSdkMediaFileUploadRequestBuilder;
import com.truvideo.sdk.media.interfaces.TruvideoSdkMediaCallback;
import com.truvideo.sdk.media.interfaces.TruvideoSdkMediaFileUploadCallback;
import com.truvideo.sdk.media.model.TruvideoSdkMediaFileType;
import com.truvideo.sdk.media.model.TruvideoSdkMediaFileUploadRequest;
import com.truvideo.sdk.media.model.TruvideoSdkMediaMetadata;
import com.truvideo.sdk.media.model.TruvideoSdkMediaTags;

public void upload(Context context, String filePath) {
    Loader loader = new Loader(context);
    loader.showLoader();
    final TruvideoSdkMediaFileUploadRequestBuilder builder = TruvideoSdkMedia.getInstance().FileUploadRequestBuilder(filePath);
    //Uri.fromFile(new File(filepath))

    // Option 1: use the file upload request builder directly
    builder.addTag("key", "value");
    builder.addTag("color", "red");
    builder.addTag("order-number", "123");

    // Option 2: use the tag builder
    TruvideoSdkMediaTags tags = TruvideoSdkMediaTags.builder()
            .set("key", "value")
            .set("color", "red")
            .set("order-number", "123")
            .build();
    builder.setTags(tags);

    // --------------------------
    // Metadata
    // --------------------------
    // Option 1: use the file upload request builder directly
    builder.addMetadata("key", "value");
    builder.addMetadata("list", new String[]{"value1", "value2"});
    builder.addMetadata("nested", TruvideoSdkMediaMetadata.builder()
            .set("key", "value")
            .set("list", new String[]{"value1", "value2"})
            .build()
    );


    // Option 2: use the metadata builder
    TruvideoSdkMediaMetadata metadata = TruvideoSdkMediaMetadata
            .builder()
            .set("key", "value")
            .set("list", new String[]{"value1", "value2"})
            .set("nested", TruvideoSdkMediaMetadata.builder()
                    .set("key", "value")
                    .set("list", new String[]{"value1", "value2"})
                    .build()
            )
            .build();
    builder.setMetadata(metadata);

    // Build request
    builder.build(new TruvideoSdkMediaCallback<TruvideoSdkMediaFileUploadRequest>() {
        @Override
        public void onComplete(TruvideoSdkMediaFileUploadRequest data) {
            // File upload request created successfully
            // Send to upload
            data.upload(new TruvideoSdkMediaCallback<Unit>() {
                        @Override
                        public void onComplete(Unit data) {
                            // Upload started successfully
                        }
                        @Override
                        public void onError(@NonNull TruvideoSdkException exception) {
                            // Upload started with error
                        }
                    },
                    new TruvideoSdkMediaFileUploadCallback() {
                        @Override
                        public void onError(@NonNull String id, @NonNull TruvideoSdkException ex) {
                            // Handle error uploading the file
                        }

                        @Override
                        public void onProgressChanged(@NonNull String id, float progress) {
                            // Handle uploading progress
                        }
                        @Override
                        public void onComplete(@NonNull String id, @NonNull TruvideoSdkMediaFileUploadRequest response) {
                            // File uploaded successfully
                        }
                }
            );
        }

        @Override
        public void onError(@NonNull TruvideoSdkException exception) {
            // Handle error creating the file upload request
        }
    });
}

Last updated

Was this helpful?