通过Android SDK控制大朋一体机
1.安装应用
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "installApk");
intent.putExtra("apkPath",filePath);
sendBroadcast(intent);
参数说明:filePath :如"/sdcard/Download/apkname.apk"
2.卸载应用
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "uninstallApk");
intent.putExtra("packageName",packageName);
sendBroadcast(intent);
参数说明:packageName: 应用包名,eg:"com.test.sample"
3.打开应用
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "openApk");
intent.putExtra("packageName",packageName);
sendBroadcast(intent);
参数说明:packageName: 应用包名,eg:"com.test.sample"
4.关闭应用
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "closeApk");
intent.putExtra("packageName",packageName);
sendBroadcast(intent);
参数说明:packageName: 应用包名,eg:"com.test.sample"
5.重启
系统重启
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "reboot");
sendBroadcast(intent);
6.关机
系统关机
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("controlType", "package");
intent.putExtra("operation", "shutdown");
sendBroadcast(intent);
以下为每个字段的含义:
controlType:表示控制类型,目前只有一种 package;
operation:表示操作类型,包括openApk/closeApk/installApk/uninstallApk/reboot/shutdown;
packageName:包名,操作类型为openApk/closeApk/uninstallApk的时候传该参数;
apkPath:包路径,只有操作类型为installApk的时候传递该参数;
7.状态完成广播
action:"com.deepoon.dpnController.RESULT"
StringExtra: "controlType"
StringExtra: "packageName"
StringExtra: "operation"
8.自定义长按返回键
允许用户指定在Home键事件触发时打开的应用。
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("operation", "blockhomekey");
intent.putExtra("command", 1);
intent.putExtra("packageName","com.deepoon.dpnapkcontroller");
intent.putExtra("className","com.deepoon.dpnapkcontroller.MainActivity");
sendBroadcast(intent);
参数说明:
// command value: // 1开启自定义长按返回键功能
// 0关闭自定义长按返回键功能
// packageName value:应用包名
// className value:目标Activity的类名
9. 阻止系统休眠
调用方式:
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("operation", "blockgotosleep");
intent.putExtra("command",19);
sendBroadcast(intent);
参数说明
// command可取如下值:
0 |
恢复默认行为,不阻止系统按键事件或休眠事件。 |
0x1 |
阻止系统Power按键事件 |
0x2 |
阻止系统返回键按键事件 |
0x4 |
阻止Home键事件 |
0x10 |
屏幕常亮,系统正常运行 |
0x20 |
屏幕由于P-Sensor远离事件熄灭后,系统不会进入休眠,保证App的OnPause不被调用到,以确保UnityMain线程正常循环运行。 |
如果需要阻止多个功能,请通过或操作将需要的功能设置到command中。如需要阻止power、返回和保持屏幕常亮,请将19(0x1 | 0x2 | 0x10)或(0x1 + 0x2 + 0x10)设置给command。
If you want block several functions together, you can send aboved cmd values addition. e.x. If you want block power key & back key & keep screen always-on, the cmd value will be 19(1+2+16). It is very flexible and customizable. Following the above setting, if you want back to normal & just keep blocking power key, you can just send 1(19-2-16). For clearing all blockings, just send 0.
10. 设置新的Home Launcher
调用方式:
方式1:
public void setNewLauncher(String packageName) {
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("operation", "setnewlauncher");
intent.putExtra("launcherPkg", packageName);
mContext.sendBroadcast(intent);
Log.d(TAG, "Set new home launcher: " + packageName);
}
public void restoreDpnLauncher() {
Intent intent = new Intent("com.deepoon.dpnController.PACKAGE_CONTROL");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("operation", "restoredpnlauncher");
mContext.sendBroadcast(intent);
Log.d(TAG, "Restore home to DpnLauncher");
}
|
方式2:
public void setDefaultLauncher(String launcher){
Intent intent = new Intent("deepoon.intent.action.DEVICE_DEFAULT_LAUNCHER");
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
intent.putExtra("launcher_default", 1);
intent.putExtra("launcher_packagename", launcher);
mContext.sendBroadcast(intent);
}
|
参数说明:
// launcher_packagename value: // 新Launcher应用的包名,新Launcher 主Activity最好添加以下属性。
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
11. 保持灭屏后wifi不休眠(会影响待机功耗)
正常情况下设备wifi会在灭屏15分钟后进入休眠(或者关闭)以优化待机功耗。如果有需求需要,即使设备灭屏后也要保持后台wifi一直工作,可以通过此开关打开。
setSystemProperties("debug.wifi.neversleep", "1"); //保持wifi后台一直工作
setSystemProperties("debug.wifi.neversleep", "0"); //恢复wifi灭屏后休眠逻辑
public void setSystemProperties(String name, String value) {
try {
Class<?> clazz = Class.forName("android.os.SystemProperties");
Method method = clazz.getMethod("set", new Class[]{String.class, String.class});
method.invoke(null, new Object[]{name, value});
} catch (Exception e) {
Log.e(TAG, "Exception: " + e);
}
}
|