編輯:關於Android編程
處理不同的傳感器器配置
Android不給設備指定標准的傳感器配置,這就意味著制造商能夠把任何他們想要的傳感器配置包含到他們的Android設備中。因此,設備能夠包含配置廣泛的各種傳感器。例如,摩托羅拉的Xoom有一個壓力傳感器,但是三星的Nexus S卻沒有。同樣Xoom和Nexus S都有陀螺儀,但是HTC的Nexus One卻沒有。如果你的應用程序依賴特殊類型的傳感器,就必須確保傳感器存在於設備上,以保證你的應用程序能夠成功的運行。有兩種方法來確定給定的傳感器是否存在於設備上:
1. 在運行時檢測傳感器,並根據檢測結果來啟用或禁用應用程序相關的功能;
2. 使用Google Play來過濾目標設備上是否有指定的傳感器配置。
在運行時檢測傳感器
如果你的應用程序使用的是一種特殊的傳感器類型,但是不想依賴它,你能夠使用傳感器框架在運行時來檢測該傳感器,然後決定禁止或啟用應用程序對應的功能。例如,一個導航應用程序可能要使用溫度傳感器、壓力傳感器、GPS傳感器和地磁場傳感器來顯示溫度、氣壓、位置和羅盤方位。如果設備沒有壓力傳感器,你能夠使用傳感器框架在運行時來檢測壓力傳感器的存在性,然後禁用顯示壓力的應用程序的UI部分。例如,下列代碼用來檢查設備上是否有壓力傳感器:
private SensorManager mSensorManager;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE) != null){
// Success! There's a pressure sensor.
}
else {
// Failure! No pressure sensor.
}
使用Google Play來過濾目標指定的傳感器配置
如果你要把應用程序發布到Google Play上,那麼在你的應用程序清單文件中能夠使用<uses-feature>元素來過濾那些沒有相應傳感器配置的設備。<uses-feature>元素有幾個硬件描述符,它們會讓你基於指定傳感器的存在性來過濾應用程序。你能夠列出的傳感器包括:加速度度、氣壓、羅盤(地磁場)、陀螺儀、亮度以及距離。下例應用程序清單,會阻止應用程序安裝到沒有加速度傳感器的設備上:
<uses-feature android:name="android.hardware.sensor.accelerometer"
android:required="true" />
如果你把這個元素添加到應用程序的清單中,在Google Play上,用戶只會在有加速度傳感器的設備看到你的應用程序。
如果你的應用程序完全依賴一種特定的傳感器,那麼就應該把描述設置成:android:required=”true”。如果你的應用程序只有某些功能使用該傳感器,而在沒有傳感器時還要依然運行,你應該在<uses-feature>元素中列出該傳感器,但要把描述符設置為:android:required=”false”。這樣有助於即使在沒有指定傳感器的設備上也能安裝你的應用程序。這也是項目管理的最佳實踐,它有助於你跟蹤應用程序功能的使用情況。要記住,如果你的應用程序使用一種特殊的傳感器,但在沒有傳感器時還要依然運行,那麼應該在運行時檢測傳感器,並根據檢測的結果來禁止或啟用應用程序相應的功能。
最近一直在學習自定義控件,搜了許多大牛們Blog裡分享的小教程,也上GitHub找了一些類似的控件進行學習。發現讀起來都不太好懂,就想寫這麼一篇東西作為學習筆記吧。一、控
前言本篇博客給大家分享一個WebView的使用案例,實現Android調用JavaScript代碼來控制白天/夜間模式。關於WebView如何使用,官網有很好的說明,Bu
Android WebView常見問題解決方案匯總:就目前而言,如何應對版本的頻繁更新呢,又如何靈活多變地展示我們的界面呢,這又涉及到了web app與native ap
我們知道要想繪制一些特別的效果的話,離不開Paint和Canvas,Paint是你所畫圖形的一些基本屬性,按照面向對象的思想,你要把一個圓畫在畫布上,那麼是有畫筆和畫布,