2020-08-07 20:45:04 +08:00

186 lines
6.2 KiB
Java

package com.jc.jcfw;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.VibrationEffect;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.jc.jcfw.util.IdUtil;
import com.jc.jcfw.util.Leaderboard;
import com.jc.jcfw.util.StorageUtil;
import com.jc.jcfw.util.StringUtil;
import com.tencent.bugly.crashreport.CrashReport;
import org.cocos2dx.javascript.AdManage;
import org.cocos2dx.javascript.AppActivity;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Iterator;
import java.util.Locale;
public class JcSDK {
private static final String TAG = "JcSDK";
private static boolean isDebug = false;
private static Vibrator vibrator;
private static FirebaseAnalytics mFirebaseAnalytics;
private static SharedPreferences sharedPref;
private static Leaderboard leaderboard;
public static void init(Context context) {
isDebug = isApkInDebug(context);
AdManage.getInstance().init(context);
vibrator = (Vibrator) AppActivity.app.getSystemService(Context.VIBRATOR_SERVICE);
mFirebaseAnalytics = ((AppActivity)context).getmFirebaseAnalytics();
sharedPref = PreferenceManager.getDefaultSharedPreferences(AppActivity.app);
leaderboard = Leaderboard.getInstance(sharedPref);
// String[] names = NameUtil.generateEname(1, 40);
// for(String name: names) {
// System.out.println(name);
// }
}
public static void showBanner() {
Log.i(TAG,"showBanner");
AdManage.showBanner();
}
public static void hideBanner() {
Log.i(TAG,"hideBanner");
AdManage.hideBanner();
}
public static void showRewardVideo() {
Log.i(TAG,"showRewardVideo");
AdManage.showRewardVideo();
}
public static void showInterstitial() {
Log.i(TAG,"showInterstitial");
AdManage.showInterstitial();
}
public static void showToast(String msg) {
AppActivity.app.runOnUiThread(() -> {
if (isDebug) {
Toast.makeText(AppActivity.app, msg, Toast.LENGTH_LONG).show();
}
});
}
/**
* 获取用户唯一id
* @return id {String}
*/
public static String generateUid() {
String id = StorageUtil.readId(sharedPref);
if (StringUtil.isBlank(id)) {
id = IdUtil.getUid(AppActivity.app);
StorageUtil.writeId(sharedPref, id);
}
Log.i(TAG, "generateUid: " + id);
logUserLogin(id);
CrashReport.setUserId(id);
return id;
}
/**
* 震动须添加权限
* <uses-permission android:name="android.permission.VIBRATE"/>
* @param type {int} 震动类型 0: 短震动, 1: 长震动
* */
public static void vibrate(int type) {
Log.i(TAG, "vibrate: " + type);
AppActivity.app.runOnUiThread(() -> {
long time = type == 0 ? 15 : 500;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrator.vibrate(VibrationEffect.createOneShot(time, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
//deprecated in API 26
vibrator.vibrate(time);
}
});
}
/**
* 判断当前应用是否是debug状态
*/
private static boolean isApkInDebug(Context context) {
try {
ApplicationInfo info = context.getApplicationInfo();
return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
} catch (Exception e) {
return false;
}
}
public static String getCurrentLauguage() {
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //7.0有多语言设置获取顶部的语言
locale = AppActivity.app.getResources().getConfiguration().getLocales().get(0);
} else {
locale = AppActivity.app.getResources().getConfiguration().locale;
}
Log.i(TAG,"locale: " + locale.getLanguage() + " | "+locale.getCountry());
if (locale.getLanguage().equals("zh")) {
if (locale.getCountry().equals("CN")) {
return "zh";
} else {
return "tw";
}
} else {
return "en";
}
}
private static void logUserLogin(String uid) {
mFirebaseAnalytics.setUserId(uid);
Bundle bundle = new Bundle();
bundle.putString("userId", uid);
mFirebaseAnalytics.logEvent("user_login", bundle);
}
/** 日志上报 */
public static void glog(String eventName, String params) {
try {
JSONObject jsonObject = new JSONObject(params);
Bundle bundle = new Bundle();
Iterator iterator = jsonObject.keys();
while(iterator.hasNext()){
String key = (String) iterator.next();
bundle.putString(key, jsonObject.getString(key));
}
mFirebaseAnalytics.logEvent(eventName, bundle);
} catch (JSONException e) {
Log.e(TAG, "glog error, event: " + eventName + " data: " + params);
}
}
public static void saveData(String keyName, String value) {
Log.i(TAG, "saveData: " + keyName + " value: " + value );
StorageUtil.writeString(sharedPref, keyName, value);
}
public static String readData(String keyName) {
String result = StorageUtil.readString(sharedPref, keyName);
return StringUtil.isBlank(result) ? "" : result;
}
public static void removeData(String keys) {
if (!StringUtil.isBlank(keys)) {
String[] keyArr = keys.split(",");
for (String k: keyArr) {
StorageUtil.removeString(sharedPref, k);
}
}
}
public static String lbTop20(String accountId) {
return leaderboard.getTop20(accountId);
}
public static String updateRank(String accountId, String name, int score) {
return leaderboard.updateRank(accountId, name, score);
}
}