編輯:關於Android編程
前言:近年來,智能電視的發展如火如荼,Googel 也在大力推進TV及穿帶設備的發展,在互聯網的風口,是豬也會飛,這句話並不是沒有道理的。傳統電視機廠商,基本都轉型致力於智能電視的相關業務。
處理電視硬件 app上檢查電視設備 處理不支持的硬件features Declaring hardware requirements for TV 聲明權限意味著硬件要具有該特性 檢查硬件Features 處理控制器斷開場景電視硬件是大大不同於其他Android設備。電視不包括其他Android設備上發現的一些硬件特性,如觸屏,攝像頭,GPS接收器。電視也完全依靠輔助硬件設備。為了讓用戶與電視應用程序交互,他們必須使用一個遙控器或游戲手柄。當你為電視構建一個應用程序,你必須仔細考慮硬件操作電視硬件的限制和要求。
如果您正在構建一個app運行在TV設備和其他設備,你也許需要去check你的app運行在什麼樣的設備上且可能將在你的app做何種操作。
例如,如果您有一個app被Intent啟動,你的應用應當被檢查設備屬性去確定是否能啟動在TV下的activity或者是在手機上的activity.
推薦一種方法來確定你的app是否運行在一個TV設備下,
通過使用UiModeManager.getCurrentModeType()方法來檢查該設備是否在TV模式下運行。
下面的示例代碼顯示了如何檢查你的應用程序是否運行在一個TV設備:
根據應用程序的設計和功能,你可以解決某些硬件功能不可用。了解什麼硬件特性通常不用於電視,如何檢測丟失的硬件特性,並建議使用這些特性。
不支持的電視硬件特性電視相比其他設備有著不同的作用,所以它們沒有其他android設備通常有的一些硬件特性。出於這個原因,Android系統不支持電視設備有以下特點:
一些電視控制器有一個麥克風,麥克風不一樣的硬件功能描述。控制器麥克風完全支持。
Android應用程序可以聲明硬件功能要求在app中Manifest,以確保他們不被安裝在此app下,設備不提供這些功能。如果你是擴展現有應用程序使用在電視上,仔細檢查你的應用程序的清單,因為任何硬件requirements聲明可能阻止它被安裝在一個TV設備上。
如果您的應用程序使用硬件特性(如觸摸屏或相機),不可用在TV上,但可以不使用這些功能,修改你的應用程序的清單,表明這些特性被應用程序不需要。以下清單代碼片段演示了如何聲明應用程序不需要硬件特性不可用在電視設備,即使沒有電視設備上的應用程序可以使用這些功能:
一些features像android.hardware.camera subfeatures.front,在feature引導時,確保標識required=”false” 在任何子features中,因為也許會使用在app中
所有應用在電視上使用,app必須聲明中描述的觸摸屏功能不需要使用。如果您的應用程序通常使用上面列出的一個或多個特性,在你的清單文件中,改變這些features像android:required attribute setting為false,
警告:聲明一個hardware 的feature可通過設置一些屬性值為true,避免你的app能安裝在TV 設備或出現在Android TV的launcher啟動頁上<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPtK7tanE4772tqjIw8TjtcTTsrz+zNjQ1L/J0aHTptPDs8zQ8izE+rHY0OvU2tTL0NDKsbzssunV4tCpuabE3LXEv8nTw9DULMi7uvO199X7xOO1xNOm08OzzNDytcTQ0M6qoaM8L3A+DQo8aDMgaWQ9"聲明權限意味著硬件要具有該特性">聲明權限意味著硬件要具有該特性
一些uses-permission清單聲明意味著硬件特性。這種行為意味著請求一些應用程序權限清單可以包含你的app從TV設備上安裝和使用。下面的一般要求權限創建隱式硬件功能要求:
完整的許可列表請求,意味著硬件功能要求,看到uses-feature指南。如果你的應用程序請求上面列出的特性之一,uses-feature聲明包含在您的清單隱含的硬件功能,表明它不是必需的(android:required=“false”)。
注意:如果你的目標app運行Android 5.0(API級別21)或更高版本,並使用ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION權限,用戶仍然可以安裝你的應用電視設備,即使電視設備沒有網卡或GPS接收器。
Android框架可以告訴你如果沒有可用的硬件特性在設備上,應用程序正在運行。使用hasSystemFeature(String)方法在運行時檢查特定的功能。該方法接受一個字符串參數,指定您想要的功能檢查。
下面的代碼示例演示了如何在運行時檢測硬件features的可用性:
Touch screen
因大多數電視沒有觸摸屏,Android不支持觸屏交互電視設備。此外,使用一個觸摸屏不符合觀看環境中用戶坐在遠離顯示10英尺。確保你的UI元素和文本不需要或暗示觸摸屏的使用。
電視上的設備,你應該設計你的應用程序使用這個交互模型通過支持導航用定向桿(方向鍵)在一個電視遙控器。
Camera
雖然電視通常沒有相機,你仍然可以提供一個photography-related電視應用。例如,如果您有一個應用程序需要,視圖和編輯照片,您可以禁用它的拍照功能電視甚至還允許用戶查看和編輯照片。如果你決定讓camera-related應用在電視工作,添加以下功能聲明應用程序清單:
如果你沒有攝像頭,使應用程序的運行代碼添加到您的應用程序,檢測如果相機功能可用,使調整應用程序的操作。下面的代碼示例演示了如何檢測相機的存在:
GPS
TV是靜止的,室內設備,沒有內置的全球定位系統(GPS)接收器。如果您的應用程序使用位置信息,您仍然可以允許用戶搜索一個位置,或使用一個靜態位置提供者如郵政編碼在電視設備的配置設置。
Handling Controllers
TV設備需要輔助硬件設備與應用程序進行交互,一個基本形式的遠程控制器或游戲控制器。這意味著您的應用程序必須支持方向鍵輸入。這也意味著意味著你的app需要處控制器離線和外置設備(如鍵盤)輸入,而不是一種類型的控制器(普通遙控器)。
方向鍵最低控制
電視設備的默認控制器是一個方向鍵。一般來說,應用程序應該是可操作的,只有從一個遠程控制器,下,左,右,選擇,和home鍵。如果你的應用是一種游戲,通常需要與額外的游戲控制器控制,應用程序應該試圖讓游戲與這些方向鍵控制。在這種情況下,應用程序也應該提醒用戶需要一個控制器和允許他們使用方向鍵控制器優雅地退出你的游戲。
TV上控制器可能會斷開,如藍牙設備可能會為省電而有周期性的進入睡眠模式或從TV設備上斷開。這意味著應用程序可能被中斷或重啟如果沒有配置為處理這些連接事件。這些事件可以發生在有下列情形之一的:
當在看一個幾分鐘長的視頻是,方向鍵或游戲控制器進入睡眠模式,從電視設備斷開連接,然後重新連接時。 當在游戲中,一個新玩家加入游戲使用一個不是當前連接的游戲控制器。 當在游戲中,玩家離開游戲並斷開游戲控制器。任何TV上的app中activity 是以斷開和重連接事件為條件的,必須配置去處理重連接事件在app中Mainfest文件中,下面的代碼示例演示了如何啟用一個Activity來處理配置的變化,包括鍵盤或導航設備連接,斷開,或重新連接:
在Android native編寫代碼時,會經常接觸到sp、wp,sp並不是smart pointer的意思,而是strong point;wp就是weak point
兩個彈出框布局: java 文件: package hi.braincol.example.iphoneA
上一篇說到了通知欄Notification,提起通知欄,不得讓人想到Service以及BroadcastReceive,作為android的4大組建的2個重要成員,我們沒
本文實例為大家分享了Intent如何實現一個簡單的記事本功能的演示過程,供大家參考,具體內容如下1、運行截圖單擊右上角【…】會彈出【添加】菜單項,長按某條記錄會彈出快捷菜