2012-01-25 18 views
5

मैं सही इरादा फ़िल्टर लिखने की कोशिश कर रहा हूं।एंड्रॉइड ऐप डिज़ाइन: सही इरादा फ़िल्टर लिखें

मैं मूल रूप से इरादों से परिचित हूं, वे मेरे ऐप में ठीक काम करते हैं, लेकिन मैं इसे करने का बेहतर तरीका जानना चाहता हूं। यहां मुझे क्या करना है:

मेरे पास एक ऐसा एप्लिकेशन है जो कुछ डेटा का मालिक है। (ईसीयू, इंजन नियंत्रण इकाई से डेटा) दो गतिविधियां हैं: एक गतिविधि डेटा को अंकों के रूप में प्रदर्शित कर सकती है, और दूसरा इसे ग्राफ के रूप में प्रदर्शित कर सकता है।

चलो पहली गतिविधि पर देखते हैं।

  1. यह क्या करता है? यह प्रदर्शित करता है।
  2. यह क्या प्रदर्शित करता है? ईसीयू डेटा।
  3. यह डेटा कैसे प्रदर्शित करता है? एक अंक के रूप में।

दूसरी गतिविधि लगभग समान है, लेकिन तीसरा आइटम अलग है: यह डेटा को ग्राफ के रूप में प्रदर्शित करता है।

तो, मैं आशय है कि exatly सभी जानकारी निर्दिष्ट करता है, जैसे "अरे एंड्रॉयड, मैं एक अंक के रूप में ईसीयू डेटा को प्रदर्शित करने की जरूरत है" भेजने में सक्षम है, और फिर पहली गतिविधि खोला जाना चाहिए होना चाहता हूँ।

और मैं भी उपयोगकर्ता क्या गतिविधि खोला जाना चाहिए पूछना चाहिए आशय है कि केवल पहले दो आइटम निर्दिष्ट करता है, जैसे "अरे एंड्रॉयड, मैं ईसीयू डेटा प्रदर्शित करने के लिए की जरूरत है" भेजने में सक्षम है, और फिर एंड्रॉयड होना चाहता हूँ।

मेरा ऐप भी अन्य ऐप्स का जवाब देने में सक्षम होना चाहिए।

यह सब हासिल करने का बेहतर तरीका क्या है?

अद्यतन: यहाँ मेरी एक्सएमएल है। मुझे <intent-filter> में क्या निर्दिष्ट करना चाहिए?

<activity 
    android:name=".MyActivity" 
    > 

    <intent-filter > 
     <!-- what should i specify here? --> 
    </intent-filter> 
    </activity> 

अद्यतन 2: यहाँ मुझे क्या करना कोशिश कर रहा हूँ है: मैं Service कि रिमोट डिवाइस के साथ ब्लूटूथ के माध्यम से संचार और ईसीयू डेटा प्राप्त के साथ एक आवेदन पत्र है। कुछ सरल गतिविधियां हैं जो इस डेटा को प्रदर्शित कर सकती हैं: जैसा कि मैंने पहले ही कहा है, कोई अंक प्रदर्शित कर सकता है, दूसरा ग्राफ प्रदर्शित कर सकता है। ईसीयू डेटा प्राप्त करने में सक्षम होने के लिए यह एप्लिकेशन AIDL इंटरफ़ेस प्रदान करता है।

जैसा कि मैंने कहा, ये गतिविधियां काफी सरल हैं, वे केवल बुनियादी उपयोगकर्ता इंटरफ़ेस प्रदान करती हैं।

कहें, एक व्यक्ति चाहता है कि यह डेटा चलने योग्य सूचक सूचक की तरह प्रदर्शित हो। कोई समस्या नहीं: वह अपना Activity लिख सकता है जो मेरे Service को बांध देगा, इससे डेटा प्राप्त करें और दिखाएगा कि वह कैसा चाहता है।

फिर, अगर मैं की तरह Intent भेजते हैं, तो एंड्रॉयड मुझे पूछना चाहिए क्या गतिविधि खोला जाना चाहिए, "अरे एंड्रॉयड, मैं ईसीयू डेटा प्रदर्शित करने के लिए की जरूरत है" और मैं इस नई Activity भी देखने में सक्षम होना चाहता हूँ।

+0

मुझे लगता है कि आप इस बात पर अस्पष्ट हैं कि इरादे और गतिविधियां कैसे काम करती हैं। नीचे जो टीजे का उत्तर आप करने की कोशिश कर रहे हैं उसके लिए सही दिखता है। – SeanPONeil

उत्तर

1

ठीक है, मैंने खुद को पाया जो मैंने देखा था।

AndroidManifest.xml में:

<activity 
    android:name=".MyActivityForDigits" 
    > 

    <intent-filter > 
     <action android:name="android.intent.action.VIEW" /> 
     <data android:mimeType="ru.orionspb.bk100_iface_android/car_data" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="ru.orionspb.bk100_iface_android.category.DIGITS" /> 
    </intent-filter> 
