2011-06-02 14 views
8

क्या जावा कोड में एंड्रॉइड ऐप को बताने का कोई तरीका है यदि यह GoogleTV बनाम टैबलेट या फ़ोन पर चल रहा है?एंड्रॉइड ऐप से GoogleTV की पहचान करें

+1

, के बाद से इस लेखन के समय, हम नहीं क्षुधा गूगल टीवी के लिए लिख सकते हैं, जवाब है "अगर है आपके जावा कोड चल रहा है, यह Google टीवी पर नहीं है "। मैं Google टीवी के लिए ऐप्स लिखने के कुछ समय बाद फिर से पूछने की सलाह देता हूं। – CommonsWare

+0

मुझे "फिशटैंक" डिवाइसों में से एक होता है। मैं इसे प्रतिबिंबित करने के लिए प्रश्न संपादित करूंगा। – miguel

उत्तर

5

निम्न लिंक आपकी मदद कर सकता है: Google TV Android Developer's Guide Google टीवी के लिए अपने ऐप को अनुकूलित करने के लिए, बस बड़ी स्क्रीन के लिए एक अतिरिक्त परत जोड़ें। हालांकि, अगर आप उस डिवाइस को निर्धारित करना चाहते हैं जो वर्तमान में रनटाइम पर ऐप का उपयोग कर रहा है, तो आप hasSystemFeature() विधि आज़मा सकते हैं। इसके साथ आप Google हार्डवेयर के लिए अद्वितीय कुछ विशेषताओं की जांच कर सकते हैं (उदाहरण के लिए आप किसी भी डिवाइस के रूप में FEATURE_TOUCHSCREEN के लिए परीक्षण कर सकते हैं लेकिन Google टीवी में < => यदि सुविधा समर्थित नहीं है, तो ऐप शायद टीवी पर चल रहा है) ।

+0

क्या कम अंत ट्रैकबॉल-केवल फोन नहीं हैं जिनके पास टचस्क्रीन नहीं है? – miguel

+2

[यहां] (http://code.google.com/tv/android/docs/gtv_android_features.html) कुछ और विशेषताएं हैं जो टीवी पर मौजूद नहीं हैं। यदि आप उन्हें गठबंधन करते हैं, तो आप निश्चित रूप से सुनिश्चित कर सकते हैं कि आपका ऐप किस प्रकार का डिवाइस चल रहा है। लेकिन मैं निश्चित रूप से कुछ भी नहीं कह सकता, क्योंकि मेरे पास Google टीवी नहीं है। –

+1

@ मिगुएल: अभी, एंड्रॉइड मार्केट के साथ वैध रूप से उन सभी फोनों में एक टचस्क्रीन है, क्योंकि सीडीडी द्वारा इसकी आवश्यकता होती है। यह बाजार के बिना फोन, बाजार की पायरेटेड प्रतियों के साथ फोन, या सीडीडी में भविष्य में बदलाव से इंकार नहीं करता है। – CommonsWare

1

यहां मैं प्रतिक्रिया के लिए उपयोगी जानकारी कैसे एकत्र करता हूं। मुझे पता है अगर यह डिवाइस (फ़ोन, बनाम मेज, बनाम गूगल टीवी) के प्रकार का पता लगाने के संभव है नहीं कर रहा हूँ, लेकिन यह मानचित्रण डेटाबेस में किसी प्रकार का निर्माण और यह

private String getDeviceInfo() { 
    final StringBuilder sb = new StringBuilder("\n\n---\n"); 
    try { 
     sb.append("Version: ").append(getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName) 
       .append('\n'); 
    } catch (final NameNotFoundException e) { 
     // Shouldn't happen but if did - ignore 
     Log.e(TAG, "failed to get app version", e); 
    } 
    sb.append("Model: ").append(Build.MODEL).append('\n'); 
    sb.append("Brand: ").append(Build.BRAND).append('\n'); 
    sb.append("Device: ").append(Build.DEVICE).append('\n'); 
    sb.append("Display: ").append(Build.DISPLAY).append('\n'); 
    sb.append("Hardware: ").append(Build.HARDWARE).append('\n'); 
    sb.append("Manufacturer: ").append(Build.MANUFACTURER).append('\n'); 
    sb.append("Host: ").append(Build.HOST).append('\n'); 
    sb.append("Release: ").append(Build.VERSION.RELEASE).append('\n'); 
    sb.append("Board: ").append(Build.BOARD).append('\n'); 
    sb.append("Radio: ").append(Build.RADIO).append('\n'); 
    sb.append("Product: ").append(Build.PRODUCT).append('\n'); 
    return sb.toString(); 
} 
10

आप पूछ सकते हैं के खिलाफ की जानकारी से मिलान करने के संभव है पैकेज प्रबंधक:

/** 
* Test if this device is a Google TV. 
* 
* See 32:00 in "Google I/O 2011: Building Android Apps for Google TV" 
* http://www.youtube.com/watch?v=CxLL-sR6XfM 
* 
* @return true if google tv 
*/ 
public static boolean isGoogleTV(Context context) { 
    final PackageManager pm = context.getPackageManager(); 
    return pm.hasSystemFeature("com.google.android.tv"); 
} 

प्लस यह प्रकट लाइन:

<uses-feature android:name="com.google.android.tv" android:required="false" /> 
+0

यह अब काम नहीं करता – Prizoff

4

oficial docs के अनुसार:

यह निर्धारित करने का अनुशंसित तरीका है कि आपका ऐप किसी टीवी डिवाइस पर चल रहा है या नहीं, यह जांचने के लिए UiModeManager.getCurrentModeType() विधि का उपयोग करना है कि डिवाइस टेलीविजन मोड में चल रहा है या नहीं। निम्न उदाहरण कोड है आप कैसे यदि आपका ऐप्स टीवी उपकरण पर चल रहे जांच करने के लिए पता चलता है:

public static final String TAG = "DeviceTypeRuntimeCheck"; 

UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); 
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { 
    Log.d(TAG, "Running on a TV Device"); 
} else { 
    Log.d(TAG, "Running on a non-TV Device"); 
} 
+0

यह मेरे लिए अच्छा काम करता है !!! –

संबंधित मुद्दे