2011-06-07 11 views
26

तो मेरे पास एंड्रॉइड एप्लिकेशन बनाने का थोड़ा सा अनुभव है। लेकिन अब मैं एंड्रॉइड के लिए एक विजेट बनाना चाहता हूं जो होम स्क्रीन पर बैठेगा और एक बटन प्रदर्शित करेगा, और जब बटन दबाया जाता है तो यह ध्वनि बजाता है। मैं एंड्रॉइड विजेट को सेट अप करने के तरीके पर ऑनलाइन ट्यूटोरियल देख रहा हूं लेकिन मुझे लगता है कि मैं इसे समझ नहीं पा रहा हूं। क्या इस सरल या कहीं मैं एक स्टैंडअलोन विजेट बनाने के तरीके पर कोई अच्छा ट्यूटोरियल देख सकता हूं? अग्रिम धन्यवाद, पीटरएक सरल एंड्रॉइड विजेट कैसे बनाएं

+0

ट्यूटोरियल: http: // डेवलपर। android.com/guide/topics/appwidgets/index.html –

उत्तर

41

पहले परियोजना संरचना के तहत res/layout के अंदर एक नई लेआउट फ़ाइल बनाएं, जो निम्न संरचना के अनुसार विजेट लेआउट (widgetlayout.xml) को परिभाषित करेगा।

<TextView android:text="@string/widgettext" 
       android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.8" 
       android:layout_gravity="center_vertical" 
       android:textColor="#000000"></TextView> 
<TextView android:text="@string/widgetmoodtext" 
       android:id="@+id/widgetMood" android:layout_width="0dp" 
       android:layout_height="wrap_content" 
       android:layout_weight="0.3" 
       android:layout_gravity="center_vertical" 
       android:textColor="#000000"></TextView> 
<ImageButton android:id="@+id/widgetBtn" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.5" 
      android:src="@drawable/smile_icon" 
      android:layout_gravity="center_vertical"> 
</ImageButton> 

परियोजना संरचना के तहत रेस/xml फ़ोल्डर बनाएँ एक xml फ़ाइल (widgetproviderinfo.xml) निम्नलिखित मानकों के साथ बनाएँ:

<appwidget-provider 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:minWidth="220dp" 
      android:minHeight="72dp" 
      android:updatePeriodMillis="86400000" 
      android:initialLayout="@layout/widgetlayout"> 
     </appwidget-provider> 

अब आप सेवा है कि उपयोगकर्ता के प्रति प्रतिक्रिया करता बनाना चाहिए स्माइली छवि बटन (CurrentMoodService.java) के साथ बातचीत।

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    super.onStart(intent, startId); 
      updateMood(intent); 
    stopSelf(startId); 
    return START_STICKY; 
} 

private void updateMood(Intent intent) { 
     if (intent != null){ 
     String requestedAction = intent.getAction(); 
     if (requestedAction != null && requestedAction.equals(UPDATEMOOD)){ 
      this.currentMood = getRandomMood(); 
      int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0); 
      AppWidgetManager appWidgetMan = AppWidgetManager.getInstance(this); 
      RemoteViews views = new RemoteViews(this.getPackageName(),R.layout.widgetlayout); 
      views.setTextViewText(R.id.widgetMood, currentMood); 
      appWidgetMan.updateAppWidget(widgetId, views); 
     } 
     } 
    } 

सेवा को परिभाषित करने के बाद, यह विजेट प्रदाता वर्ग (CurrentMoodWidgetProvider.java) लागू करने के लिए समय है।

@Override 
public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
     int[] appWidgetIds) { 
    super.onUpdate(context, appWidgetManager, appWidgetIds); 

    for (int i=0; i<appWidgetIds.length; i++) { 
     int appWidgetId = appWidgetIds[i]; 
     RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widgetlayout); 
     Intent intent = new Intent(context, CurrentMoodService.class); 
     intent.setAction(CurrentMoodService.UPDATEMOOD); 
     intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
     PendingIntent pendingIntent = PendingIntent.getService(context, 0, intent, 0); 
     views.setOnClickPendingIntent(R.id.widgetBtn, pendingIntent); 
     appWidgetManager.updateAppWidget(appWidgetId, views); 
    } 
} 

अंत में मैनिफेस्ट (AndroidManifest.xml) में सेवा और ऐप विजेट प्रदाता घोषित करना आवश्यक है।

<service android:name=".CurrentMoodService"> 
    </service> 
<receiver android:name=".CurrentMoodWidgetProvider"> 
    <intent-filter> 
     <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    </intent-filter> 
    <meta-data android:name="android.appwidget.provider" 
       android:resource="@xml/widgetproviderinfo" /> 
</receiver> 

और आप स्रोत कोड के पूरे डाउनलोड करने के लिए चाहता है तो नीचे दिए गए यूआरएल पर एक नजर है ... से Android डेवलपर पोर्टल

http://sites.google.com/site/androidsourcecode/src/CurrentMoodWidgetProject.rar?attredirects=0

+1

कहीं और .rar फ़ाइल की सामग्री को कॉपी करें, फिर ग्रहण में "नया" -> "प्रोजेक्ट" -> "मौजूदा कोड से एंड्रॉइड प्रोजेक्ट" पर जाएं। फिर उस फ़ोल्डर को ब्राउज़ करें जिसे आपने अभी निकाला है और किसी स्थान को सहेजा है और "समाप्त करें" दबाएं। – JToland

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