Commit bd59cb23 bd59cb23848cdaebff9540773bc6242143cc255b by hu.guorui

四色键及进程退出处理

1 parent dadb0c67
......@@ -29,6 +29,8 @@
<uses-permission android:name="com.hiveview.cloudscreen.user.READPROVIDER" />
<uses-permission android:name="com.hiveview.cloudscreen.user.WRITE_USERINFO_DB" />
<uses-permission android:name="android.permission.GET_TASKS"/>
<application
android:name="org.cocos2dx.javascript.common.MelodyApplication"
android:allowBackup="false"
......
......@@ -103,6 +103,11 @@ android {
signingConfig signingConfigs.config
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
android.applicationVariants.all { variant ->
......
package cn.topdraw.forfun.constant;
/**
*
*/
public class ControlKey {
public static final int KEYCODE_CMCC_RED = 170;
public static final int KEYCODE_CMCC_GREEN = 1112;
public static final int KEYCODE_CMCC_YELLOW = 1113;
public static final int KEYCODE_CMCC_BLUE = 1114;
}
package cn.topdraw.forfun.util;
import android.os.Handler;
import android.os.Looper;
/**
*
*/
public class Timer {
private Handler mainHandler = new Handler(Looper.getMainLooper());
private Runnable queuedTask = null;
private Long periodStartTime = 0L;
private Runnable periodDriver = null;
private boolean canceled = true;
private int periodCount = 0;
public void start(Long delayedMs, Long periodMs, Runnable task) {
if (delayedMs < 0 || periodMs < 0) {
return;
}
cancel();
canceled = false;
queuedTask = task;
mainHandler.postDelayed(() -> {
if (queuedTask != null) {
queuedTask.run();
}
if (periodMs != 0L) {
periodCount = 0;
periodDriver = () -> {
if (!canceled) {
periodCount++;
Long currentTime = System.currentTimeMillis();
Long timeCompensation =
(currentTime - periodStartTime) - periodMs * periodCount;
if (queuedTask != null) {
queuedTask.run();
}
Long compensatedPeriod = periodMs - timeCompensation;
mainHandler.postDelayed(
periodDriver,
compensatedPeriod < 0 ? 0 : compensatedPeriod);
}
};
if (!canceled) {
periodStartTime = System.currentTimeMillis();
mainHandler.postDelayed(periodDriver, periodMs);
}
}
}, delayedMs);
}
public void cancel() {
mainHandler.removeCallbacksAndMessages(null);
queuedTask = null;
canceled = true;
}
}
......@@ -31,10 +31,9 @@ import org.cocos2dx.javascript.component.NewTVSDK;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import android.app.AlertDialog;
import android.app.ActivityManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
......@@ -43,8 +42,8 @@ import android.os.Bundle;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Handler;
import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
......@@ -52,7 +51,6 @@ import android.webkit.CookieManager;
import android.webkit.JavascriptInterface;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.knowyou_jni.single.SDKUtil;
import com.topdraw.forfun_FJYD.R;
......@@ -69,6 +67,9 @@ import org.cocos2dx.javascript.common.MelodyApplication;
import org.cocos2dx.javascript.common.TopdrawSDKWrapper;
import org.cocos2dx.lib.Cocos2dxJavascriptJavaBridge;
import cn.topdraw.forfun.constant.ControlKey;
import cn.topdraw.forfun.util.Timer;
public class AppActivity extends Cocos2dxActivity {
private static String TAG = "AppActivity";
private static ImageView img = null;
......@@ -100,10 +101,15 @@ public class AppActivity extends Cocos2dxActivity {
private final Handler mHandler = new Handler();
private boolean mExitAppOnStop = true;
private Timer mAppCheckTimer = new Timer();
private ActivityManager mActivityManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CommonUtils.checkNetwork(this); //检查网络
mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
initSdkData();
......@@ -285,6 +291,21 @@ public class AppActivity extends Cocos2dxActivity {
});
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == ControlKey.KEYCODE_CMCC_RED
|| keyCode == ControlKey.KEYCODE_CMCC_GREEN
|| keyCode == ControlKey.KEYCODE_CMCC_YELLOW
|| keyCode == ControlKey.KEYCODE_CMCC_BLUE) {
finish();
return true;
}
}
return super.dispatchKeyEvent(event);
}
public View getProgressBarView() {
return view;
}
......@@ -407,12 +428,27 @@ public class AppActivity extends Cocos2dxActivity {
SDKWrapper.getInstance().onPause();
}
private static final String INSTALLER_HOME_ACTIVITY_NAME = "com.android.packageinstaller.PackageInstallerActivity";
private static final String INSTALLER_PROGRESS_ACTIVITY_NAME = "com.android.packageinstaller.InstallAppProgress";
@Override
protected void onStop() {
Log.d("AppActivity", "onStop()....");
super.onStop();
SDKWrapper.getInstance().onStop();
onDestroy();
if (mExitAppOnStop) {
System.exit(0);
} else {
mAppCheckTimer.start(1000L, 1000L, () -> {
String activity_name = mActivityManager.getRunningTasks(1).get(0).topActivity.getClassName();
if (!activity_name.equals(mOrbbecActivity)
&& !activity_name.equals(INSTALLER_HOME_ACTIVITY_NAME)
&& !activity_name.equals(INSTALLER_PROGRESS_ACTIVITY_NAME)) {
Log.d("AppActivity", "top activity: " + activity_name);
System.exit(0);
}
});
}
}
@Override
......@@ -429,6 +465,8 @@ public class AppActivity extends Cocos2dxActivity {
protected void onResume() {
// Log.d("AppActivity", "onResume()....");
super.onResume();
mExitAppOnStop = true;
mAppCheckTimer.cancel();
SDKWrapper.getInstance().onResume();
mRLSingleColor.setVisibility(View.GONE);
mOBiLayout.setVisibility(View.GONE);
......@@ -461,6 +499,16 @@ public class AppActivity extends Cocos2dxActivity {
}
}
public void setExitAppOnStop(boolean finish) {
mExitAppOnStop = finish;
}
private String mOrbbecActivity = "";
public void setOrbbecActivity(String activityName) {
mOrbbecActivity = activityName;
}
/**
* 福建移动埋点SDK、启动游戏
*
......
......@@ -9,7 +9,6 @@ import android.net.Uri;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;
......@@ -252,6 +251,8 @@ public class TopdrawSDKWrapper {
final View obiView = _activity.getObiView();
final String packageName = apkName;
final String className = "com.orbbec.u3d.baminsdk.FujianActivity";//福建移动奥比启动类名已修改为固定值
_activity.setExitAppOnStop(false);
_activity.setOrbbecActivity(className);
OBiPluginLoader.getInstance().start(downloadUrl, packageName, new OBiPluginLoader.OnResultListener() {
@Override
public void onResult(int i, final String msg) {
......