cocos creator獲取安卓原生平臺上的資訊(ts)
- 說明
- 代碼
- 獲取當前手機系統版本(安卓版本)
- 獲取手機型號
- 獲取手機廠商
- 獲取手機語言
- 獲取手機AndroidID
- 獲取專案包名
- 獲取手機ip地址
說明
首先在cocos上構建專案,原生平臺上的代碼寫在專案\build\jsb-link\frameworks\runtime-src\proj.android-studio\app\src\org\cocos2dx\javascript\AppActivity.java中,jsb.reflection.callStaticMethod是cocos呼叫原生平臺的方法,第一個引數可以理解為檔案地址,可以根據需求改變,第二個引數是方法名,也可改變,第三個引數是方法的引數型別,()Ljava/lang/String;代表的是這個方法不需要引數,回傳string型別的引數,有需要的話可以參考其他文章去改變,
代碼
獲取當前手機系統版本(安卓版本)
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getSystemVersion", "()Ljava/lang/String;");
原生平臺代碼
public static String getSystemVersion() {
return android.os.Build.VERSION.RELEASE;
}
獲取手機型號
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getSystemModel", "()Ljava/lang/String;");
原生平臺代碼
public static String getSystemModel() {
return android.os.Build.MODEL;
}
獲取手機廠商
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getDeviceBrand", "()Ljava/lang/String;");
原生平臺代碼
public static String getDeviceBrand() {
return android.os.Build.BRAND;
}
獲取手機語言
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getLanguage", "()Ljava/lang/String;");
原生平臺代碼
public static String getLanguage(){
return Locale.getDefault().toString();
}
獲取手機AndroidID
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getAndroidId", "()Ljava/lang/String;");
原生平臺代碼
這里的getContentResolver方法是非靜態的,不能直接寫在靜態方法里,我的處理方法是在AppActivity.java的onCreate方法中先獲取到androidId,再去讀取,
//代碼寫在AppActivity.java中 定義androidId
private static String androidId= "";
//代碼寫在AppActivity.java的onCreate方法中
androidId = Settings.System.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
//正常寫在AppActivity.java中
public static String getAndroidId(){
return androidId;
}
獲取專案包名
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getAppId", "()Ljava/lang/String;");
原生平臺代碼
這里的getApplicationInfo方法是非靜態的,不能直接寫在靜態方法里,我的處理方法是在AppActivity.java的onCreate方法中先獲取到appId,再去讀取,
//代碼寫在AppActivity.java中 定義appId
private static String appId = "";
//代碼寫在AppActivity.java的onCreate方法中
appId = context.getApplicationInfo().processName;
//正常寫在AppActivity.java中
public static String getAppId(){
return appId;
}
獲取手機ip地址
jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getIP", "()Ljava/lang/String;");
原生平臺代碼
//代碼寫在AppActivity.java中 定義ipAddress
private static String ipAddress = "";
//代碼寫在AppActivity.java的onCreate方法中
ipAddress = this.getIpAddress(this);
//正常寫在AppActivity.java中
public static String getIP(){
return ipAddress;
}
public String getIpAddress(Context context) {
String ip = "";
ConnectivityManager conMann = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobileNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobileNetworkInfo.isConnected()) {//如果不是wifi網路
ip = this.getLocalIpAddress();
}else if(wifiNetworkInfo.isConnected()) //如果是WiFi網路
{
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
ip = intToIp(ipAddress);
}
return ip;
}
public String getLocalIpAddress() {
try {
Pattern ptipv4 = Pattern.compile("^(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])(\\.(\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])){3}$");
String ipv4;
ArrayList<NetworkInterface> nilist = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface ni: nilist)
{
ArrayList<InetAddress> ialist = Collections.list(ni.getInetAddresses());
for (InetAddress address: ialist){
if (!address.isLoopbackAddress() && ptipv4.matcher(ipv4=address.getHostAddress()).matches())
{
return ipv4;
}
}
}
} catch (SocketException ex) {
Log.e("localip", ex.toString());
}
return null;
}
public static String intToIp(int ipInt) {
StringBuilder sb = new StringBuilder();
sb.append(ipInt & 0xFF).append(".");
sb.append((ipInt >> 8) & 0xFF).append(".");
sb.append((ipInt >> 16) & 0xFF).append(".");
sb.append((ipInt >> 24) & 0xFF);
return sb.toString();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/328028.html
標籤:其他
下一篇:android穩定性測驗
