樓主想知道手機與模擬器為何有區(qū)別的,搜來的文章:
創(chuàng)新互聯(lián)公司是專業(yè)的福山網(wǎng)站建設公司,福山接單;提供成都網(wǎng)站制作、網(wǎng)站建設,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行福山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
Android區(qū)分模擬器和真機
最近在搞廣.告平臺的插件,為了防止某些開發(fā)者在模擬機上刷數(shù)據(jù),這就需要我們區(qū)分一下當前使用的是模擬機還是真機,在網(wǎng)上百度了一下,
找到了一段代碼,簡單的測試了一下是可以達到我們的目的的(不過LD說這種方式不行,有漏洞),所以我先把我的代碼貼一下,坐等我LD的方案
。
獲取手機的設備編號,模擬機的是000000000000000
[java]TelephonyManager telmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceID = telmgr.getDeviceId();
boolean isEmulator = "000000000000000".equalsIgnoreCase(deviceID);
if (isEmulator) {
Log.i("xml","模擬器deviceID:"+deviceID);
}
else {
Log.i("xml","真機deviceID:"+deviceID);
}
TelephonyManager telmgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String deviceID = telmgr.getDeviceId();
boolean isEmulator = "000000000000000".equalsIgnoreCase(deviceID);
if (isEmulator) {
Log.i("xml","模擬器deviceID:"+deviceID);
}
else {
Log.i("xml","真機deviceID:"+deviceID);
}
返回的唯一的設備ID,例如,GSM和CDMA手機的ESN,MEID,或IMEI號。如果設備ID是沒有返回null。
需要權限:READ_PHONE_STATE
-----------------------------------------------------
要避開這樣的檢測,一般人沒有這個水平的,所以,樓主的問題基本無解。
方法如下:
/**
* 獲取android當前可用內存大小
*/
private String getAvailMemory() {// 獲取android當前可用內存大小
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);
//mi.availMem; 當前系統(tǒng)的可用內存
return Formatter.formatFileSize(getBaseContext(), mi.availMem);// 將獲取的內存大小規(guī)格化
}
/**
* 獲得系統(tǒng)總內存
*/
private String getTotalMemory() {
String str1 = "/proc/meminfo";// 系統(tǒng)內存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 讀取meminfo第一行,系統(tǒng)總內存大小
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 獲得系統(tǒng)總內存,單位是KB,乘以1024轉換為Byte
localBufferedReader.close();
} catch (IOException e) {
}
return Formatter.formatFileSize(getBaseContext(), initial_memory);// Byte轉換為KB或者MB,內存大小規(guī)格化
}
/**
* 獲得手機屏幕寬高
* @return
*/
public String getHeightAndWidth(){
int width=getWindowManager().getDefaultDisplay().getWidth();
int heigth=getWindowManager().getDefaultDisplay().getHeight();
String str=width+""+heigth+"";
return str;
}
/**
* 獲取IMEI號,IESI號,手機型號
*/
private void getInfo() {
TelephonyManager mTm = (TelephonyManager)this.getSystemService(TELEPHONY_SERVICE);
String imei = mTm.getDeviceId();
String imsi = mTm.getSubscriberId();
String mtype = android.os.Build.MODEL; // 手機型號
String mtyb= android.os.Build.BRAND;//手機品牌
String numer = mTm.getLine1Number(); // 手機號碼,有的可得,有的不可得
Log.i("text", "手機IMEI號:"+imei+"手機IESI號:"+imsi+"手機型號:"+mtype+"手機品牌:"+mtyb+"手機號碼"+numer);
}
/**
* .獲取手機MAC地址
* 只有手機開啟wifi才能獲取到mac地址
*/
private String getMacAddress(){
String result = "";
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
result = wifiInfo.getMacAddress();
Log.i("text", "手機macAdd:" + result);
return result;
}
/**
* 手機CPU信息
*/
private String[] getCpuInfo() {
String str1 = "/proc/cpuinfo";
String str2 = "";
String[] cpuInfo = {"", ""}; //1-cpu型號 //2-cpu頻率
String[] arrayOfString;
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
for (int i = 2; i arrayOfString.length; i++) {
cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " ";
}
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
cpuInfo[1] += arrayOfString[2];
localBufferedReader.close();
} catch (IOException e) {
}
Log.i("text", "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);
return cpuInfo;
}
您好,首先感謝您對中國電信的支持。針對您說的信息,您可以打開手機設置,在關于手機,手機信息中可以了解到您的手機是CDMA還是GSM的。目前電信大部分使用的都是CDMA2000,電信3G網(wǎng)絡,網(wǎng)速穩(wěn)定快捷。您可以登錄安徽電信網(wǎng)廳購買電信3G手機,百款品牌手機全網(wǎng)最低價。
查看手機設備名稱及型號方法如下:
1、在手機桌面中找到“設置”,點擊打開“設置”,安卓手機在控制中心,狀態(tài)欄,上也有。
2、打開“設置”后,“設置”里有很多選項,下翻,有的手機是“通用設置”,有的手機在“通用”找到“關于手機”。
3、點擊打開“關于手機”在“關于手機”中,可以找到手機關于配置的各個說明。手機型號,系統(tǒng)版本,手機的內核等手機參數(shù)。
在手機包裝盒側面或背面有銘牌,銘牌上也有手機名稱及型號,參數(shù)等。
像主流手機背面也有手機名稱及型號,但是字太小,用戶也可以在此查看。望對你有幫助。
前端時間,項目中服務端要求做一些用戶統(tǒng)計的數(shù)據(jù),要求請求頭中加入一些用戶設備信息,故此對Android設備配置信息做一下總結。
android手機信息可以通過android.os.Build類中提取設備硬件和系統(tǒng)版本信息。
硬件制造商(MANUFACTURER)
品牌名稱(BRAND)
主板名稱(BOARD)
設備名 (DEVICE)
型號(MODEL):即用戶可見的名稱
顯示屏參數(shù)(DISPLAY)
產(chǎn)品名稱(PRODUCT):即手機廠商
設備唯一識別碼(FINGERPRINT)
CPU指令集(CPU_ABI)
CPU指令集2(CPU_ABI2)
修訂版本列表(ID)
硬件序列號(SERIAL)
描述build的標簽(TAGS)
通過以上信息就能區(qū)別出手機廠商、品牌和型號信息,從而有針對性的進行操作。
簡單用法:
從所周知,Android是個開源代碼的系統(tǒng),可供大家自由開發(fā)。本人一直都用著國產(chǎn)神器,價錢便宜,但是功能強大,今天特發(fā)奇想地想修改一下系統(tǒng)所顯示的手機型號等,這樣在使用一些社交軟件的時候,所顯示出的手機型號就牛B了,明明就是一個不知名的國產(chǎn)品牌手機 ,硬是變成iPhone 5s ......在此記錄一下在網(wǎng)上查找到的修改方法,其實很簡單。
首先要確保你的手機已經(jīng)取得Root權限,如果還沒有取得,推薦使用百度一鍵Root工具。
然后下載安裝RE管理器。打開re管理器,進入system文件夾。然后掛載為讀寫狀態(tài)
然后長按build.prop,選擇以文本編輯方式打開:ro.product.model=iPhone 5這里就是修改你想顯示的手機型號。
ro.product.manufacturer = iPhone6 (對于安卓手機,一般會獲取這個屬性-制造商也就是手機品牌)
# begin build properties (開始設置系統(tǒng)性能)
# autogenerated by buildinfo.sh (通過設置形成系統(tǒng)信息)
ro.build.id=GRI40 (版本ID)
ro.build.display.id=(版本號)
ro.build.version.incremental=eng.buildbot.20110619.060228 (版本增量)
ro.build.version.sdk=10 (sdk版本)
ro.build.version.codename=REL (版本代號)
ro.build.version.release=110(Android 2.3.4系統(tǒng)無需修改,也可改為3.0裝裝B)
ro.build.date=Sun Jun 19 06:02:58 UTC 2011 (制作者制作的時間,可修改2011年X月X日 某某某制作)
ro.build.date.utc=0
ro.build.type=user
ro.build.user=buildbot
ro.build.host=bb1
ro.build.tags=test-keys
ro.product.model=iPhone 5
ro.product.brand=華爾社 (手機品牌,改為中國山寨機)
ro.product.name=htc_buzz (手機正式名稱,改為小文明用語)
ro.product.device=buzz (采用的設備,改為China G8)
ro.product.board=酷睿I7 (采用的處理器,改為China 800.8Ghz)
ro.product.cpu.abi=armeabi-v6j (cpu的版本)
ro.product.cpu.abi2=armeabi (cpu的品牌)