Handling Features Not Supported on TV 在电视上处理不支持的功能
2013-05-06 08:35
573 查看
TVs are much different from other Android-powered devices: http://blog.csdn.net/sergeycao
They're not mobile.
Out of habit, people use them for watching media with little or no interaction.
People interact with them from a distance.
Because TVs have a different purpose from other devices, they usually don't have hardware features that other Android-powered devices often have. For this reason, the Android system does not support the following features for a TV device:
This lesson shows you how to work around features that are not available on TV by:
Providing work arounds for some non-supported features.
Checking for available features at runtime and conditionally activating/deactivating certain code paths based on availability of those features.
a remote. In consideration of this, ensure that every control in your app can be accessed with the D-pad. Refer back to the previous two lessonsOptimizing Layouts for TV and
Optimize Navigation for TV for more details on this topic. The Android system assumes that a device has a touchscreen, so if you want your application to run on a TV, you mustexplicitly disable the touchscreen requirement in
your manifest file:
Although a TV doesn't have a camera, you can still provide a photography-related application on a TV. For example, if you have an app that takes, views and edits photos, you can disable its picture-taking functionality for TVs and still allow users to view
and even edit photos. The next section talks about how to deactivate or activate specific functions in the application based on runtime device type detection.
Because TVs are stationary, indoor devices, they don't have built-in GPS. If your application uses location information, allow users to search for a location or use a "static" location provider to get a location from the zip code configured during the TV
setup.
TVs usually don't support microphones, but if you have an application that uses voice control, you can create a mobile device app that takes voice input and then acts as a remote control for a TV.
with the argument
The following code snippet demonstrates how to detect device type at runtime based on supported features:
This is just one example of using runtime checks to deactivate app functionality that depends on features that aren't available on TVs.
They're not mobile.
Out of habit, people use them for watching media with little or no interaction.
People interact with them from a distance.
Because TVs have a different purpose from other devices, they usually don't have hardware features that other Android-powered devices often have. For this reason, the Android system does not support the following features for a TV device:
Hardware | Android feature descriptor |
---|---|
Camera | android.hardware.camera |
GPS | android.hardware.location.gps |
Microphone | android.hardware.microphone |
Near Field Communications (NFC) | android.hardware.nfc |
Telephony | android.hardware.telephony |
Touchscreen | android.hardware.touchscreen |
Providing work arounds for some non-supported features.
Checking for available features at runtime and conditionally activating/deactivating certain code paths based on availability of those features.
Work Around Features Not Supported on TV
Android doesn't support touchscreen interaction for TV devices, most TVs don't have touch screens, and interacting with a TV using a touchscreen is not consistent with the 10 foot environment. For these reasons, users interact with Android-powered TVs usinga remote. In consideration of this, ensure that every control in your app can be accessed with the D-pad. Refer back to the previous two lessonsOptimizing Layouts for TV and
Optimize Navigation for TV for more details on this topic. The Android system assumes that a device has a touchscreen, so if you want your application to run on a TV, you mustexplicitly disable the touchscreen requirement in
your manifest file:
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
Although a TV doesn't have a camera, you can still provide a photography-related application on a TV. For example, if you have an app that takes, views and edits photos, you can disable its picture-taking functionality for TVs and still allow users to view
and even edit photos. The next section talks about how to deactivate or activate specific functions in the application based on runtime device type detection.
Because TVs are stationary, indoor devices, they don't have built-in GPS. If your application uses location information, allow users to search for a location or use a "static" location provider to get a location from the zip code configured during the TV
setup.
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); Location location = locationManager.getLastKnownLocation("static"); Geocoder geocoder = new Geocoder(this); Address address = null; try { address = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1).get(0); Log.d("Zip code", address.getPostalCode()); } catch (IOException e) { Log.e(TAG, "Geocoder error", e); }
TVs usually don't support microphones, but if you have an application that uses voice control, you can create a mobile device app that takes voice input and then acts as a remote control for a TV.
Check for Available Features at Runtime
To check if a feature is available at runtime, callhasSystemFeature(String). This method takes a single argument : a string corresponding to the feature you want to check. For example, to check for touchscreen, use
hasSystemFeature(String)
with the argument
FEATURE_TOUCHSCREEN.
The following code snippet demonstrates how to detect device type at runtime based on supported features:
// Check if android.hardware.telephony feature is available. if (getPackageManager().hasSystemFeature("android.hardware.telephony")) { Log.d("Mobile Test", "Running on phone"); // Check if android.hardware.touchscreen feature is available. } else if (getPackageManager().hasSystemFeature("android.hardware.touchscreen")) { Log.d("Tablet Test", "Running on devices that don't support telphony but have a touchscreen."); } else { Log.d("TV Test", "Running on a TV!"); }
This is just one example of using runtime checks to deactivate app functionality that depends on features that aren't available on TVs.
相关文章推荐
- nullnullHandling Features Not Supported on TV 在电视上处理不支持的功能
- [中英文对照]android Designing for TV(三) ------ Handling Features Not Supported on TV 在TV上处理不支持的功能
- Handling Features Not Supported on TV
- windows下Python2与Python3共存的使用方法以及pip的使用方法以及pip安装报错:is not a supported wheel on this platform的处理方法
- Oracle 11g ORA-00845: MEMORY_TARGET not supported on this system 报错处理
- ORA-00845: MEMORY_TARGET not supported on this system 报错处理
- Intel HAXM安装错误处理:(TV-x) is not turned on
- Android Developers:处理在电视上不支持的功能
- 处理数据库 Ora-00845: memory_traget not supported on this system 的错误
- ORA-00845: MEMORY_TARGET not supported on this system问题处理
- ORACLE 报错:ORA-00845: MEMORY_TARGET not supported on this system
- oracle11g ORA-00845: MEMORY_TARGET not supported on this system
- ISSUE:-fembed-bitcode is not supported on versions of iOS prior to 6.0
- Android studio编程时出现的错误:unspecified on project app resolves to an APK archive which is not supported
- -fembed-bitcode is not supported on versions of iOS prior to 6.0
- java.lang.UnsupportedOperationException: setXIncludeAware is not supported on this JAXP implementation or earlier: class gnu.xml.dom.JAXPFactory的解决办法(图文详解)
- Android Studio解决unspecified on project app resolves to an APK archive which is not supported
- oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
- ORA-00845: MEMORY_TARGET not supported on this system
- filename.whl is not supported wheel on this platform