当前位置: 首页 > news >正文

适合个人网站的名称最好的网站优化公司

适合个人网站的名称,最好的网站优化公司,注册网站的步骤,wordpress 自动内链 代码转载至 一行代码帮你检测Android模拟器 具体原理看原博主文章#xff0c;这里只讲cocoscreator3.6的安卓工程怎么使用 1.新建一个com.lahm.library包#xff0c;和com.cocos.game同目录#xff0c;如图示 那四个文件的代码如下#xff1a; EmulatorCheckUtil类#…转载至 一行代码帮你检测Android模拟器    具体原理看原博主文章这里只讲cocoscreator3.6的安卓工程怎么使用 1.新建一个com.lahm.library包和com.cocos.game同目录如图示 那四个文件的代码如下 EmulatorCheckUtil类检测模拟器和真机的工具类是入口 package com.lahm.library;import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Sensor; import android.hardware.SensorManager; import android.text.TextUtils; import android.util.Log;import com.facebook.internal.LockOnGetVariable;import static android.content.Context.SENSOR_SERVICE; import static com.lahm.library.CheckResult.RESULT_EMULATOR; import static com.lahm.library.CheckResult.RESULT_MAYBE_EMULATOR; import static com.lahm.library.CheckResult.RESULT_UNKNOWN;/*** Project Name:检查是否是模拟器* Package Name:com.lahm.library* Created by lahm on 2018/6/8 15:01 .*/ public class EmulatorCheckUtil {private static String TAG EmulatorCheckUtil:;private EmulatorCheckUtil() {}private static class SingletonHolder {private static final EmulatorCheckUtil INSTANCE new EmulatorCheckUtil();}public static final EmulatorCheckUtil getSingleInstance() {return SingletonHolder.INSTANCE;}public boolean readSysProperty(Context context, EmulatorCheckCallback callback) {if (context null)throw new IllegalArgumentException(context must not be null);int suspectCount 0;//检测硬件名称CheckResult hardwareResult checkFeaturesByHardware();switch (hardwareResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(hardware hardwareResult.value);return true;}//检测渠道CheckResult flavorResult checkFeaturesByFlavor();switch (flavorResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(flavor flavorResult.value);return true;}//检测设备型号CheckResult modelResult checkFeaturesByModel();switch (modelResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(model modelResult.value);return true;}//检测硬件制造商CheckResult manufacturerResult checkFeaturesByManufacturer();switch (manufacturerResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null)callback.findEmulator(manufacturer manufacturerResult.value);return true;}//检测主板名称CheckResult boardResult checkFeaturesByBoard();switch (boardResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(board boardResult.value);return true;}//检测主板平台CheckResult platformResult checkFeaturesByPlatform();switch (platformResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount;break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(platform platformResult.value);return true;}//检测基带信息CheckResult baseBandResult checkFeaturesByBaseBand();switch (baseBandResult.result) {case RESULT_MAYBE_EMULATOR:suspectCount 2;//模拟器基带信息为null的情况概率相当大break;case RESULT_EMULATOR:if (callback ! null) callback.findEmulator(baseBand baseBandResult.value);return true;}//检测传感器数量int sensorNumber getSensorNumber(context);if (sensorNumber 7) suspectCount;//检测已安装第三方应用数量int userAppNumber getUserAppNumber();if (userAppNumber 5) suspectCount;//检测是否支持闪光灯boolean supportCameraFlash supportCameraFlash(context);if (!supportCameraFlash) suspectCount;//检测是否支持相机boolean supportCamera supportCamera(context);if (!supportCamera) suspectCount;//检测是否支持蓝牙boolean supportBluetooth supportBluetooth(context);if (!supportBluetooth) suspectCount;//检测光线传感器boolean hasLightSensor hasLightSensor(context);if (!hasLightSensor) suspectCount;//检测进程组信息CheckResult cgroupResult checkFeaturesByCgroup();if (cgroupResult.result RESULT_MAYBE_EMULATOR) suspectCount;if (callback ! null) {StringBuffer stringBuffer new StringBuffer(Test start).append(\r\n).append(hardware ).append(hardwareResult.value).append(\r\n).append(flavor ).append(flavorResult.value).append(\r\n).append(model ).append(modelResult.value).append(\r\n).append(manufacturer ).append(manufacturerResult.value).append(\r\n).append(board ).append(boardResult.value).append(\r\n).append(platform ).append(platformResult.value).append(\r\n).append(baseBand ).append(baseBandResult.value).append(\r\n).append(sensorNumber ).append(sensorNumber).append(\r\n).append(userAppNumber ).append(userAppNumber).append(\r\n).append(supportCamera ).append(supportCamera).append(\r\n).append(supportCameraFlash ).append(supportCameraFlash).append(\r\n).append(supportBluetooth ).append(supportBluetooth).append(\r\n).append(hasLightSensor ).append(hasLightSensor).append(\r\n).append(cgroupResult ).append(cgroupResult.value).append(\r\n).append(suspectCount ).append(suspectCount);callback.findEmulator(stringBuffer.toString());}Log.i(TAG, EmulatorCheck suspectCount: suspectCount);//嫌疑值大于3认为是模拟器return suspectCount 3;}private int getUserAppNum(String userApps) {if (TextUtils.isEmpty(userApps)) return 0;String[] result userApps.split(package:);return result.length;}private String getProperty(String propName) {String property CommandUtil.getSingleInstance().getProperty(propName);return TextUtils.isEmpty(property) ? null : property;}/*** 特征参数-硬件名称** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByHardware() {String hardware getProperty(ro.hardware);if (null hardware) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue hardware.toLowerCase();switch (tempValue) {case ttvm://天天模拟器case nox://夜神模拟器case cancro://网易MUMU模拟器case intel://逍遥模拟器case vbox:case vbox86://腾讯手游助手case android_x86://雷电模拟器result RESULT_EMULATOR;break;default:result RESULT_UNKNOWN;break;}return new CheckResult(result, hardware);}/*** 特征参数-渠道** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByFlavor() {String flavor getProperty(ro.build.flavor);if (null flavor) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue flavor.toLowerCase();if (tempValue.contains(vbox)) result RESULT_EMULATOR;else if (tempValue.contains(sdk_gphone)) result RESULT_EMULATOR;else result RESULT_UNKNOWN;return new CheckResult(result, flavor);}/*** 特征参数-设备型号** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByModel() {String model getProperty(ro.product.model);if (null model) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue model.toLowerCase();if (tempValue.contains(google_sdk)) result RESULT_EMULATOR;else if (tempValue.contains(emulator)) result RESULT_EMULATOR;else if (tempValue.contains(android sdk built for x86)) result RESULT_EMULATOR;else result RESULT_UNKNOWN;return new CheckResult(result, model);}/*** 特征参数-硬件制造商** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByManufacturer() {String manufacturer getProperty(ro.product.manufacturer);if (null manufacturer) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue manufacturer.toLowerCase();if (tempValue.contains(genymotion)) result RESULT_EMULATOR;else if (tempValue.contains(netease)) result RESULT_EMULATOR;//网易MUMU模拟器else result RESULT_UNKNOWN;return new CheckResult(result, manufacturer);}/*** 特征参数-主板名称** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByBoard() {String board getProperty(ro.product.board);if (null board) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue board.toLowerCase();if (tempValue.contains(android)) result RESULT_EMULATOR;else if (tempValue.contains(goldfish)) result RESULT_EMULATOR;else result RESULT_UNKNOWN;return new CheckResult(result, board);}/*** 特征参数-主板平台** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByPlatform() {String platform getProperty(ro.board.platform);if (null platform) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;String tempValue platform.toLowerCase();if (tempValue.contains(android)) result RESULT_EMULATOR;else result RESULT_UNKNOWN;return new CheckResult(result, platform);}/*** 特征参数-基带信息** return 0表示可能是模拟器1表示模拟器2表示可能是真机*/private CheckResult checkFeaturesByBaseBand() {String baseBandVersion getProperty(gsm.version.baseband);if (null baseBandVersion) return new CheckResult(RESULT_MAYBE_EMULATOR, null);int result;if (baseBandVersion.contains(1.0.0.0)) result RESULT_EMULATOR;else result RESULT_UNKNOWN;return new CheckResult(result, baseBandVersion);}/*** 获取传感器数量*/private int getSensorNumber(Context context) {SensorManager sm (SensorManager) context.getSystemService(SENSOR_SERVICE);return sm.getSensorList(Sensor.TYPE_ALL).size();}/*** 获取已安装第三方应用数量*/private int getUserAppNumber() {String userApps CommandUtil.getSingleInstance().exec(pm list package -3);return getUserAppNum(userApps);}/*** 是否支持相机*/private boolean supportCamera(Context context) {return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA);}/*** 是否支持闪光灯*/private boolean supportCameraFlash(Context context) {return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);}/*** 是否支持蓝牙*/private boolean supportBluetooth(Context context) {return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);}/*** 判断是否存在光传感器来判断是否为模拟器* 部分真机也不存在温度和压力传感器。其余传感器模拟器也存在。** return false为模拟器*/private boolean hasLightSensor(Context context) {SensorManager sensorManager (SensorManager) context.getSystemService(SENSOR_SERVICE);Sensor sensor sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); //光线传感器if (null sensor) return false;else return true;}/*** 特征参数-进程组信息*/private CheckResult checkFeaturesByCgroup() {String filter CommandUtil.getSingleInstance().exec(cat /proc/self/cgroup);if (null filter) return new CheckResult(RESULT_MAYBE_EMULATOR, null);return new CheckResult(RESULT_UNKNOWN, filter);} }关键是 readSysProperty这个方法返回false就不是模拟器是真机true是模拟器 此包内的四个文件如下 CheckResult.java   package com.lahm.library;public class CheckResult {public static final int RESULT_MAYBE_EMULATOR 0;//可能是模拟器public static final int RESULT_EMULATOR 1;//模拟器public static final int RESULT_UNKNOWN 2;//可能是真机public int result;public String value;public CheckResult(int result, String value) {this.result result;this.value value;} } CommandUtil.java package com.lahm.library;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.IOException;/*** Project Name:EasyProtector* Package Name:com.lahm.library* Created by lahm on 2018/6/8 16:23 .*/ public class CommandUtil {private CommandUtil() {}private static class SingletonHolder {private static final CommandUtil INSTANCE new CommandUtil();}public static final CommandUtil getSingleInstance() {return SingletonHolder.INSTANCE;}public String getProperty(String propName) {String value null;Object roSecureObj;try {roSecureObj Class.forName(android.os.SystemProperties).getMethod(get, String.class).invoke(null, propName);if (roSecureObj ! null) value (String) roSecureObj;} catch (Exception e) {value null;} finally {return value;}}public String exec(String command) {BufferedOutputStream bufferedOutputStream null;BufferedInputStream bufferedInputStream null;Process process null;try {process Runtime.getRuntime().exec(sh);bufferedOutputStream new BufferedOutputStream(process.getOutputStream());bufferedInputStream new BufferedInputStream(process.getInputStream());bufferedOutputStream.write(command.getBytes());bufferedOutputStream.write(\n);bufferedOutputStream.flush();bufferedOutputStream.close();process.waitFor();String outputStr getStrFromBufferInputSteam(bufferedInputStream);return outputStr;} catch (Exception e) {return null;} finally {if (bufferedOutputStream ! null) {try {bufferedOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if (bufferedInputStream ! null) {try {bufferedInputStream.close();} catch (IOException e) {e.printStackTrace();}}if (process ! null) {process.destroy();}}}private static String getStrFromBufferInputSteam(BufferedInputStream bufferedInputStream) {if (null bufferedInputStream) {return ;}int BUFFER_SIZE 512;byte[] buffer new byte[BUFFER_SIZE];StringBuilder result new StringBuilder();try {while (true) {int read bufferedInputStream.read(buffer);if (read 0) {result.append(new String(buffer, 0, read));}if (read BUFFER_SIZE) {break;}}} catch (Exception e) {e.printStackTrace();}return result.toString();} }EmulatorCheckCallback接口 package com.lahm.library;/*** Project Name:EasyProtector* Package Name:com.lahm.library* Created by lahm on 2018/7/25 15:19 .*/ public interface EmulatorCheckCallback {void findEmulator(String emulatorInfo); } 在cocos.game.AppActivity这个类里先声明一个静态变量 public static boolean isEnumator false; 在onCreate(Bundle savedInstanceState)方法里这样调用 this.isEnumator EmulatorCheckUtil.getSingleInstance().readSysProperty(this, null); 这样就能检测出模拟器还是真机了为true就是模拟器false为真机。 再写个方法给typescript层调用 public static boolean isRunningOnEmulator() {return isEnumator;} typescript层这样调用即可   getEmulator() { //检查是否是模拟器if(native.reflection) {global.bEmulator native.reflection.callStaticMethod(com/cocos/game/AppActivity, isRunningOnEmulator,()Z);}elseglobal.bEmulator false;} 大功告成实测夜神模拟器蓝叠模拟器能检测出来。
http://www.pierceye.com/news/543617/

