ആപ്പ്
ചെക്ക്ലിസ്റ്റ്

    ബന്ധപ്പെടുക





    ഞങ്ങളുടെ ബ്ലോഗ്

    നിങ്ങളുടെ ദൃശ്യപരത ഞങ്ങൾ പ്രോഗ്രാം ചെയ്യുന്നു! ONMA സ്കൗട്ട് ആൻഡ്രോയിഡ് ആപ്പ് ഡെവലപ്‌മെന്റിനൊപ്പം പോസിറ്റീവ് പ്രകടനം ഉറപ്പുനൽകുന്നു.

    ബന്ധപ്പെടുക
    android ആപ്പ് വികസനം

    ഞങ്ങളുടെ ബ്ലോഗ്


    ആൻഡ്രോയിഡ് ആപ്പ് പ്രോഗ്രാമിംഗ് എങ്ങനെ പഠിക്കാം

    പ്രോഗ്രാം android ആപ്പ്

    നിങ്ങൾക്ക് Android ആപ്പ് പ്രോഗ്രാമിംഗ് പഠിക്കണമെങ്കിൽ, നീ ഒറ്റക്കല്ല. സത്യത്തിൽ, ആരംഭിക്കുന്നത് എളുപ്പമാണ്! ആൻഡ്രോയിഡ് സ്റ്റുഡിയോയിൽ നിന്ന് ആരംഭിക്കുക, Google-ൻ്റെ സ്വതന്ത്ര വികസന പരിസ്ഥിതി. നിങ്ങൾക്ക് ജാവ ഡെവലപ്‌മെൻ്റ് കിറ്റും ആവശ്യമാണ്. പിന്നെ, നിങ്ങളുടെ ആദ്യ ആപ്ലിക്കേഷനുകൾ എഴുതാൻ തുടങ്ങാം. ഒടുവിൽ, നിങ്ങൾ ഉദ്ദേശ്യങ്ങളിലേക്ക് നീങ്ങും, ജാവ, ആക്റ്റിവിറ്റി ലൈഫ് സൈക്കിൾ കോൾബാക്കുകൾ, കൂടുതൽ!

    വലിച്ചിടുക

    വളരെ ഇൻ്ററാക്ടീവ് ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ നിങ്ങളെ സഹായിക്കുന്ന ലളിതവും ശക്തവുമായ ഒരു സാങ്കേതിക വിദ്യയാണ് ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് ആൻഡ്രോയിഡ് ആപ്പ് പ്രോഗ്രാമിംഗ്. ആപ്ലിക്കേഷൻ്റെ ബാക്കി ഭാഗങ്ങളെ ബാധിക്കാതെ തന്നെ ആപ്പിൽ ഒബ്‌ജക്റ്റുകൾ നീക്കാൻ ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് മെക്കാനിസം നിങ്ങളെ അനുവദിക്കുന്നു. ഡ്രാഗ് ഇവൻ്റുകൾ ഒരു Android ഇവൻ്റ് വഴി ശ്രോതാക്കൾക്ക് അയയ്ക്കുന്നു. ഡ്രാഗ് ഇവൻ്റിൽ ഒബ്‌ജക്റ്റിൻ്റെ അവസ്ഥയെക്കുറിച്ചുള്ള വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു, കൂടാതെ ഒരു X-y കോർഡിനേറ്റ് പോലുള്ള ഡാറ്റ ഉൾപ്പെടുത്താനും കഴിയും. ഡ്രാഗ് ഇവൻ്റ് ലിസണർ ഡാറ്റ സ്വീകരിക്കുകയും getX എന്ന രീതിയെ വിളിക്കുകയും ചെയ്യുന്നു() അല്ലെങ്കിൽ getY() ഡ്രാഗ് പോയിൻ്റിൻ്റെ നിലവിലെ സ്ഥാനം നേടുന്നതിന്. ഡ്രാഗ് ഓപ്പറേഷൻ പൂർത്തിയായെങ്കിൽ, ശ്രോതാവ് ഒരു ബൂളിയൻ ശരിയോ തെറ്റോ നൽകുന്നു.

    ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് ആൻഡ്രോയിഡ് ആപ്പ് പ്രോഗ്രാമിംഗ് എക്ലിപ്സിലൂടെ സാധ്യമാണ് 4.4 (ലൂണ) ജാവയും 1.7. ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് നടപ്പിലാക്കാൻ, നിങ്ങളുടെ പ്രവർത്തനത്തിലേക്ക് ഒരു OnTouchListener ചേർക്കേണ്ടതുണ്ട്. പിന്നെ, ഡ്രാഗ് ഓപ്പറേഷൻ സമയത്ത് പ്രദർശിപ്പിക്കേണ്ട ചിത്രം വ്യക്തമാക്കുന്ന ഒരു DragShadowBuilder സൃഷ്ടിക്കുക.

    ഡ്രാഗ് ഇവൻ്റ് ക്ലാസുകളും ഡ്രാഗ് ലിസണറുകളും ഉപയോഗിക്കുന്നത് ആൻഡ്രോയിഡ് ആപ്പ് പ്രോഗ്രാമിംഗിൽ ഉൾപ്പെടുന്നു. ഒരു ഉപയോക്തൃ ട്രിഗർ ഉപയോഗിച്ച് ഇവൻ്റുകൾ വലിച്ചിടുക. പിന്നെ, ആപ്പ് ഒരു startDragAndDrop നൽകുന്നു() തിരിച്ചുവിളിക്കുക. ഡ്രാഗ് ഇവൻ്റ് ലിസണർ തെറ്റായി നൽകുകയാണെങ്കിൽ, സിസ്റ്റം കോൾബാക്ക് രീതിയെ വിളിക്കില്ല. DragEvent ക്ലാസ് onTouchEvent പോലെയാണ്.

    onProvideShadowMetrics രീതി അസാധുവാക്കിക്കൊണ്ട് നിങ്ങൾക്ക് ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് ഇവൻ്റിൻ്റെ സ്വഭാവം മാറ്റാനാകും. ഡ്രാഗ് ഇവൻ്റിൻ്റെ വലിപ്പവും ടച്ച് പോയിൻ്റും സംബന്ധിച്ച വിവരങ്ങൾ ഈ രീതി നൽകുന്നു. onDrawShadow രീതി അസാധുവാക്കിക്കൊണ്ട് നിങ്ങൾക്ക് ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് ആംഗ്യം പരിഷ്കരിക്കാനും കഴിയും.

    ഉയർന്ന നിലവാരമുള്ള മൊബൈൽ ആപ്ലിക്കേഷനുകൾ നിർമ്മിക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന ലളിതവും വഴക്കമുള്ളതുമായ ഒരു സാങ്കേതികതയാണ് ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് ആൻഡ്രോയിഡ് ആപ്പ് പ്രോഗ്രാമിംഗ്. വലിച്ചിഴച്ച് കൊണ്ട്, ഉപയോക്താക്കൾ ഡ്രാഗ് ആൻഡ് ഡ്രോപ്പ് പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ നിങ്ങൾക്ക് സിസ്റ്റം ഇവൻ്റുകൾ പ്രവർത്തനക്ഷമമാക്കാനും കഴിയും.

    ഉദ്ദേശ്യങ്ങൾ

    ഒരു Android ആപ്പിലെ വ്യത്യസ്‌ത ഘടകങ്ങൾ തമ്മിൽ ആശയവിനിമയം നടത്താൻ ഉദ്ദേശ്യങ്ങൾ ഉപയോഗിക്കുന്നു. ഒരു ആൻഡ്രോയിഡ് ആപ്ലിക്കേഷന് വ്യക്തമായതും പരോക്ഷവുമായ ഉദ്ദേശ്യങ്ങളെ പിന്തുണയ്ക്കാൻ കഴിയും, ഒരു ആപ്ലിക്കേഷനിൽ നിന്ന് മറ്റൊന്നിലേക്കുള്ള ഡാറ്റയുടെ ഒഴുക്ക് നിയന്ത്രിക്കാൻ ഉപയോഗിക്കുന്നവ. ഒരു ഉപയോക്താവ് തുറക്കുമ്പോൾ മറ്റൊരു ആപ്ലിക്കേഷനിലേക്ക് റീഡയറക്‌ടുചെയ്യുന്ന ഒരു ബ്രൗസർ വിൻഡോ ഇതിന് ഉദാഹരണമായിരിക്കും.

    ഉദ്ദേശ്യങ്ങൾ ഒരൊറ്റ സംഖ്യയോ സ്ട്രിംഗോ ആകാം, ഒരു ആപ്പിനുള്ളിൽ മറ്റ് പ്രവർത്തനങ്ങൾ ട്രിഗർ ചെയ്യാൻ ഉപയോഗിക്കുന്നു. ഒരു ആപ്പിൻ്റെ മറ്റ് ഘടകങ്ങൾ ട്രിഗർ ചെയ്യുന്നതിന് പുറമേ, ഒരു ആപ്പിനുള്ളിലെ പ്രവർത്തനങ്ങൾ നീക്കാനും ഉദ്ദേശ്യങ്ങൾ ഉപയോഗിക്കാനാകും. അവ വിവേകത്തോടെ ഉപയോഗിക്കുക എന്നതാണ് പ്രധാനം. ഉദ്ദേശ്യത്തോടെ പ്രവർത്തിക്കുമ്പോൾ നിങ്ങൾ സീരിയലൈസ് ചെയ്യാവുന്നതോ പാർസൽ ചെയ്യാവുന്നതോ ആയ ഡാറ്റ ഒഴിവാക്കണം.

    ഉദാഹരണത്തിന്, ഒരു ഉപയോക്താവിന് സ്റ്റോക്ക് ഡാറ്റ കാണിക്കാൻ നിങ്ങൾക്ക് ഒരൊറ്റ സ്ട്രിംഗ് ഉപയോഗിക്കാം. പിന്നെ, സ്റ്റോക്കിൻ്റെ സാമ്പത്തിക വിശദാംശങ്ങൾ കാണാൻ അവർക്ക് ലിസൻ എലമെൻ്റിൽ ക്ലിക്ക് ചെയ്യാം. ആപ്പ് ഈ വിശദാംശങ്ങൾ ഒരു ലിസ്റ്റ് കാഴ്‌ചയിൽ പ്രദർശിപ്പിക്കും. ആവശ്യമുള്ള സ്റ്റോക്ക് തിരഞ്ഞെടുക്കാൻ ഉപയോക്താക്കളെ അനുവദിച്ചുകൊണ്ട് ആപ്പ് കസ്റ്റമൈസ് ചെയ്തേക്കാം. അത് പിന്നീട് അവർ തിരഞ്ഞെടുത്ത മാനദണ്ഡങ്ങളെ അടിസ്ഥാനമാക്കി സ്റ്റോക്കുകളുടെ ഒരു ലിസ്റ്റ് പ്രദർശിപ്പിക്കും, തീർപ്പാക്കാത്ത വാങ്ങലുകളും വിൽപ്പന ഓർഡറുകളും ഉൾപ്പെടെ.

    ആൻഡ്രോയിഡ് ആപ്പുകൾ പലപ്പോഴും നിരവധി സ്ക്രീനുകൾ ഉൾക്കൊള്ളുന്നു. ചിലപ്പോൾ, വിവിധ കാരണങ്ങളാൽ ഉപയോക്താക്കൾ ആപ്പുകൾക്കിടയിൽ മാറേണ്ടതുണ്ട്. ഇത് നിറവേറ്റാൻ, അവർ ഇൻ്റൻ്റ് മെക്കാനിസം ഉപയോഗിക്കുന്നു. ഒരേ ആപ്പിനുള്ളിലെ പ്രവർത്തനങ്ങൾ ബന്ധിപ്പിക്കാൻ ഉദ്ദേശ്യങ്ങൾ ഉപയോഗിക്കുന്നു, അതുപോലെ ആപ്പുകൾക്കിടയിൽ. ആപ്പുകൾക്കിടയിൽ മാറാൻ, നിങ്ങൾ ഒരു പുതിയ ഉദ്ദേശ വസ്തു സൃഷ്ടിക്കുകയും അനുയോജ്യമായ ഒരു Android രീതി ഉപയോഗിക്കുകയും വേണം.

    വെബിന് സമാനമായ പ്രവർത്തനം നൽകാൻ Android ആപ്പുകളെ ഉദ്ദേശങ്ങൾ അനുവദിക്കുന്നു. ഇത് ചെയ്യാന്, Android ആപ്പുകൾക്ക് വെബ് ലിങ്കുകൾക്കായി ഒരു ഇൻ്റൻ്റ് ഫിൽട്ടർ നടപ്പിലാക്കാൻ കഴിയും. വെബ്‌സൈറ്റുകളിലേക്ക് പോയിൻ്റ് ചെയ്യുന്ന ലിങ്കുകൾ ഒരു വെബ് പേജിന് പകരം Android ആപ്പ് തുറക്കും എന്നാണ് ഇതിനർത്ഥം. ഇതുകൂടാതെ, ആൻഡ്രോയിഡ് 12 പൊതുവായ വെബ് ഉദ്ദേശ്യങ്ങൾ അവതരിപ്പിച്ചു, ഉപയോക്താവിൻ്റെ ഡിഫോൾട്ട് ബ്രൗസർ ആപ്പ് തുറക്കാൻ ഉപയോഗിക്കുന്നവ.

    ആക്റ്റിവിറ്റി ലൈഫ് സൈക്കിൾ കോൾബാക്കുകൾ

    നിങ്ങൾ Android ആപ്പുകളിൽ കോഡ് എഴുതുമ്പോൾ, നിങ്ങൾ പലപ്പോഴും ആക്റ്റിവിറ്റി ലൈഫ് സൈക്കിൾ കോൾബാക്കുകൾ കണ്ടേക്കാം. നിങ്ങളുടെ ആപ്പ് എപ്പോൾ അടയ്ക്കണമെന്ന് ഈ കോൾബാക്കുകൾ നിങ്ങളെ അറിയിക്കുന്നു, പുനരാരംഭിച്ചു, അല്ലെങ്കിൽ പഴയ അവസ്ഥയിലേക്ക് തിരിച്ചു. ഭാഗ്യവശാൽ, ആക്റ്റിവിറ്റിയിലും ഫ്രാഗ്‌മെൻ്റ് സന്ദർഭങ്ങളിലും ഈ കോൾബാക്കുകൾ ഉപയോഗിക്കാം.

    മൂന്ന് തരത്തിലുള്ള ആക്റ്റിവിറ്റി ലൈഫ് സൈക്കിൾ കോൾബാക്കുകൾ ഉണ്ട്. ആദ്യത്തേത്, ഒറ്റമുറ(), സ്ക്രീനിൽ ഒരു പ്രവർത്തനം ആദ്യം ദൃശ്യമാകുമ്പോഴെല്ലാം അഭ്യർത്ഥിക്കുന്നു. രണ്ടാമത്തേത്, പുനരാരംഭിക്കുക(), ഒരു പ്രവർത്തനം താൽക്കാലികമായി നിർത്തിയാൽ തിരികെ വരുമ്പോൾ വിളിക്കുന്നു. നിങ്ങളുടെ ആപ്പ് ദീർഘനേരം പ്രവർത്തിക്കുന്നത് തടയാൻ കഴിയുന്നതിനാൽ ഇത് ഏതൊരു ആൻഡ്രോയിഡ് ആപ്പിനുമുള്ള നിർണായക കോൾബാക്കാണ്.

    ഈ കോൾബാക്കുകൾ ചെയ്യാൻ നിങ്ങൾ Android API മനസ്സിലാക്കണം. onStart, onStop രീതികൾ സിസ്റ്റം പലതവണ വിളിക്കുന്നു. ഇതിനർത്ഥം നിങ്ങളുടെ ആപ്പ് നിരവധി തവണ onStart രീതിയെ വിളിച്ചേക്കാം എന്നാണ്. ഇത് നിങ്ങളുടെ പ്രവർത്തനം ദൃശ്യമാകാനും മറയ്ക്കാനും ഇടയാക്കും. ലോഗ്‌കാറ്റ് സന്ദേശങ്ങൾ കാണുന്നതിലൂടെ പ്രവർത്തനം എപ്പോൾ നശിപ്പിക്കപ്പെടുമെന്ന് നിങ്ങൾക്ക് പറയാനാകും.

    onCreate, onDestroy കോൾബാക്കുകൾ ഉപയോക്തൃ ഇടപെടലിൻ്റെ ഫലമായി OS ട്രിഗർ ചെയ്യുന്നു. ഡെവലപ്പർമാർക്ക് കോൾബാക്കുകൾ അസാധുവാക്കാനും കഴിയും. എങ്കിലും, കോൾബാക്കുകൾ മറികടക്കുമ്പോൾ, ഡവലപ്പർമാർ എപ്പോഴും സൂപ്പർ ക്ലാസ് രീതിയെ വിളിക്കണം. അങ്ങനെ ചെയ്യുന്നതിൽ പരാജയപ്പെടുന്നത് ആപ്പ് ഒരു വിചിത്രമായ അവസ്ഥയിലോ ക്രാഷിലോ പ്രവർത്തിക്കുന്നതിലേക്ക് നയിച്ചേക്കാം.

    ആക്‌റ്റിവിറ്റി ലൈഫ് സൈക്കിൾ കോൾബാക്കുകൾ നിങ്ങളുടെ ആപ്ലിക്കേഷൻ എപ്പോൾ താൽക്കാലികമായി നിർത്തിയതോ നിർത്തിയതോ ആയ അവസ്ഥയിൽ പ്രവേശിക്കണമെന്ന് മനസ്സിലാക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു. ഈ സമയത്ത് നിങ്ങൾ തീവ്രമായ കണക്കുകൂട്ടലുകൾ നടത്തരുത്, കാരണം അത് അടുത്ത അവസ്ഥയിലേക്കുള്ള മാറ്റം വൈകിപ്പിക്കുകയും ഉപയോക്താവിൻ്റെ അനുഭവം അവസാനിപ്പിക്കുകയും ചെയ്യും.

    ലോഗിംഗ്

    ആൻഡ്രോയിഡ് ആപ്ലിക്കേഷനുകൾ ലോഗിൻ ചെയ്യുന്നത് ഡവലപ്പർമാർക്ക് ഉപയോഗപ്രദമായ ഒരു ടൂൾ ആയിരിക്കും. ലോഗ് സന്ദേശങ്ങൾ സംഭരിക്കുന്നതിന് ആൻഡ്രോയിഡ് ഒരു കേന്ദ്രീകൃത സംവിധാനം ഉപയോഗിക്കുന്നു, വിഭാഗമോ മുൻഗണനയോ അനുസരിച്ച് ഫിൽട്ടർ ചെയ്യാൻ കഴിയുന്നവ. നിങ്ങളുടെ ആപ്പിൻ്റെ പ്രവർത്തനത്തിന് പ്രസക്തമായ ഇഷ്‌ടാനുസൃത ലോഗ് പ്രസ്താവനകൾ എഴുതി നിങ്ങൾക്ക് സന്ദേശങ്ങൾ ഇഷ്ടാനുസൃതമാക്കാനാകും. ലോഗ് സ്റ്റേറ്റ്‌മെൻ്റുകൾ ലോഗ് ചെയ്യാനും വിശകലനം ചെയ്യാനും നിരവധി മാർഗങ്ങളുണ്ട്.

    ഒരു ബിൽറ്റ്-ഇൻ ലോഗ് ക്ലാസ് ഉപയോഗിച്ചാണ് ലോഗിൻ ചെയ്യാനുള്ള എളുപ്പവഴികളിലൊന്ന്. ലോഗിംഗ് രീതികൾ രണ്ടോ മൂന്നോ ആർഗ്യുമെൻ്റുകൾ സ്വീകരിക്കുന്നു. മിക്ക ലോഗ് സന്ദേശങ്ങളിലും രണ്ട് ആർഗ്യുമെൻ്റുകൾ അടങ്ങിയിരിക്കുന്നു. ആർഗ്യുമെൻ്റുകൾ സ്ട്രിംഗ് തരത്തിലായിരിക്കണം. ഇത്തരത്തിലുള്ള ലോഗിംഗ് പരിമിതമാണ്, എന്നാൽ ഇത് പല ആവശ്യങ്ങൾക്കും ഉപയോഗപ്രദമായ ഒരു ഉപകരണമാണ്.

    ആൻഡ്രോയിഡ് ആപ്പുകൾ ലോഗിൻ ചെയ്യുന്നത് ഡവലപ്പർമാർക്കുള്ള ഒരു ജനപ്രിയ പ്രോഗ്രാമിംഗ് സമ്പ്രദായമായി മാറിയിരിക്കുന്നു. പൊതുവായി, ലൈഫ് സൈക്കിൾ ഇവൻ്റുകൾ സംഭവിക്കുമ്പോഴെല്ലാം ഒരു Android ആപ്പ് ലോഗ് ചെയ്യണം. അപ്ലിക്കേഷന് ഒരു പ്രശ്‌നം ഡീബഗ് ചെയ്യണമെങ്കിൽ, ആപ്ലിക്കേഷൻ ഡീബഗ് ചെയ്യാൻ ഡവലപ്പർമാരെ സഹായിക്കുന്ന വിവരങ്ങൾ ഇത് ലോഗ് ചെയ്യണം. Log.d ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഡീബഗ് വിവരങ്ങൾ ലോഗ് ചെയ്യാനും കഴിയും() രീതി. പിന്നീടുള്ള രീതിക്ക് വേരിയബിൾ മൂല്യങ്ങൾ ലോഗ് ചെയ്യാനും സന്ദേശങ്ങൾ പ്രിൻ്റ് ചെയ്യാനും കഴിയും.

    പിശകുകളുടെ കാര്യത്തിൽ ഡീബഗ്ഗിംഗ് സഹായകരമാണ്, ഓവർ-ലോഗിംഗ് പ്രകടനം കുറയ്ക്കും. വികസനത്തിനായി മാത്രം ഡീബഗ് ലോഗിംഗ് ഉപയോഗിക്കുന്നതാണ് ഏറ്റവും നല്ല രീതി, നിങ്ങളുടെ അപേക്ഷ പ്രസിദ്ധീകരിക്കുന്നതിന് മുമ്പ് വാചാലമായ ലോഗിംഗ് നീക്കം ചെയ്യുക. ഒരു ഡെവലപ്പർ എന്ന നിലയിൽ, പ്രസിദ്ധീകരിക്കുന്നതിന് മുമ്പ് നിങ്ങൾ എല്ലായ്പ്പോഴും ലോഗിംഗ് ഔട്ട്പുട്ട് അവലോകനം ചെയ്യണം. ആൻഡ്രോയിഡ് SDK ഒരു സംയോജിത ലോഗിംഗ് ക്ലാസുമായി വരുന്നു. ഇത് LogCat എന്ന ലോഗിലേക്ക് ആപ്ലിക്കേഷൻ്റെ ഡാറ്റ എഴുതുന്നു. എങ്കിലും, ഈ രീതിക്ക് ചില പ്രകടന പ്രശ്നങ്ങളുണ്ട്, അതിനാൽ അത് ആവശ്യമുള്ളപ്പോൾ മാത്രമേ ഉപയോഗിക്കാവൂ.

    നിങ്ങൾക്ക് ആൻഡ്രോയിഡിൽ സിസ്റ്റം ലോഗുകൾ കാണാനും കഴിയും. ഈ ലോഗുകളിൽ അനലിറ്റിക്‌സ് ഇവൻ്റുകൾ മുതൽ ലൊക്കേഷൻ, ബുക്കിംഗ് ലോഗുകൾ വരെയുള്ള എല്ലാ വിവരങ്ങളും അടങ്ങിയിരിക്കുന്നു. ആൻഡ്രോയിഡ് സ്റ്റുഡിയോ പോലുള്ള ഒരു ടൂളിൻ്റെ സഹായത്തോടെ ആപ്ലിക്കേഷൻ പാക്കേജ് വഴി നിങ്ങൾക്ക് ലോഗ് ഔട്ട്പുട്ട് ഫിൽട്ടർ ചെയ്യാം.

    ഞങ്ങളുടെ വീഡിയോ
    ഒരു സൗജന്യ ഉദ്ധരണി നേടുക