Android Open Source - kickflip-android-sdk Util






From Project

Back to project page kickflip-android-sdk.

License

The source code is released under:

Apache License

If you think the Android project kickflip-android-sdk listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package io.kickflip.sdk;
//from  w  ww .  ja  v a 2s.c om
import android.content.Context;
import android.os.Build;
import android.text.format.DateUtils;

import java.io.File;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Locale;
import java.util.TimeZone;

import io.kickflip.sdk.av.SessionConfig;

/**
 * Created by David Brodsky on 3/20/14.
 */
public class Util {
    //"04/03/2014 23:41:37",
    private static SimpleDateFormat mMachineSdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.US);
    ;
    private static SimpleDateFormat mHumanSdf = new SimpleDateFormat("MM/dd/yyyy hh:mm a", Locale.US);

    static {
        mMachineSdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    }

    public static boolean isKitKat() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT;
    }

    public static String getHumanDateString() {
        return mHumanSdf.format(new Date());
    }

    public static String getHumanRelativeDateStringFromString(String machineDateStr) {
        String result = null;
        try {
            result = DateUtils.getRelativeTimeSpanString(mMachineSdf.parse(machineDateStr).getTime()).toString();
            result = result.replace("in 0 minutes", "just now");
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * Create a {@link io.kickflip.sdk.av.SessionConfig}
     * corresponding to a 720p video stream
     *
     * @param context the host application Context. Used to access Internal Storage
     * @return the resulting SessionConfig
     */
    public static SessionConfig createRTMPpSessionConfig(Context context, String target) {
        String outputPath = target;
        // Note SessionConfig actually places each recording in a unique folder
        // e.g: if you pass /sdcard/test/index.m3u8, your recording will be in
        //                  /sdcard/test/<some-uuid>/index.m3u8
        // You can query the actual output file location with SessionConfig#getOutputPath() or the containing directory
        // with SessionConfig#getOutputDirectory() after construction.
        SessionConfig config = new SessionConfig.Builder(outputPath)
                .withTitle(Util.getHumanDateString())
                .withDescription("A live stream!")
                .withVideoResolution(320, 240)
                .withVideoBitrate(300 * 1000)
                .withAudioBitrate(192 * 1000)
                .withPrivateVisibility(false)
                .withLocation(false)
                .build();
        return config;
    }

    public static SessionConfig create720pHLSSessionConfig(Context context) {
        HashMap<String, String> extraData = new HashMap<>();
        extraData.put("key", "value");

        String outputPath = new File(context.getFilesDir(), "index.m3u8").getAbsolutePath();
        // Note SessionConfig actually places each recording in a unique folder
        // e.g: if you pass /sdcard/test/index.m3u8, your recording will be in
        //                  /sdcard/test/<some-uuid>/index.m3u8
        // You can query the actual output file location with SessionConfig#getOutputPath() or the containing directory
        // with SessionConfig#getOutputDirectory() after construction.
        SessionConfig config = new SessionConfig.Builder(outputPath)
                .withTitle(Util.getHumanDateString())
                .withDescription("A live stream!")
                .withAdaptiveStreaming(true)
                .withVideoResolution(1280, 720)
                .withVideoBitrate(2 * 1000 * 1000)
                .withAudioBitrate(192 * 1000)
                .withExtraInfo(extraData)
                .withPrivateVisibility(false)
                .withLocation(true)
                .build();
        return config;
    }

    /**
     * Create a {@link io.kickflip.sdk.av.SessionConfig}
     * corresponding to a 420p video stream
     *
     * @param context the host application Context. Used to access Internal Storage
     * @return the resulting SessionConfig
     */
    public static SessionConfig create420pSessionConfig(Context context, String targer) {
        String outputPath = new File(context.getFilesDir(), "index.m3u8").getAbsolutePath();
        SessionConfig config = new SessionConfig.Builder(outputPath)
                .withTitle(Util.getHumanDateString())
                .withVideoBitrate(1 * 1000 * 1000)
                .withPrivateVisibility(false)
                .withLocation(true)
                .withVideoResolution(720, 480)
                .build();
        return config;
    }
}




Java Source Code List

io.kickflip.sdk.FileUtils.java
io.kickflip.sdk.Kickflip.java
io.kickflip.sdk.Share.java
io.kickflip.sdk.Util.java
io.kickflip.sdk.activity.BroadcastActivity.java
io.kickflip.sdk.activity.GlassBroadcastActivity.java
io.kickflip.sdk.activity.ImmersiveActivity.java
io.kickflip.sdk.activity.MediaPlayerActivity.java
io.kickflip.sdk.api.KickflipApiClient.java
io.kickflip.sdk.api.KickflipCallback.java
io.kickflip.sdk.api.OAuthCallback.java
io.kickflip.sdk.api.OAuthClient.java
io.kickflip.sdk.api.OAuthConfig.java
io.kickflip.sdk.api.json.HlsStream.java
io.kickflip.sdk.api.json.Response.java
io.kickflip.sdk.api.json.StreamList.java
io.kickflip.sdk.api.json.Stream.java
io.kickflip.sdk.api.json.User.java
io.kickflip.sdk.api.s3.S3BroadcastManager.java
io.kickflip.sdk.api.s3.package-info.java
io.kickflip.sdk.av.AVRecorder.java
io.kickflip.sdk.av.AndroidEncoder.java
io.kickflip.sdk.av.AndroidMuxer.java
io.kickflip.sdk.av.AudioEncoderConfig.java
io.kickflip.sdk.av.AudioEncoderCore.java
io.kickflip.sdk.av.BroadcastListener.java
io.kickflip.sdk.av.Broadcaster.java
io.kickflip.sdk.av.CameraEncoder.java
io.kickflip.sdk.av.CameraSurfaceRenderer.java
io.kickflip.sdk.av.Drawable2d.java
io.kickflip.sdk.av.EglCore.java
io.kickflip.sdk.av.EglStateSaver.java
io.kickflip.sdk.av.EglSurfaceBase.java
io.kickflip.sdk.av.FFmpegMuxer.java
io.kickflip.sdk.av.Filters.java
io.kickflip.sdk.av.FullFrameRect.java
io.kickflip.sdk.av.GlUtil.java
io.kickflip.sdk.av.HlsFileObserver.java
io.kickflip.sdk.av.M3u8Parser.java
io.kickflip.sdk.av.MicrophoneEncoder.java
io.kickflip.sdk.av.Muxer.java
io.kickflip.sdk.av.SessionConfig.java
io.kickflip.sdk.av.SizeableFrameRect.java
io.kickflip.sdk.av.Texture2dProgram.java
io.kickflip.sdk.av.VideoEncoderConfig.java
io.kickflip.sdk.av.VideoEncoderCore.java
io.kickflip.sdk.av.WindowSurface.java
io.kickflip.sdk.event.BroadcastEvent.java
io.kickflip.sdk.event.BroadcastIsBufferingEvent.java
io.kickflip.sdk.event.BroadcastIsLiveEvent.java
io.kickflip.sdk.event.CameraOpenedEvent.java
io.kickflip.sdk.event.HlsManifestUploadedEvent.java
io.kickflip.sdk.event.HlsManifestWrittenEvent.java
io.kickflip.sdk.event.HlsSegmentUploadedEvent.java
io.kickflip.sdk.event.HlsSegmentWrittenEvent.java
io.kickflip.sdk.event.MuxerFinishedEvent.java
io.kickflip.sdk.event.S3FailedUploadEvent.java
io.kickflip.sdk.event.S3UploadEvent.java
io.kickflip.sdk.event.StreamLocationAddedEvent.java
io.kickflip.sdk.event.ThumbnailWrittenEvent.java
io.kickflip.sdk.event.UploadEvent.java
io.kickflip.sdk.event.package-info.java
io.kickflip.sdk.exception.KickflipException.java
io.kickflip.sdk.fragment.BroadcastFragment.java
io.kickflip.sdk.fragment.GlassBroadcastFragment.java
io.kickflip.sdk.fragment.MediaPlayerFragment.java
io.kickflip.sdk.fragment.package-info.java
io.kickflip.sdk.location.DeviceLocation.java
io.kickflip.sdk.location.package-info.java
io.kickflip.sdk.view.GLCameraEncoderView.java
io.kickflip.sdk.view.GLCameraView.java
io.kickflip.sdk.view.package-info.java
pro.dbro.ffmpegwrapper.FFmpegWrapper.java
pro.dbro.ffmpegwrapper.package-info.java