</activity> 

<activity 
    android:name=".MyActivityForGraphs" 
    > 

    <intent-filter > 
     <action android:name="android.intent.action.VIEW" /> 
     <data android:mimeType="ru.orionspb.bk100_iface_android/car_data" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="ru.orionspb.bk100_iface_android.category.GRAPHS" /> 
    </intent-filter> 
</activity> 

और फिर मैं कह सकता हूँ बस ऐसे ही "अरे एंड्रॉयड, मैं कार डेटा प्रदर्शित करने के की जरूरत है":

 Intent mIntent = new Intent(); 
    mIntent.setAction("ru.orionspb.bk100_iface_android.action.VIEW"); 
    mIntent.setType("ru.orionspb.bk100_iface_android/car_data"); 
    mIntent.addCategory(android.content.Intent.CATEGORY_DEFAULT); 

    startActivity(mIntent); 

तो मैं कहना चाहता हूँ "अरे एंड्रॉइड, मुझे अंक के रूप में प्रदर्शित करने की आवश्यकता है", मुझे अपनी खुद की श्रेणी के साथ CATEGORY_DEFAULT को प्रतिस्थापित करने की आवश्यकता है:

 Intent mIntent = new Intent(); 
    mIntent.setAction("ru.orionspb.bk100_iface_android.action.VIEW"); 
    mIntent.setType("ru.orionspb.bk100_iface_android/car_data"); 
    mIntent.addCategory("ru.orionspb.bk100_iface_android.category.DIGITS"); 

    startActivity(mIntent); 

और यही वह है। बेशक, के बजाय MyActivityForGraphs खोलने के लिए GRAPHS के साथ DIGITS को प्रतिस्थापित कर सकता हूं। यह काम करता है जैसे मैं इसे काम करना चाहता हूं।

+0

बहुत बढ़िया :) खुशी है कि आप चीज़ें चाहते हैं कि आप कैसे चाहते थे! –

2

यदि आप अपने आवेदन के भीतर गतिविधियों के बीच जानकारी पास कर रहे हैं; यह बंडल उपयोग करना बेहतर है (या आप SharedPreferences इस्तेमाल कर सकते हैं, या पढ़ने/स्मृति पर लिखते हैं, लेकिन मैं बंडलों आसान लगता है)

First activity: 

Intent i = new Intent().newClass(first.this, second.class); 
i.putExtra("keynamehere", value); 
startActivity(i); 

Second activity: 
Bundle b = getIntent().getExtras(); 
b.getString/getInt/getByte/etc("keynamehere"); 

आप कस्टम आशय के साथ काम करना चाहते हैं - इस सवाल की जाँच: Filter Intent based on custom data

मुझे अभी तक इसके साथ खेलने का मौका नहीं मिला है, लेकिन मुझे लगता है कि इससे आपकी मदद करनी चाहिए - ऐसा लगता है कि ऐसा लगता है कि उनके पास 'प्रेषक और रिसीवर' है जैसा आप करने की कोशिश कर रहे हैं।

+0

मुझे बताएं कि क्या यह आपके प्रश्न का उत्तर देता है या नहीं :) –

+0

वास्तव में नहीं =) मुझे अतिरिक्त के बारे में पता है, लेकिन अब मुझे सक्रियताओं के बीच ऐसी कोई जानकारी नहीं पारित करनी है। मुझे यह जानने की ज़रूरत है कि मुझे ' 'अनुभाग में क्या निर्दिष्ट करना चाहिए। मैंने अभी अपना प्रश्न अपडेट किया है। –

+0

एचएम, मैं उलझन में हूं कि आप जो कुछ हासिल करने का प्रयास कर रहे हैं उसके लिए अतिरिक्त काम क्यों नहीं करेंगे? आप अंकों से डेटा को ग्राफ़ में धक्का देना चाहते हैं, और अंकों के लिए ग्राफ़ - सही? आपको उन्हें आगे और आगे धक्का देने के लिए अतिरिक्त उपयोग करने में सक्षम होना चाहिए, और उसके बाद क्रिएट() उन मानों का उपयोग अपनी गतिविधि में हेरफेर करने के लिए करें - उदा। मान लें कि आप x = 1-10 से अंकों x = y को प्रदर्शित करना चाहते हैं, आप पहले अंक पर अपने अंक प्रदर्शित करना शुरू करते हैं, और फिर दूसरे के लिए, या तो अपनी जानकारी को दबाएं (जिसे आप प्रदर्शित करना चाहते हैं, जैसे एक्स = y x = 1-10) या अंत डेटा (x = 1-10, y = 1-10) और फिर दी गई जानकारी के साथ अपना डेटा बनाएं। –

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