186 lines
6.2 KiB
Java
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);
|
|
}
|
|
|
|
}
|