編輯:關於Android編程
android被設計成可以在多種不同的設備上運行的系統,為了達到這個目的,android系統提供了一個動態app框架,在這個框架中你可以在動態文件(為不同屏幕大小的不同xml布局文件)中提供具體的配置資源,android會根據設備配置加載適當的資源。
兼容性是什麼意思?
有兩種不同的適配:設備適配和app適配。
設備兼容:能夠在android執行環境下正常運行應用程序。
作為一個app開發者,你不需要是否一個設備是設備兼容的。但是你必須得考慮在這樣潛在的設備配置下的app適配。
讓你的應用對設備來說可用
一些特征是基於硬件的比如指南針傳感器,一些是基於軟件的不如app widgets,一些是基於平台版本的.
為了實現你的應用程序的最大的用戶群,你應該努力使用一個apk來支持越多的設備配置越好。在很多情況下,你應該在運行時禁用可選的功能,為不同的配置提供應用程序資源的替代品(比如為不同的屏幕尺寸提供不同的布局文件),如果必須,你需要通過Google play的以下特征來限制你的應用程序的可用性:
1,設備特征
2.平台版本
3.屏幕配置
設備特征
為了讓你基於設備特征合適的管理你的app,android定義了featuresIds,比如說指南針傳感器的featureid是FEATURE_SENSOR_COMPASS
, app widgets的feature id是FEATURE_APP_WIDGETS
.
如果必要的話,你可以保護安裝你的app但是他們的設備沒有提供在你的manifest文件中用
聲明的feature的用戶.
比如說,你的app不會再一個缺少指南針傳感器的設備上起作用,你可以這樣在你的manifest文件中聲明指南針傳感器:
Google play 商店比較你app聲明的feature和用戶設備中上的feature,來決定你的app是否兼容每個應用。若設備沒有提供所有你的app需要的feature,用戶就不能安裝你的app....
但是,若你的app的主要作用不需要一個設備feature,你需要設置required屬性為false而且在設備運行時檢測設備feature,若你的app feature在當前設備不可用,你需要優雅的降解app feature,比如,你可以像這樣通過調用hasSystemFeature()查詢一個feature是否可用:
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device does not have a compass, turn off the compass feature disableCompassFeature(); }
平台版本
比如, Calendar Provider API是在API level 14之後添加的,如果你的app必須使用這個api,你可以這樣聲明你支持的最低版本號是14:
...
targetSdkVersion
是重要的,因為它暗示系統你的app是否繼承在新版本中的行為改變,若你不把targetSdkVersion更新到最新版本,這時系統假設在運行最新版本sdk時,你的app需要的是先前兼容的行為。
若你的app使用一些在最近的sdk版本中添加的api,但是不把他們作為主要功能,你應該在運行時檢查API levels,同時當API level太低時,優雅的降低符合的feature.這種情況下,將能支持你app運行的最低的APIlevel賦值給
minSdkVersion,然後比較當前系統版本
SDK_INT 與你想檢查的符合的api版本比較。比如:
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
// Running on something older than API level 11, so disable
// the drag/drop features that use ClipboardManager
APIs
disableDragAndDrop();
}
屏幕配置
為了通過設備的屏幕類型將設備分類,Android為每個設備定義了兩種特征:屏幕尺寸(small, normal, large, and xlarge)和屏幕密度(mdpi (medium), hdpi (hdpi), xhdpi (extra high), xxhdpi (extra-extra high), and others.)。
默認情況下你的app是兼容所有尺寸和密度的,系統為每個屏幕對你的UI布局和image資源做了合適的調整,但是你應該通過為不同尺寸的屏幕添加特殊的布局和為普通屏幕密度優化bitmap images來優化用戶體驗。
出於商業原因,控制應用程序的可用性
你應該為了商業或法律的原因來限制你的app的可用性,不如一個展示倫敦地下列車表的應用不能在英國之外使用,對於這種類型的情況,Google play在開發者控制台提供了過濾選項來允許你控制你的應用在非技術方面的可用性,比如用戶位置。
效果:需求:不論什麼領域,在模仿一個東西的時候,我們首先要對它進行需求提取,這樣才能保證做到”惟妙惟肖”。通過對QQ側滑功能的分析,提取出了以下需
蘋果上的UI基本上都是這個效果,然而Android機上的頂部狀態欄總是和app的主題顏色不搭。還好如今的api19以上的版本,我們也能做出這樣的效果。第一步: // 需
使用React Native,可以使用NetInfo API獲取手機當前的各個網絡狀態。 componentWillMount() { NetInfo
首先,語音合成是指將文本信息轉換成聲音。意思就是將文本轉化為聲音,讓你的應用開口說話。國內在業內比較有名的第三方語音合成平台有百度語音和科大訊飛。本文集成的是百度語音合成