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; } /** * 震动须添加权限 * * @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); } }