JS技术

发送手机物理标识请求 - Mystra - 博客频道 - CSDN.NET Mystra 知及之,仁不能守之,虽得之,必

字号+ 作者:H5之家 来源:H5之家 2015-12-13 13:08 我要评论( )

本文分析FFmpeg的H.264解码器的主干部分。“主干部分”是相对于“熵解码”、“宏块解码”、“环路滤波”这些细节部分而言的。它包含了H.264解码器直到decode_sli

作为应用的重要关注指标-激活, 需要在每次启动时, 都上传手机的物理标识到服务器. 我来简述一下需要上传的信息.

Android

1. 获取

激活信息主要包含:
1. AppId: 公司拥有多款应用, 标示本应用的类型.
2. Platform: 平台Android或者iOS.
3. SystemVersion: 在Android中, 代表Android版本号.
4. Version: 本应用的版本.
5. AppVersion: 本应用的服务器接口版本.
6. IMEI(International Mobile Equipment Identity): 国际移动设备标识, 手机身份.
7. DeviceId: 设备标示, 一般是IMEI, 也可以是Mac地址.
8. Mac: WIFI的Mac地址.
9. SecureId: 设备随机生成的第一个引导, 间接获取设备寿命.
10. InstallId: 应用安装时间.
11. MODEL: 设备型号
12. MANUFACTURER: 设备生产工厂.

其中获取DeviceId需要权限: READ_PHONE_STATE; 获取Mac地址需要权限ACCESS_WIFI_STATE.

/** * 获取手机标示, 用于激活信息, 需要权限 * READ_PHONE_STATE和ACCESS_WIFI_STATE * <p/> * Created by wangchenlong on 15/12/11. */ { @SuppressWarnings("unused") String TAG = "DEBUG-WCL: " + ActiveInfo.class.getSimpleName(); @SuppressWarnings("all") String STAT_INFO_STR = "app=%s&platform=android&systemVer=%s&version=%s&app_ver=%s&imei=%s" + "&device_id=%s&mac=%s&secureId=%s&installId=%s&phoneType=%s_by_%s&vendor="; String APP_ID = "512"; String VENDOR = "PedometerLibrary"; HTTP_OK = TIME_OUT = ActiveInfo sInstance; private final Context mContext; private final SharedPreferences mPrefs; private final TelephonyManager mTelephonyManager; private final WifiManager mWifiManager; private ActiveInfo() { mContext = PedometerManager.getInstance().getContext(); mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); mTelephonyManager = (TelephonyManager) mContext .getSystemService(Context.TELEPHONY_SERVICE); mWifiManager = (WifiManager) (mContext.getSystemService(Context.WIFI_SERVICE)); } public static ActiveInfo getInstance() { if (sInstance == null) { sInstance = new ActiveInfo(); } return sInstance; } // 获取签名信息 private String getPhoneSignature() { String signature; // 手机标示 signature = String.format(STAT_INFO_STR, getUrlString(APP_ID), // 应用ID getUrlString(android.os.Build.VERSION.RELEASE), // 系统版本 getUrlString(BuildConfig.VERSION_NAME), // SDK版本 getUrlString(BuildConfig.VERSION_NAME), // 服务器版本 getUrlString(getDeviceId()), // IMEI getUrlString(getDeviceId()), // 设备ID getUrlString(getMac()), // Mac地址 getUrlString(getSecureId()), // 安全ID getUrlString(getInstallId()), // 安装时间 getUrlString(android.os.Build.MODEL), // 设备型号 getUrlString(android.os.Build.MANUFACTURER)); // 设备工厂 signature += VENDOR; return signature; } private String getUrlString(String s) { //noinspection deprecation return URLEncoder.encode(s); } // 获取设备ID, 需要权限READ_PHONE_STATE private String getDeviceId() { if (mPrefs.contains(PrefsConsts.PHONE_INFO_DEVICE_ID_PREFS)) { return mPrefs.getString(PrefsConsts.PHONE_INFO_DEVICE_ID_PREFS, ""); } else { mPrefs.edit().putString( PrefsConsts.PHONE_INFO_DEVICE_ID_PREFS, mTelephonyManager.getDeviceId()) .apply(); return mPrefs.getString(PrefsConsts.PHONE_INFO_DEVICE_ID_PREFS, ""); } } // 获取Mac地址, 需要权限ACCESS_WIFI_STATE private String getMac() { if (mPrefs.contains(PrefsConsts.PHONE_INFO_MAC_ADDRESS_PREFS)) { return mPrefs.getString(PrefsConsts.PHONE_INFO_MAC_ADDRESS_PREFS, ""); } else { mPrefs.edit().putString( PrefsConsts.PHONE_INFO_MAC_ADDRESS_PREFS, mWifiManager.getConnectionInfo().getMacAddress()) .apply(); return mPrefs.getString(PrefsConsts.PHONE_INFO_MAC_ADDRESS_PREFS, ""); } } // 获取安全ID private String getSecureId() { if (mPrefs.contains(PrefsConsts.PHONE_INFO_SECURE_ID_PREFS)) { return mPrefs.getString(PrefsConsts.PHONE_INFO_SECURE_ID_PREFS, ""); } else { mPrefs.edit().putString( PrefsConsts.PHONE_INFO_SECURE_ID_PREFS, Settings.Secure.getString( mContext.getContentResolver(), Settings.Secure.ANDROID_ID)) .apply(); return mPrefs.getString(PrefsConsts.PHONE_INFO_SECURE_ID_PREFS, ""); } } // 获取安装时的系统时间 private String getInstallId() { if (mPrefs.contains(PrefsConsts.PHONE_INFO_INSTALL_ID_PREFS)) { return mPrefs.getString(PrefsConsts.PHONE_INFO_INSTALL_ID_PREFS, ""); } else { mPrefs.edit().putString( PrefsConsts.PHONE_INFO_INSTALL_ID_PREFS, String.format("%d", System.currentTimeMillis())) .apply(); return mPrefs.getString(PrefsConsts.PHONE_INFO_INSTALL_ID_PREFS, ""); } } () { String path = "http://api.chunyu.me/api/launch_request/?"; path += getPhoneSignature(); Log.d(TAG, "url: " + path); try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(TIME_OUT); // 连接超时 connection.connect(); if (connection.getResponseCode() == HTTP_OK) { Log.d(TAG, " 发送激活信息成功"); } else { Log.e(TAG, " 发送激活信息失败: " + connection.getResponseCode()); } connection.disconnect(); } catch (IOException e) { e.printStackTrace(); } } }

为了减少获取代价, 可以存储一些关键值到首选项.

2. 上传

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Android静默安装实现方案,仿360手机助手秒装和智能安装功能 - 郭霖的专栏 - 博客频道 - CSDN.NET

    Android静默安装实现方案,仿360手机助手秒装和智能安装功能 - 郭霖

    2015-12-14 17:56

  • JavaScript发送邮件

    JavaScript发送邮件

    2014-11-17 20:00

网友点评
l