package com.secondworld.univeralsdk; 
 | 
  
 | 
import android.Manifest; 
 | 
import android.app.Activity; 
 | 
import android.app.AlertDialog; 
 | 
import android.content.ClipData; 
 | 
import android.content.ClipboardManager; 
 | 
import android.content.Context; 
 | 
import android.content.DialogInterface; 
 | 
import android.content.Intent; 
 | 
import android.content.pm.PackageManager; 
 | 
import android.content.res.Configuration; 
 | 
import android.net.Uri; 
 | 
import android.os.Bundle; 
 | 
import android.os.Environment; 
 | 
import android.provider.Settings; 
 | 
import android.util.Log; 
 | 
import android.widget.Toast; 
 | 
  
 | 
import com.reyun.tracking.sdk.Tracking; 
 | 
import com.ss.android.common.applog.TeaAgent; 
 | 
import com.ss.android.common.applog.TeaConfigBuilder; 
 | 
//import com.ss.android.common.lib.EventUtils; 
 | 
import com.unity3d.player.UnityPlayer; 
 | 
import com.xy.xypay.utils.XYPaySDK; 
 | 
  
 | 
import org.json.JSONException; 
 | 
import org.json.JSONObject; 
 | 
  
 | 
import java.io.File; 
 | 
import java.util.HashMap; 
 | 
import java.util.Map; 
 | 
  
 | 
import cn.jpush.android.api.JPushInterface; 
 | 
import cn.jpush.android.data.JPushLocalNotification; 
 | 
  
 | 
