AliVCSDK  6.0.0
阿里云音视频SDK,为视频开发者提供一站式接入服务
AlivcLivePushInstance.java
1 package com.alivc.live.pusher;
2 
3 import android.content.Context;
4 import android.util.Log;
5 
7 import com.alivc.live.utils.FileUtil;
8 
9 import java.util.HashMap;
10 
20 @CalledByNative
21 public class AlivcLivePushInstance {
22 
23  private static final String TAG = "AlivcLivePushInstance";
24 
25  // liball_in_one.so
26  private static final String LIB_SO_ALL_IN_ONE = "all_in_one";
27 
28  private static final String KEY_SDCARD_FILE_PATH = "sdcard_file_path";
29  private static final String KEY_SDCARD_CACHE_PATH = "sdcard_cache_path";
30  private static final String KEY_PACKAGE_NAME = "package_name";
31 
32  private static volatile boolean mIsLibLoaded = false;
33  private static volatile boolean mIsSdkInstanceLoaded = false;
34  private static volatile boolean mIsSdkConfigsLoaded = false;
35 
36  private AlivcLivePushInstance() {
37  }
38 
45  public static void loadInstance(Context context) {
47  loadSdkInstance(context);
48  loadSdkConfigs(context);
49  }
50 
57  public static void loadLibrariesOnce() {
58  synchronized (AlivcLivePushInstance.class) {
59  if (!mIsLibLoaded) {
60  System.loadLibrary(LIB_SO_ALL_IN_ONE);
61  mIsLibLoaded = true;
62  Log.d(TAG, "load libraries success!");
63  Log.d(TAG, getSdkBuildInfo());
64  }
65  }
66  }
67 
73  private static void loadSdkInstance(Context context) {
74  if (context == null) {
75  return;
76  }
77  AlivcLiveCommonParams.INSTANCE.initCommonProperties(context);
78  synchronized (AlivcLivePushInstance.class) {
79  if (!mIsSdkInstanceLoaded) {
80  HashMap<String, String> properties = AlivcLiveCommonParams.INSTANCE.getCommonProperties();
81  LivePusherJNI.nativeInitSDKInstance(properties.keySet().toArray(new String[0]), properties.values().toArray(new String[0]));
82  Log.d(TAG, "load sdk instance success!");
83  mIsSdkInstanceLoaded = true;
84  }
85  }
86  }
87 
92  public static String getSdkBuildInfo() {
93  return "---SDK_INFO---" + '\n' +
94  "DEBUG:" + BuildConfig.DEBUG + '\n' +
95  "BUILD_TYPE:" + BuildConfig.BUILD_TYPE + '\n' +
96  "BUILD_INTERACTIVE:" + BuildConfig.BUILD_INTERACTIVE + '\n' +
97  "HEAD_COMMIT_ID:" + BuildConfig.HEAD_COMMIT_ID + '\n' +
98  "MTL_BUILD_ID:" + BuildConfig.MTL_BUILD_ID + '\n' +
99  "MTL_BUILD_TIMESTAMP:" + BuildConfig.MTL_BUILD_TIMESTAMP + '\n' +
100  "MTL_VERSION_CODE:" + BuildConfig.MTL_VERSION_CODE + '\n' +
101  "MTL_VERSION_NAME:" + BuildConfig.MTL_VERSION_NAME;
102  }
103 
104  private static void loadSdkConfigs(Context context) {
105  if (context == null) {
106  return;
107  }
108  synchronized (AlivcLivePushInstance.class) {
109  if (!mIsSdkConfigsLoaded) {
110  Log.d(TAG, "load sdk configs success!");
111  HashMap<String, String> properties = new HashMap<>(4);
112  properties.put(KEY_SDCARD_FILE_PATH, FileUtil.getExternalFileFolder(context));
113  properties.put(KEY_SDCARD_CACHE_PATH, FileUtil.getExternalCacheFolder(context));
114  properties.put(KEY_PACKAGE_NAME, context.getPackageName());
115  LivePusherJNI.nativeInitSDKConfigs(properties.keySet().toArray(new String[0]), properties.values().toArray(new String[0]));
116  mIsSdkConfigsLoaded = true;
117  }
118  }
119  }
120 }