MCPcopy Index your code
hub / github.com/Kickflip/kickflip-android-sdk

github.com/Kickflip/kickflip-android-sdk @1.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.3 ↗ · + Follow
723 symbols 1,626 edges 73 files 259 documented · 36%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Kickflip SDK for Android Download

kickflip live broadcast screenshot

The Kickflip Android SDK manages all the plumbing for your cloud video application. With this SDK you can broadcast Live, High Definition HTTP-HLS video, associate these broadcasts with users, and query broadcasts made by your users. All you need is a Kickflip.io account.

The Kickflip Android SDK requires Android 4.3+ (API 18+).

Check out our Android example application to see how to easily put this SDK to work.

Also check out our slick iOS SDK and iOS Example application

Features

  • High Definition HTTP Live Streaming
  • Background recording
  • OpenGL video effects
  • Pinch Zoom
  • Blazing fast, geo-aware upstreams
  • Global cloud-based Content Distribution Network

Quickstart

  1. Make a kickflip.io account to register an Application and receive your Client Key and Client Secret. You'll need these later.

  2. Ensure the minSdkVersion of your application is 18 (Android 4.3) and the compileSdkVersion is 19 (Android 4.4).

    groovy android { compileSdkVersion 19 ... defaultConfig { minSdkVersion 18 targetSdkVersion 19 ... } ... }

  3. Add Kickflip to your app's build.gradle:

    Dependencies: groovy dependencies { compile 'io.kickflip:sdk:1.3' }

  4. Add the following to your app's AndroidManifest.xml:

    Permissions (Optional: These will be automatically merged into your AndroidManifest.xml) xml <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    BroadcastActivity

    xml <activity android:name="io.kickflip.sdk.activity.BroadcastActivity" android:screenOrientation="landscape"> </activity>

    MediaPlayerActivity (Optional)

    MediaPlayerActivity handles playing HLS streams with some additional features over Android's MediaPlayer (like indicating when a stream is "Live" and more accurately inferring the stream duration).

    xml <activity android:name="io.kickflip.sdk.activity.MediaPlayerActivity" android:screenOrientation="landscape" > </activity> 4. Provide your Kickflip keys and start BroadcastActivity when appropriate:

    ```java Kickflip.setup(this, CLIENT_ID, CLIENT_SECRET); Kickflip.startBroadcastActivity(this, new BroadcastListener() { @Override public void onBroadcastStart() {

    }
    
    @Override
    public void onBroadcastLive(String watchUrl) { 
        Log.i("Kickflip", "This phone is live at " + watchUrl);       
    }
    
    @Override
    public void onBroadcastStop() {
    
    }
    
    @Override
    public void onBroadcastError() {
    
    }
    

    }); ```

BroadcastActivity provides a pre-built UI including a camera preview and controls for starting, stopping, and sharing the broadcast.

Building

  1. Define the Android SDK root location as $ANDROID_HOME in your environment. It's also a good idea to add the platform-tools and tools directories to your path so you can easily access common Android utilities, like adb.

An example on Mac OS X using Android Studio:

# ~/.bash_profile

# Android
export ANDROID_HOME="/Applications/Android Studio.app/sdk"
export PATH=$ANDROID_HOME"/tools":$ANDROID_HOME"/platform-tools":$PATH
  1. From this directory run:
    $ ./gradlew assembleDebug
    

The Kickflip SDK .aar will be in ./sdk/build/libs.

You may also import this project into Android Studio for easy development.

Documentation

For a closer look at what you do with Kickflip, check out our Android Documentation and Android API Reference. We also have some tutorials to help you get started.

License

Apache 2.0

Copyright 2014 OpenWatch, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Extension points exported contracts — how you extend this code

BroadcastListener (Interface)
Provides callbacks for the major lifecycle benchmarks of a Broadcast. [4 implementers]
sdk/src/main/java/io/kickflip/sdk/av/BroadcastListener.java
UploadEvent (Interface)
Created by davidbrodsky on 1/28/14. [4 implementers]
sdk/src/main/java/io/kickflip/sdk/event/UploadEvent.java
KickflipCallback (Interface)
Callback interface for Kickflip API calls [3 implementers]
sdk/src/main/java/io/kickflip/sdk/api/KickflipCallback.java
OAuthCallback (Interface)
@hide [1 implementers]
sdk/src/main/java/io/kickflip/sdk/api/OAuthCallback.java
M3u8ParserCallback (Interface)
(no doc) [3 implementers]
sdk/src/main/java/io/kickflip/sdk/av/M3u8Parser.java

Core symbols most depended-on inside this repo

post
called by 24
sdk/src/main/java/io/kickflip/sdk/api/KickflipApiClient.java
checkGlError
called by 16
sdk/src/main/java/io/kickflip/sdk/av/GlUtil.java
postExceptionToCallback
called by 14
sdk/src/main/java/io/kickflip/sdk/api/KickflipApiClient.java
createProgram
called by 14
sdk/src/main/java/io/kickflip/sdk/av/GlUtil.java
isRecording
called by 14
sdk/src/main/java/io/kickflip/sdk/av/AVRecorder.java
getActiveUser
called by 12
sdk/src/main/java/io/kickflip/sdk/api/KickflipApiClient.java
assertActiveUserAvailable
called by 9
sdk/src/main/java/io/kickflip/sdk/api/KickflipApiClient.java
getUUID
called by 9
sdk/src/main/java/io/kickflip/sdk/api/json/User.java

Shape

Method 639
Class 72
Enum 6
Interface 6

Languages

Java100%

Modules by API surface

sdk/src/main/java/io/kickflip/sdk/av/CameraEncoder.java56 symbols
sdk/src/main/java/io/kickflip/sdk/av/SessionConfig.java51 symbols
sdk/src/main/java/io/kickflip/sdk/api/KickflipApiClient.java43 symbols
sdk/src/main/java/io/kickflip/sdk/api/json/Stream.java35 symbols
sdk/src/main/java/io/kickflip/sdk/av/Broadcaster.java32 symbols
sdk/src/main/java/io/kickflip/sdk/fragment/MediaPlayerFragment.java30 symbols
sdk/src/main/java/io/kickflip/sdk/fragment/BroadcastFragment.java29 symbols
sdk/src/main/java/io/kickflip/sdk/av/FFmpegMuxer.java26 symbols
sdk/src/main/java/io/kickflip/sdk/Kickflip.java21 symbols
sdk/src/main/java/io/kickflip/sdk/fragment/GlassBroadcastFragment.java19 symbols
sdk/src/main/java/io/kickflip/sdk/api/OAuthClient.java19 symbols
sdk/src/main/java/io/kickflip/sdk/av/Muxer.java18 symbols

For agents

$ claude mcp add kickflip-android-sdk \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact