androiddpdippx
Ⅰ 如何判斷Android設備是真機還是模擬器
現在的模擬器的功能太強大,從藍牙,感測器等配件到IMEI,Mac,以及手機硬體信息什麼都可以模擬
為了防止用戶利用模擬器模模擬機進行刷單,刷流量等惡意操作
需要獲取設備返回的一些信息來鑒別設備的真偽。
下面是整理的模擬器和真機的區別
雖然大部分都可以模仿,偽造,但是如果綜合所有維度來監控,應該不存在太大問題。
一,native方式。
通過c代碼讀取設備中的配置和硬體相關信息。
1,diskstats
獲取快閃記憶體的分區狀態信息。
int fd = open(「/proc/diskstats」, O_RDONLY);
bytes = read(fd, buf, bytes);
區別:真機下都有mmcblk0分區,但是模擬器沒有分區信息。
2,mac地址。
通過socket和ioctl讀取mac地址。
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
ioctl(sockfd, SIOCGIFCONF, (char*)&ifc);
ioctl(sockfd, SIOCGIFADDR, &ifr[i])
ioctl(sockfd, SIOCGIFHWADDR, (char*)&ifr[i])
區別:真機可以獲取wlan0的ip和mac地址,模擬器只能獲取eth0的ip和mac地址;
3,有用的prop信息。
__system_property_get(key, buf);
區別: 模擬器沒有ro.boot.serialno和ro.serialno屬性,真機中為機器序列號。
模擬器 ro.hardware屬性為goldfish,真機為各自的型號。
4,cpu信息。
int fd = open(「/proc/cpuinfo」, O_RDONLY);
bytes = read(fd, buf, bytes);
區別:模擬器中cpuinfo的硬體為Goldfish。
5,drivers
int fd = open(「/proc/tty/drivers」, O_RDONLY);
區別:模擬器中包含goldfish的驅動
6,模擬器特有文件。
int fd = open(「/dev/socket/qemud」, O_RDONLY);
int fd = open(「/dev/qemu_pipe」, O_RDONLY);
區別:模擬器專有的文件,真機中沒有。
二,傳統的方式:
通過Java層的代碼獲取,可以有以下方式:
1,IMEI和IMSI
IMEI 移動設備國際身份碼。
IMSI IMSI國際移動用戶識別碼,儲存在SIM卡中
final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
String imei = tm.getDeviceId();
String imsi = tm.getSubscriberId();
設備1:354273055927169 / null(無卡)
設備2:862966024243759 / 460011040618938
模擬器:000000000000000 / 310260000000000
2,Serial序列號
String serial = android.os.Build.SERIAL;
設備1:4df78680771b117b
設備2:OBAI5HDQZPDIRCQG
模擬器:unknown
3,android_id
String android_id = Secure.getString(getContentResolver(), Secure.ANDROID_ID);
設備和模擬器都有,16位。
4,Mac地址
WifiManager wifimanage=(WifiManager)getSystemService(Context.WIFI_SERVICE); WifiInfo wifiinfo= wifimanage.getConnectionInfo();
設備1:88:32:9b:1e:49:20
設備2:f8:a4:5f:fd:56:17
模擬器:null
轉載自:
https://my.oschina.net/mastere/blog/424221
Ⅱ android中imagebutton的src設置顯示不出
android中 ImageView ImageButton ImageSwitch等Image 控制項都有一個屬性叫 src
src是表示指定圖像的資源,在代碼中的設置方式
1、imageView.setImageBitmap(Bitmap bmp);傳入參數為Bitmap
2、imageView.setImageDrawable(Drawable able);傳入參數為 BitmapDrawable;
3、imageView.setImageResource(int rid); 傳入參數為圖片資源ID
關於Image 的src和background的區別及說明:
1. ImageView中XML屬性src和background的區別:
background會根據ImageView組件給定的長寬進行拉伸,而src就存放的是原圖的大小,不會進行拉伸。src是圖片內容(前景),bg是背景,可以同時使用。
此外:scaleType只對src起作用;bg可設置透明度,比如在ImageButton中就可以用android:scaleType控制圖片的縮放方式
2.解決android:background背景圖片被拉伸問題:
background設置的圖片會跟View組件給定的長寬比例進行拉伸。舉個例子, 36x36 px的圖標放在 xhdpi 文件夾中,在854x480(FWVGA,對應hdpi)環境下,按照
xhdpi : hdpi : mdpi: ldip = 2 : 1.5 : 1 : 0.75
的比例計算,在FWVGA下,圖標的實際大小應該是 27x27。
Ⅲ android studio 引用aar怎麼編譯不了
1、 簡述
在比較大的 Android 項目的開發中,我們經常會遇到工程、jar 包等等之間相互引用的方式。一般我們通過在 gradle 文件中配置依賴來解決,比如:
<img alt="通用配置" src="http://www.2cto.com/uploadfile/Collfiles/20150519/20150519085924119.png" title="" http:="" www.2cto.com="" kf="" ware="" vc="" "="" target="_blank" class="keylink" style="padding: 0px; margin: 0px auto; list-style: none; display: block; width: 630px; height: 198.454680534918px;">++o7q9q8SzuPbEv8K8z8LL+dPQt/u6z8Cp1bnD+7XEzsS8/tf3zqrSwMC1o7sgPGNvZGU+M8L2NvZGU+TWF2ZW5gIL/i1/fOqtLAwLWju9TaIE1hdmVuIL/i1tDQxCC/ydLUy9HL99fUvLrP69PDtcS/4r340NDSwMC1o7sgPGNvZGU++/Nf3zqrSwMC1oaMNCjxwPr+CIMG9uPa5pLPMo6zP682syrHS/+NXiuPYgTW9kdWxlIL//vNKqtbzI6yBDo6y2+++YWFyPC9jb2RlPiC/4rXEtPKw/Le9yr2jrM7Sw8e/++/="2aar-文件簡介">2、aar 文件簡介
要輸出 aar 文件,必須將 Mole 配置為 library,在 gradle 文件中如下:
輸出 aar : apply plugin: 'com.android.library'; 輸出 apk :apply plugin: 'com.android.application'。
將 Mole 配置為 library 後,構建輸出一個 aar 文件,根據渠道和 BuildType 的不同,在相應的目錄下可以找到。比如對 BuildType 為 debug 的配置,輸出為:[MoleName]/build/outputs/aar/[MoleName]-debug.aar。一份 aar 文件其實就是一份 zip 包,和 jar 不同的是,它將一些資源文件、第三方庫文件、so 文件等等都打包在內,而代碼文件編譯後壓縮在在 classes.jar 中。比如:
3、導入 aar 的方式引用
這種方式比較簡單,打開 Project Structure,添加一個新 Mole,然後選擇 Import *.JAR or *.AAR Package 的方式導入:
導入後,在你的工程下面,會生成一個文件夾,裡面是 aar 文件以及 Android Studio 的配置文件。
接著可以在 gradle 中配置依賴了,其他 Mole 可以引用這個 Mole 了,依賴方式使用compile project 的方式即可。
缺點:被依賴的 aar 無法 F3 跟進去,無法看到資源文件內容以及目錄層級等等缺陷。
4、使用配置依賴的方式引用
gradle 其實還有另一種依賴可以引用 aar:
compile(name: 'xxx', ext: 'aar')。
首先需要將 aar 文件放入引用 Mole 的 libs 目錄下,和一般的 jar 文件類似。然後在 gradle 配置文件中把 libs 目錄加入依賴:
?
1
2
3
4
5
<code class="hljs bash">repositories {
flatDir {
dirs 'libs'
}
}</code>
接著在 gradle 的依賴配置中加入 compile(name: 'xxx', ext: 'aar') 這一句,依賴即可關聯完畢。構建一下工程,在 Mole 的 build/intermediates/exploded-aar 目錄下,可以看到有一些臨時文件生成:
看起來完全是引用 aar 的解壓版本。Android Studio 安裝反編譯插件後,可以通過 F3 跟進到 class 文件裡面,如果你有被依賴 Mole 的源代碼的話,還可以 Attach Source 關聯源代碼查看。另外,可以很方便的查看 aar 中的資源文件。
另外,這種依賴方式更新 aar 後,生成的臨時文件也會隨之變動,不用擔心改動不同步的問題。
5、總結
綜上,介紹了 aar 文件的生成方式,以及兩種 aar 依賴的方式,經過實戰檢驗,第二種通過配置 gradle 依賴的方式簡單易用,只需一行代碼即可搞定。
Ⅳ 造夢西遊3雙人極品號源
用IE打開造夢西遊3創一個號新建一個角色,進入九重天後馬上退回來,點擊文件—離線工作—保存游戲(造夢3不要退關閉)。
打開我的電腦到C、E、D盤(反正所有盤)搜索#4399這個文件,打開文件找到一個文件夾(4399帳號和剛剛的創建的帳號一樣的)。
把裡面的一個文件剪貼下來到桌面上再打開flashSolEditer修改器點擊打開SOL文件找到剛剛剪貼下來的文件,打開很長的字母的地方把原來的號源給刪了把極品號源復制上去(如果是悟空就悟空,反正是那個人物就是那個人物的號源)。
點擊保存SOL文件,再把在桌面的那文件在弄到4399帳號和剛剛的創建的帳號一樣的文件里,在打開造夢3連刷新—連接就好了 。
游戲設定
我們心中一直存在著一份執著的西遊夢想,他寄託著我們及孩子們童年的回憶。4399造夢西遊,為我們構建了一個自由實現自己夢想,施展正義拳腳消滅黑暗邪惡的世界。
人間、地府、天庭 這些艱難險阻怎麼可能擋住我們的腳步。看著那些邪惡的boss倒在自己的腳下,英雄披堅執銳屹立山頭,俯瞰蒼生和平安樂,余願足矣。這就是我們的造夢旅途,我們的造夢西遊。
游戲本身是常見的2D版本卷軸式動作游戲。與其戲不同的是,這款游戲融入了傳統RPG游戲的特點。
Ⅳ Android UI設計長度單位怎麼換算
px :是屏幕的像素點
in :英寸
mm :毫米
pt :磅,1/72 英寸
dp :一個基於density的抽象單位,如果一個160dpi的屏幕,1dp=1px
dip :等同於dp
sp :同dp相似,但還會根據用戶的字體大小偏好來縮放。
建議使用sp作為文本的單位,其它用dip
針對dip和px 的關系,做以下概述:
QVGA屏density=120; QVGA(240*320)
HVGA屏density=160; HVGA(320*480)
WVGA屏density=240; WVGA(480*800)
WQVGA屏density=120 WQVGA(240*400)
density值表示每英寸有多少個顯示點,與解析度是兩個概念。
不同density下屏幕解析度信息,以480dip*800dip的 WVGA(density=240)為例
density=120時
屏幕實際解析度為240px*400px (兩個點對應一個解析度)
狀態欄和標題欄高各19px或者25dip
橫屏是屏幕寬度400px 或者800dip,工作區域高度211px或者480dip
豎屏時屏幕寬度240px或者480dip,工作區域高度381px或者775dip
density=160時
屏幕實際解析度為320px*533px (3個點對應兩個解析度)
狀態欄和標題欄高個25px或者25dip
橫屏是屏幕寬度533px 或者800dip,工作區域高度295px或者480dip
豎屏時屏幕寬度320px或者480dip,工作區域高度508px或者775dip
density=240時
屏幕實際解析度為480px*800px (一個點對於一個解析度)
狀態欄和標題欄高個38px或者25dip
橫屏是屏幕寬度800px 或者800dip,工作區域高度442px或者480dip
豎屏時屏幕寬度480px或者480dip,工作區域高度762px或者775dip
apk的資源包中
當屏幕density=240時,使用hdpi 標簽的資源
當屏幕density=160時,使用mdpi標簽的資源
當屏幕density=120時,使用ldpi標簽的資源。
不加任何標簽的資源是各種解析度情況下共用的。
布局時盡量使用單位dip,少使用px
dp與px換算公式:
pixs =dips * (densityDpi/160).
dips=(pixs*160)/densityDpi
dp這個單位可能對web開發的人比較陌生,因為一般都是使用px(像素)
但是,現在在開始android應用和游戲後,基本上都轉換成用dp作用為單位了,因為可以支持多種解析度的手機.
以下是這兩個單位的概念:
px (pixels)像素 –一個像素通常被視為圖像的最小的完整采樣,這個用的比較多,特別是web開發,頁面基本都是使用像素作為單位的.
dip或dp (device independent pixels)設備獨立像素 — 這個和設備硬體有關,一般我們為了支持手機上多種解析度,如WVGA、HVGA和QVGA,都會使用dip作為長度的單位
在Android開發我們一般都可以不需要使用px的,但是某一些控制項的屬性沒有直接支持dip,像下面的代碼
android.view.ViewGroup.LayoutParams.height
android.view.ViewGroup.LayoutParams.width
上面這兩個屬性的單位為像素,但是為了兼容多種解析度的手機,我們需要最好使用dip,時候我們可以調用以下的代碼進行轉換.
int heightPx= DisplayUtil.dip2px(this, 33);
mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = heightPx;
以上代碼可以在我另一篇文章看得到.該功能是設置Tab的高度,單位是像素.以上的單位轉換是為了支持多解析度手機的.
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
Ⅵ android開發,控制項大小的單位應該用什麼,才能在任何解析度的屏幕上,顯示的比例都相同。
android開發中,在任何解析度都完全一樣的話,那麼你需要用 dp dip sp 等單位來做控制項大小需要注意的一點是如果分辨相同,但是屏幕大小不同,你看起來可能也會不一樣的
關於控制項的單位介紹:
dip: device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬體有關,一般我們為了支持WVGA、HVGA和QVGA 推薦使用這 這個,不依賴像素這里要特別注意dip與屏幕密度有關,而屏幕密度又與具體的硬體有關,硬體設置不正確,有可能導致dip不能正常顯示。在屏幕密度為160的顯示屏上,1dip=1px,有時候可能你的屏幕解析度很大如480*800,但是屏幕密度沒有正確設置比如說還是160,那麼這個時候凡是使用dip的都會顯示異常,基本都是顯示過小。
dip的換算:dip(value)=(int) (px(value)/1.5 + 0.5)
dp: 很簡單,和dip是一樣的。
px: pixels(像素),不同的設備不同的顯示屏顯示效果是相同的,這是絕對像素,是多少就永遠是多少不會改變。
sp: scaled pixels(放大像素). 主要用於字體顯示best for textsize。
備注: 根據google的推薦,view統一使用dip,字體統一使用sp
Ⅶ dp和dip到底是不是一回事兒
目前最新的SDK是推薦dp這個單位,其實在真正開發過程中,無論是dp還是dip都不怎麼會影響到顯示效果;第二個問題,你可以在類裡面獲取屏幕的寬度,然後設置這個值就可以了,不知道是否有幫助。
Ⅷ Android 平台設計規范有哪些
1、尺寸以及解析度:
Android的界面尺寸比較流行的有:480*800、720*1280、1080*1920,我們在做設計圖的 時候建議是以 480*800的尺寸為標准;
2、界面基本組成元素:
界面基本組成元素包括:狀態欄+導航欄+主菜單欄+內容區域;以480*800的尺寸為標准下的 各個元素的高度(其實導航欄和菜單欄每一個應用都或許不一樣,android對於尺寸沒有太明確的 數據規范)如下:
3、字體:
Android 系統中,Droid Sans 是默認字體,與微軟雅黑很像;
4、操作欄:
1、」操作欄」對於 Android 應用來說是最重要的設計元素,它通常在應用運行的所有時間都呆 在屏幕頂部;
2、 操作欄的基本布局:
1向上+2 Spinner視圖控制+3 重要操作按鈕+4 更多操作:其中,向上按鈕,點擊後是去到 當前界面的上一個層級,非第一層級界面有此按鈕,第一層級界面則無向上按鈕;Spinner 是 用於展示內容的下拉菜單,其內容包括視圖的快速切換和顯示相關內容的完整信息;更多操作 (action overflow)是集合操作欄中不常用的和非重要操作的地方。
5、多面板布局:
多面板布局更多的是針對平板電腦,把手機端的目錄視圖和詳情視圖兩個層級的界面,甚至更 多的頁面,復合展示在同一個界面中,有效地利用平板電腦的屏幕空間,扁平化層級結構,簡 化導航。這點在iPad上已經運用得相當嫻熟了。
6、選擇:
Android4.0中的長按與Android2.3及更早期的版本有很大的不同。早期版本長按操作後,是 出現情境菜單的浮出層。在Android4.0中,長按後在操作欄的位置會覆蓋一個臨時的情境操 作欄,不再彈出情境菜單浮出層。在臨時情境操作欄的環境下,當前界面的內容項允許被單個 處理,也允許被批量處理。
7、返回和向上:
返回按鍵用在手機全局的虛擬導航欄中,基於用戶最近查看的界面歷史,採用時間倒序的方式, 連接界面間的關系。向上按鈕用在操作欄的左側,基於層級結構,點擊後是去到當前界面的上一 個層級,若當前界面已經是最高一級,則沒有向上按鈕。
8、主題樣式:
推出三套默認主題:Holo淺色主題、Holo深色主題、Holo淺色底+深色操作欄主題。主推app在 這三套默認主題的基礎上做設計,以加快app研發效率,但只是建議使用,並沒有完全強制。
9、觸摸與反饋:
用戶觸摸應用中的可操作區域,應當在視覺上有響應,微小的反饋會給用戶帶來很好地效果;
10、按鈕:
1、按鈕的3種表現形式如下圖:
2、對於僅包括圖標的按鈕,不需要使用背景色;
11、滑塊:
滑塊的幾種表現形式如下圖:
12、進度條:
如果某個操作需要花費很長的時間,就需要用進度條的指示和旋轉圈的形式來表示:
1、如果你可以知道當前任務完成的比例,那麼使用進度條,讓用戶了解大約還需要多久才能完成;
2、當使用旋轉圓圈時,不要配以文字標簽。旋轉的圓圈已經表明了正在進行後台操作。
13、開關:
用戶通過開關作出選擇,包括3種形式:復選框+單選按鈕+開關;
1、復選框:用戶可以在一個集合中作出多個選擇:
2、單選按鈕:單選按鈕允許用戶在一個集合中做一次選擇;
3、開關:開關控制單個選項的狀態;
14、對話框:
應用通過對話框讓用戶作出決定或者填寫一些信息,
1、對話框的左邊一般情況下是取消按鈕,右邊是確定按鈕;
Ⅸ android density是什麼意思
Android屏幕密度(Density)和解析度概念
density值表示每英寸有多少個顯示點,與解析度是兩個概念。
不同density下屏幕解析度信息:
480*800的WVGA(density=240)
density=120時 屏幕實際解析度為240*400 (兩個點對應一個解析度)
橫屏是屏幕寬度400px 或者800dip,工作區域高度211px或者480dip
豎屏時屏幕寬度240px或者480dip,工作區域高度381px或者775dip
density=160時 屏幕實際解析度為320px*533px (3個點對應兩個解析度)
狀態欄和標題欄高個25px或者25dip
橫屏是屏幕寬度533px 或者800dip,工作區域高度295px或者480dip
豎屏時屏幕寬度320px或者480dip,工作區域高度508px或者775dip
density=240時 屏幕實際解析度為480px*800px (一個點對於一個解析度)
狀態欄和標題欄高個38px或者25dip
橫屏是屏幕寬度800px 或者800dip,工作區域高度442px或者480dip
豎屏時屏幕寬度480px或者480dip,工作區域高度762px或者775dip
Ⅹ DPD填寫遇到網路中斷
出現DPD超時的連接中斷時因為兩端網路訪問無數據,在SA老化後發送DPD未得到對端響應而刪除連接。
DPD:PA線性化技術更大的突破是可使信號預失真。預失真是PA線性化的「法寶」,不過這也非常復雜,並要求了解PA失真特性——而該特性的變化方式非常復雜。
解決方法:
1、開啟用戶側數據中心設備的DPD配置,測試兩端的數據流均可觸發連接建立;
2、在兩端的主機中部署Ping shell腳本,也可在用戶側數據中心的子網的網關設備上配置保活數據,如華為設備的NQA,或cisco的ip sla。