相关文章:

  • 打电话沟通做网站美食网页模板免费下载
  • 网站可以做库存吗表白网页在线生成网站
  • wordpress全站301网络设计项目
  • 新建网站二级网页怎么做手机建行网站
  • 手机编辑WordPress博客唐山seo推广公司
  • 网站建设祥云平台高明网站设计案例
  • 做网站比较大的公司黑客入侵网站怎么做
  • 汕头网站建设哪里找网站建设找哪家好
  • 怎么做公司的宣传网站免费优化
  • 网站数据库模板下载中牟网络推广公司
  • 营销型网站有什么特点域名解析错误无法上网
  • 手机网站可以做英文版本吗惠州网络科技有限公司
  • 温州专业手机网站制作多少钱wordpress类似头条主题
  • 怎么做一个论坛网站wordpress 注册邮箱验证失败
  • 一家公司做两个网站百度四川营销中心
  • 网站群 主要功能如何自己创建网页
  • 大量增加告权重网站友链回提升网站权重吗官方网站下载地址
  • 哪家做网站的好google 网站营销
  • jsp网站 iisasp.net做的音乐网站
  • 网站特效怎么做的常州网站建设报价
  • 网站漂浮窗口代码麻涌东莞网站建设
  • icp许可证对网站的要求怎么不用wordpress
  • 四平市城市建设档案馆网站山东省建设业协会网站
  • js网站访问计数ui网上接单网站
  • 西安优秀高端网站建设服务商国外网站阻止国内访问怎么做
  • 招生型网站建设不用js做网站
  • 网站正能量视频不懂我意思吧wordpress readme
  • 石家庄网站seo优化站长工具ip地址
  • 网站运行速度慢一个网站做三页是什么意思
  • wordpress视频网站企炬网站