Android uploader
Getting started
Requirements
Building the API client library requires:
-
Java 1.8+
-
Maven/Gradle
Installation
Maven users
Add this dependency to your project's POM:
<dependency> <groupId>video.api</groupId> <artifactId>android-video-uploader</artifactId> <version>1.3.2</version> <scope>compile</scope> </dependency>
Gradle users
Add this dependency to your project's build file:
implementation "video.api:android-video-uploader:1.3.2"
Others
At first generate the JAR by executing:
mvn clean package
Then manually install the following JARs:
-
target/android-video-uploader-1.3.2.jar -
target/lib/*.jar
Code sample
Please follow the installation instruction and execute the following Kotlin code:
// If you want to upload a video with an upload token (uploadWithUploadToken):
VideosApiStore.initialize()
// if you rather like to use the sandbox environment:
// VideosApiStore.initialize(environment = Environment.SANDBOX)
// If you rather like to upload with your "YOUR_API_KEY" (upload)
// VideosApiStore.initialize("YOUR_API_KEY", Environment.PRODUCTION)
// if you rather like to use the sandbox environment:
// VideosApiStore.initialize("YOU_SANDBOX_API_KEY", Environment.SANDBOX)
val myVideoFile = File("my-video.mp4")
val workManager = WorkManager.getInstance(context) // WorkManager comes from package "androidx.work:work-runtime"
workManager.uploadWithUploadToken("MY_UPLOAD_TOKEN", myVideoFile) // Dispatch the upload with the WorkManager
// if your rather like to use your API key:
// workManager.upload("MY_VIDEO_ID", myVideoFile)
Example
Examples that demonstrate how to use the API is provided in folder
examples/
.
Upload methods
To upload a video, you have 3 differents methods:
-
WorkManager: preferred method: Upload with Android WorkManager API. It supports progress notifications. Directly use, WorkManager extensions. See example for more details. -
UploadService: Upload with an Android Service. It supports progress notifications. You have to extend theUploadServiceand register it in yourAndroidManifest.xml. See example for more details. -
Direct call with
ApiClient: Do not call API from the main thread, otherwise you will get a android.os.NetworkOnMainThreadException. Dispatch API calls with Thread, Executors or Kotlin coroutine to avoid this.
Permissions
You have to add the following permissions in your
AndroidManifest.xml
:
<uses-permission android:name="android.permission.INTERNET" />
<!-- Application requires android.permission.READ_EXTERNAL_STORAGE to upload videos` -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Your application also has to dynamically request the
android.permission.READ_EXTERNAL_STORAGE
permission to upload videos.
Documentation
API Endpoints
All URIs are relative to https://ws.api.video
VideosApi
Retrieve an instance of VideosApi:
val videosApi = VideosApi("YOUR_API_KEY", Environment.PRODUCTION)
Endpoints
| Method | HTTP request | Description |
|---|---|---|
| upload | POST /videos/{videoId}/source | Upload a video |
| uploadWithUploadToken | POST /upload | Upload with an delegated upload token |
Documentation for Models
Documentation for Authorization
API key
Most endpoints required to be authenticated using the API key mechanism described in our
documentation
.
The access token generation mechanism is automatically handled by the client. All you have to do is provide an API key when instantiating the
ApiClient
:
val videosApi = VideosApi("YOUR_API_KEY", Environment.PRODUCTION)
Public endpoints
Some endpoints don't require authentication. These one can be called with a client instantiated without API key:
val videosApi = VideosApi()
Recommendation
It's recommended to create an instance of
ApiClient
per thread in a multithreaded environment to avoid any potential issues.
For direct call with
ApiClient
: Do not call API from the main thread, otherwise you will get a
android.os.NetworkOnMainThreadException
. Dispatch API calls with Thread, Executors or Kotlin coroutine to avoid this. Alternatively, APIs come with an asynchronous counterpart (
createAsync
for
create
) except for the upload endpoint.