public class H2EngineSDK 
 | 
{ 
 | 
    private static final String TAG = "H2EngineSDK"; 
 | 
    private static String APP_ID = ""; 
 | 
    private static String GAME_ID = ""; 
 | 
  
 | 
    private static boolean PushEnable = true; 
 | 
  
 | 
    public static void HandleUnityMessage(String json) 
 | 
    { 
 | 
        LogUtil.i(TAG, "收到Unity发来的信息: " + json); 
 | 
        Activity _activity = UnityPlayer.currentActivity; 
 | 
        try 
 | 
        { 
 | 
            JSONObject _json = new JSONObject(json); 
 | 
  
 | 
            int _code = _json.getInt("code"); 
 | 
  
 | 
            switch (_code) 
 | 
            { 
 | 
                case CodeU2A.Init: 
 | 
                    APP_ID = _json.getString("appID"); 
 | 
                    if (_json.has("gameID")) 
 | 
                    { 
 | 
                        GAME_ID = _json.getString("gameID"); 
 | 
                    } 
 | 
                    init(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.AssetCopy: 
 | 
                    FileUtil.copyAssets(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.CopyOneAsset: 
 | 
                    FileUtil.copy(_activity, _json.getString("fileName")); 
 | 
                    break; 
 | 
                case CodeU2A.BatteryListenStart: 
 | 
                    BatteryUtil.getInstance().start(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.BatteryListenStop: 
 | 
                    BatteryUtil.getInstance().stop(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.UniqueID: 
 | 
                    break; 
 | 
                case CodeU2A.CopyContent: 
 | 
                    CopyContent(_activity, _json.getString("content")); 
 | 
                    break; 
 | 
                case CodeU2A.OpenWebView: 
 | 
                    WebViewUtil.OpenWebView(_activity, _json.getString("url")); 
 | 
                    break; 
 | 
                case CodeU2A.RestartApp: 
 | 
                    RestartApp(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.InstallAPK: 
 | 
                    InstallApp(_activity, _json.getString("path")); 
 | 
                    break; 
 | 
                case CodeU2A.ExteneralStorage: 
 | 
                    GetExternalStorage(); 
 | 
                    break; 
 | 
                case CodeU2A.RequestPermission: 
 | 
                    break; 
 | 
                case CodeU2A.RequestManifestPermissions: 
 | 
                    break; 
 | 
                case CodeU2A.FreePlatformInit: 
 | 
                    KYPlatformUtil.getInstance().init(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.FreePlatformLogin: 
 | 
                    KYPlatformUtil.getInstance().login(); 
 | 
                    break; 
 | 
                case CodeU2A.FreePlatformSwitchAccount: 
 | 
                    KYPlatformUtil.getInstance().switchAccount(); 
 | 
                    break; 
 | 
                case CodeU2A.FreePlatformLogout: 
 | 
                    KYPlatformUtil.getInstance().switchAccount(); 
 | 
                    break; 
 | 
                case CodeU2A.FreePlatformPay: 
 | 
//                    JSONObject _extraData = new JSONObject(); 
 | 
//                    String productId, 
 | 
//                    String productName, 
 | 
//                    String money, 
 | 
//                    String roleID, 
 | 
//                    String roleName, 
 | 
//                    String orderId, 
 | 
//                    String extraData, 
 | 
//                    String serverID 
 | 
//                    _extraData.put("appid", APP_ID); 
 | 
//                    _extraData.put("cpinfo", _json.getString("cpInfo")); 
 | 
//                    _extraData.put("cporderid", _json.getString("orderId")); 
 | 
//                    _extraData.put("productid", GAME_ID); 
 | 
                    String _extraData = APP_ID  + "|" + _json.getString("cpInfo") + "|" + _json.getString("orderId") + "|" + GAME_ID; 
 | 
                    KYPlatformUtil.getInstance().pay(_json.getString("cpInfo"), 
 | 
                                                     _json.getString("title"), 
 | 
                                                     _json.getString("mount"), 
 | 
                                                     _json.getString("roleID"), 
 | 
                                                     _json.getString("roleName"), 
 | 
                                                     _json.getString("orderId"), 
 | 
                                                     _extraData, 
 | 
                                                     _json.getString("sid"), 
 | 
                                                     _json.getString("notifyurl")); 
 | 
  
 | 
                    KYPlatformUtil.getInstance().payProcessing = true; 
 | 
                    break; 
 | 
                case CodeU2A.PayFinished: 
 | 
                    Tracking.setPayment(_json.getString("orderID"), 
 | 
                                        _json.getString("payType"), 
 | 
                                        _json.getString("moneyType"), 
 | 
                                        (float) _json.getDouble("money")); 
 | 
  
 | 
//                    int _money = (int) (_json.getDouble("money")); 
 | 
  
 | 
//                    EventUtils.setPurchase("", 
 | 
//                                           "", 
 | 
//                                           "", 
 | 
//                                           1, 
 | 
//                                           _json.getString("payType"), 
 | 
//                                           _json.getString("moneyType"), 
 | 
//                                           true, 
 | 
//                                           _money); 
 | 
  
 | 
                    KYPlatformUtil.getInstance().payProcessing = false; 
 | 
                    break; 
 | 
                case CodeU2A.CreateRole: 
 | 
                    KYPlatformUtil.getInstance().createRole(_json.getString("roleID"), 
 | 
                                                            _json.getString("sid"), 
 | 
                                                            _json.getString("roleName").trim().replace(" ", 
 | 
                                                                                                       "")); 
 | 
                    break; 
 | 
                case CodeU2A.RoleLogin: 
 | 
                    KYPlatformUtil.getInstance().enterWorld(_json.getString("roleID"), 
 | 
                                                            _json.getString( 
 | 
                                                                    "roleName").trim().replace(" ", 
 | 
                                                                                               ""), 
 | 
                                                            _json.getString("level"), 
 | 
                                                            _json.getString("sid"), 
 | 
                                                            _json.getString("job")); 
 | 
                    break; 
 | 
                case CodeU2A.ClientPackage: 
 | 
  
 | 
                    break; 
 | 
                case CodeU2A.JPushAddLocalMessage: 
 | 
                    addLocalNotification(_activity, 
 | 
                                         _json.getInt("id"), 
 | 
                                         _json.getString("title"), 
 | 
                                         _json.getString("content"), 
 | 
                                         _json.getLong("fireTime")); 
 | 
                    break; 
 | 
                case CodeU2A.JPushRemoveLocalMessage: 
 | 
                    removeNotification(_activity, _json.getInt("id")); 
 | 
                    break; 
 | 
                case CodeU2A.SendRegistEvent: 
 | 
                    KYPlatformUtil.getInstance().SendRegisterEvent(); 
 | 
                    break; 
 | 
                case CodeU2A.SendLoginEvent: 
 | 
                    KYPlatformUtil.getInstance().SendLoginEvent(); 
 | 
                    break; 
 | 
                case CodeU2A.DownloadStart: 
 | 
                    KYPlatformUtil.getInstance().DownloadStart(); 
 | 
                    break; 
 | 
                case CodeU2A.DownloadEnd: 
 | 
                    KYPlatformUtil.getInstance().DownloadEnd(); 
 | 
                    break; 
 | 
                case CodeU2A.HideFloatIcon: 
 | 
                    XYPaySDK.hideFloatWindow(_activity); 
 | 
                    break; 
 | 
                case CodeU2A.ShowFloatIcon: 
 | 
                    XYPaySDK.showFloatWindow(_activity); 
 | 
                    break; 
 | 
            } 
 | 
  
 | 
        } catch (JSONException e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    // 本地推送 
 | 
    public static void addLocalNotification(Activity activity, int id, String title, String content, 
 | 
                                            long fireTime) 
 | 
    { 
 | 
        if (PushEnable) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                JPushLocalNotification ln = new JPushLocalNotification(); 
 | 
                ln.setBuilderId(0);// 设置样式 
 | 
                ln.setNotificationId(id);// id 
 | 
                ln.setTitle(title);// 标题 
 | 
  
 | 
                ln.setContent(content);// 内容 
 | 
                ln.setBroadcastTime(fireTime);// 等待时间 
 | 
                JPushInterface.addLocalNotification(activity, ln); 
 | 
            } catch (Exception e) 
 | 
            { 
 | 
                e.printStackTrace(); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void removeNotification(Activity activity, int id) 
 | 
    { 
 | 
        if (PushEnable) 
 | 
        { 
 | 
            JPushInterface.removeLocalNotification(activity, id); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void GetExternalStorage() 
 | 
    { 
 | 
        Map<String, Object> _msg = new HashMap<>(); 
 | 
        _msg.put("code", CodeA2U.ExternalStorage); 
 | 
        _msg.put("path", Environment.getExternalStorageDirectory().getAbsolutePath()); 
 | 
        UniversalUtil.sendMessageToUnity(_msg); 
 | 
    } 
 | 
  
 | 
    public static void InstallApp(Activity activity, String path) 
 | 
    { 
 | 
        File _file = new File(path); 
 | 
  
 | 
        if (_file == null) 
 | 
        { 
 | 
            LogUtil.i(TAG, "找不到给定地址的apk: " + path); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        try 
 | 
        { 
 | 
            Intent _intent = new Intent(Intent.ACTION_VIEW); 
 | 
  
 | 
//            if (Build.VERSION.SDK_INT >= 23) 
 | 
//            { 
 | 
//                _intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
 | 
//                Uri _contentUri = FileProvider.getUriForFile(activity, 
 | 
//                                                             "com.shandangceshi.snxxz.fileProvider", 
 | 
//                                                             _file); 
 | 
//                _intent.setDataAndType(_contentUri, "application/vnd.android.package-archive"); 
 | 
// 
 | 
//            } 
 | 
//            else 
 | 
//            { 
 | 
            _intent.setDataAndType(Uri.fromFile(_file), 
 | 
                                   "application/vnd.android.package-archive"); 
 | 
            _intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
 | 
  
 | 
//            } 
 | 
  
 | 
            activity.startActivity(_intent); 
 | 
  
 | 
        } catch (Exception e) 
 | 
        { 
 | 
            e.printStackTrace(); 
 | 
            Toast.makeText(activity, "没有找到打开此类文件的程序", Toast.LENGTH_SHORT).show(); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void CopyContent(final Activity activity, final String content) 
 | 
    { 
 | 
        activity.runOnUiThread(new Runnable() 
 | 
        { 
 | 
            @Override 
 | 
            public void run() 
 | 
            { 
 | 
                ClipboardManager _mgr = (ClipboardManager) activity.getSystemService( 
 | 
                        Context.CLIPBOARD_SERVICE); 
 | 
                ClipData _data = ClipData.newPlainText("playerId", content); 
 | 
                _mgr.setPrimaryClip(_data); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    public static void RestartApp(final Activity activity) 
 | 
    { 
 | 
        Log.i(TAG, "=============== 调用了重启应用的接口 ==============="); 
 | 
        activity.runOnUiThread(new Runnable() 
 | 
        { 
 | 
            @Override 
 | 
            public void run() 
 | 
            { 
 | 
                new Thread() 
 | 
                { 
 | 
                    public void run() 
 | 
                    { 
 | 
                        String _pn = activity.getPackageName(); 
 | 
                        PackageManager _pm = activity.getPackageManager(); 
 | 
                        Intent _l = _pm.getLaunchIntentForPackage(_pn); 
 | 
                        _l.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
 | 
                        activity.startActivity(_l); 
 | 
                        android.os.Process.killProcess(android.os.Process.myPid()); 
 | 
                        Log.i(TAG, "=============== 重启流程执行完毕 ==============="); 
 | 
                    } 
 | 
                }.start(); 
 | 
                activity.finish(); 
 | 
                Log.i(TAG, "=============== 应用finish() ==============="); 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    public static void init(final Activity activity) 
 | 
    { 
 | 
        final int _memoryTotal = (int) (UniversalUtil.getMemTotal() / 1024); 
 | 
        if (_memoryTotal < 1024) 
 | 
        { 
 | 
            LogUtil.i(TAG, "检测设备内存不满足运行程序标准"); 
 | 
            AlertDialog.Builder _builder = new AlertDialog.Builder(activity); 
 | 
            _builder.setIcon(R.drawable.app_icon); 
 | 
            _builder.setTitle("警告"); 
 | 
            _builder.setMessage("您的手机内存不足,无法正常运行游戏"); 
 | 
            _builder.setPositiveButton("确定", new DialogInterface.OnClickListener() 
 | 
            { 
 | 
                @Override 
 | 
                public void onClick(DialogInterface dialogInterface, int i) 
 | 
                { 
 | 
                    android.os.Process.killProcess(android.os.Process.myPid()); 
 | 
                } 
 | 
            }); 
 | 
            _builder.show(); 
 | 
            return; 
 | 
        } 
 | 
  
 | 
        PushEnable = activity.getPackageName().equals("com.yiru.menhtj"); 
 | 
  
 | 
        new Thread(new Runnable() 
 | 
        { 
 | 
            @Override 
 | 
            public void run() 
 | 
            { 
 | 
                LogUtil.i(TAG, "开始执行初始化"); 
 | 
                GetExternalStorage(); 
 | 
  
 | 
                // ------------------------------- 设备信息 ------------------------------- 
 | 
                Map<String, Object> _msgStruct = new HashMap<>(); 
 | 
                _msgStruct.put("code", CodeA2U.DeviceInfo); 
 | 
                _msgStruct.put("userAgent", System.getProperty("http.agent")); 
 | 
                _msgStruct.put("mac", UniqueID.getLocalMac(activity)); 
 | 
//                _msgStruct.put("imei", "asdjhaskdhaksjdhjaskhda"); 
 | 
                _msgStruct.put("imei", UniqueID.get(activity)); 
 | 
                _msgStruct.put("android_id", 
 | 
                               Settings.System.getString(activity.getContentResolver(), 
 | 
                                                         Settings.System.ANDROID_ID)); 
 | 
                _msgStruct.put("unique_id", UniqueID.get(activity)); 
 | 
                _msgStruct.put("memoryTotal", _memoryTotal); 
 | 
                UniversalUtil.sendMessageToUnity(_msgStruct); 
 | 
  
 | 
                // ------------------------------- 极光推送 ------------------------------- 
 | 
                String _registrationID = "0"; 
 | 
                if (PushEnable) 
 | 
                { 
 | 
                    JPushInterface.setDebugMode(true); 
 | 
                    JPushInterface.init(activity); 
 | 
  
 | 
                    final long _waitingTime = System.currentTimeMillis(); 
 | 
  
 | 
                    while (true) 
 | 
                    { 
 | 
                        // 等待获取极光registrationID 
 | 
                        if (!JPushInterface.getRegistrationID(activity).equals("")) 
 | 
                        { 
 | 
                            _registrationID = JPushInterface.getRegistrationID(activity); 
 | 
                            break; 
 | 
                        } 
 | 
  
 | 
                        long _escapeTime = System.currentTimeMillis() - _waitingTime; 
 | 
  
 | 
                        if (_escapeTime > 3000) 
 | 
                        { 
 | 
                            LogUtil.w(TAG, "等待获取极光推送registrationID超时: 3秒"); 
 | 
                            break; 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                _msgStruct.clear(); 
 | 
                _msgStruct.put("code", CodeA2U.PushClientID); 
 | 
                _msgStruct.put("clientID", _registrationID); 
 | 
                UniversalUtil.sendMessageToUnity(_msgStruct); 
 | 
  
 | 
                _msgStruct.clear(); 
 | 
                _msgStruct.put("code", CodeA2U.SdkInitComplete); 
 | 
                _msgStruct.put("channelPlatform", "ky"); 
 | 
                _msgStruct.put("kyAppID", "323"); 
 | 
                UniversalUtil.sendMessageToUnity(_msgStruct); 
 | 
            } 
 | 
  
 | 
        }).start(); 
 | 
    } 
 | 
  
 | 
    public static void onCreate(Activity activity, Bundle savedInstanceState) 
 | 
    { 
 | 
        AppPermissionUtil.requestPermissions(activity, 
 | 
                                             new String[]{ 
 | 
                                                     Manifest.permission.WRITE_EXTERNAL_STORAGE, 
 | 
                                                     Manifest.permission.READ_EXTERNAL_STORAGE, 
 | 
                                                     Manifest.permission.RECORD_AUDIO, 
 | 
                                                     Manifest.permission.READ_PHONE_STATE 
 | 
                                             },new AppPermissionUtil.OnPermissionListener() { 
 | 
                    @Override 
 | 
                    public void onPermissionGranted() { 
 | 
                        //授权 
 | 
                    } 
 | 
  
 | 
                    @Override 
 | 
                    public void onPermissionDenied() { 
 | 
                        //没有授权,或者有一个权限没有授权 
 | 
                    } 
 | 
                }); 
 | 
        // ------------------------------- 猫耳SDK ------------------------------- 
 | 
        KYPlatformUtil.getInstance().init(activity); 
 | 
  
 | 
    } 
 | 
  
 | 
    private static boolean m_IsFocus = true; 
 | 
  
 | 
    public static void onWindowFocusChanged(boolean b) 
 | 
    { 
 | 
        if (KYPlatformUtil.getInstance().payProcessing) 
 | 
        { 
 | 
            if (b) 
 | 
            { 
 | 
                Map<String, Object> _msgStruct = new HashMap<>(); 
 | 
                _msgStruct.put("code", CodeA2U.FreePlatformPayCancel); 
 | 
                UniversalUtil.sendMessageToUnity(_msgStruct); 
 | 
                KYPlatformUtil.getInstance().payProcessing = false; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static void onNewIntent(final Activity activity, final Intent intent) 
 | 
    { 
 | 
    } 
 | 
  
 | 
    public static void onActivityResult(int requestCode, 
 | 
                                        int resultCode, 
 | 
                                        final Intent data, 
 | 
                                        final Activity activity) 
 | 
    { 
 | 
    } 
 | 
  
 | 
    public static void onConfigurationChanged(final Configuration newConfig) {} 
 | 
  
 | 
    public static void onRestart(final Activity activity) 
 | 
    { 
 | 
    } 
 | 
  
 | 
    public static void onStart(final Activity activity) 
 | 
    { 
 | 
    } 
 | 
  
 | 
    public static void onPause(final Activity activity) 
 | 
    { 
 | 
        TeaAgent.onPause(activity); 
 | 
    } 
 | 
  
 | 
    public static void onResume(final Activity activity) 
 | 
    { 
 | 
        TeaAgent.onResume(activity); 
 | 
    } 
 | 
  
 | 
    public static void onStop(final Activity activity) 
 | 
    { 
 | 
    } 
 | 
  
 | 
    public static void onDestroy(final Activity activity) 
 | 
    { 
 | 
        Tracking.exitSdk(); 
 | 
    } 
 | 
} 
 |