Android 2.0، نسخه ۱

سطح میانای برنامه‌سازی کاربردی: ۵

Android 2.0 نسخه اصلی پلاتفرم است که از نوامبر ۲۰۰۹ در گوشی‌های مجهز به Android قابل‌استقرار است. این نسخه شامل ویژگی‌های جدیدی برای کاربران و توسعه‌دهندگان و همچنین تغییراتی در میانای برنامه‌سازی کاربردی چارچوب Android است.

برای توسعه‌دهندگان، پلاتفرم Android 2.0 به عنوان یک مؤلفه قابل بارگیری برای Android SDK دردسترس است. پلاتفرم قابل بارگیری شامل یک کتابخانه کاملاً سازگار با Android و تصویر سیستم، و همچنین مجموعه‌ای از پوسته‌های شبیه‌ساز، برنامه‌های نمونه، و موارد دیگر است. پلاتفرم بارگیری‌شدنی کاملاً منطبق است و هیچ کتابخانه خارجی‌ای ندارد.

برای شروع توسعه یا آزمایش در پلاتفرم Android نسخه ۲.۰، از ابزار «مدیر کیت توسعه نرم‌افزار Android» و «مدیر دستگاه‌های مجازی Android» برای بارگیری پلاتفرم در کیت توسعه نرم‌افزار خود استفاده کنید.

برگزیده‌های پلاتفرم

برای مشاهده فهرست ویژگی‌های جدید کاربر و نکات برجسته پلاتفرم، به سند نکات برجسته پلاتفرم Android 2.0 مراجعه کنید.

برنامه‌های داخلی

تصویر سیستم موجود در پلاتفرم بارگیری‌شدنی این برنامه‌های داخلی را ارائه می‌دهد:

  • ساعت زنگ‌دار
  • مرورگر
  • ماشین‌حساب
  • دوربین فیلمبرداری
  • دوربین
  • مخاطبین
  • منطقه زبانی سفارشی (برنامه توسعه‌دهنده)
  • ابزارهای توسعه‌دهنده (برنامه توسعه‌دهنده)
  • Dialer
  • ایمیل
  • گالری
  • سازنده اشاره‌ها
  • ویرایشگر روش ورودی برای ورودی نوشتاری ژاپنی
  • پیام‌رسانی
  • موسیقی
  • تنظیمات
  • قطعات یدکی (برنامه توسعه‌دهنده)

منطقه‌های زبانی

تصویر سیستم موجود در پلاتفرم بارگیری‌شدنی انواع مختلفی از منطقه‌های زبانی داخلی را ارائه می‌دهد. در برخی موارد، رشته‌های خاص منطقه برای زبان‌های محلی دردسترس است. در موارد دیگر، از نسخه پیش‌فرض زبان استفاده می‌شود. زبان‌های موجود در تصویر سیستم Android 2.0 در زیر فهرست شده‌اند (با توصیف‌گر محلی زبان_کشور/منطقه).

  • چینی، جمهوری خلق چین (zh_CN)
  • چینی، تایوان (zh_TW)
  • چکی (cs_CZ)
  • هلندی، هلند (nl_NL)
  • هلندی، بلژیک (nl_BE)
  • انگلیسی، امریکا (en_US)
  • انگلیسی، بریتانیا (en_GB)
  • انگلیسی، کانادا (en_CA)
  • انگلیسی، استرالیا (en_AU)
  • انگلیسی، نیوزیلند (en_NZ)
  • انگلیسی، سنگاپور(en_SG)
  • فرانسوی، فرانسه (fr_FR)
  • فرانسوی، بلژیک (fr_BE)
  • فرانسوی، کانادا (fr_CA)
  • فرانسوی، سوئیس (fr_CH)
  • آلمانی، آلمان (de_DE)
  • آلمانی، اتریش (de_AT)
  • آلمانی، سوئیس (de_CH)
  • آلمانی، لیختن‌اشتاین (de_LI)
  • ایتالیایی، ایتالیا (it_IT)
  • ایتالیایی، سوئیس (it_CH)
  • ژاپنی (ja_JP)
  • کره‌ای (ko_KR)
  • لهستانی (pl_PL)
  • روسی (ru_RU)
  • اسپانیایی (es_ES)
  • رشته‌های واسط کاربر بومی‌سازی‌شده با مناطق زبانی‌ای که ازطریق «تنظیمات» قابل‌دسترسی هستند مطابقت دارد.

    پوسته‌های شبیه‌ساز

    پلاتفرم بارگیری‌شدنی شامل مجموعه‌ای از پوسته‌های شبیه‌ساز است که می‌توانید از آن‌ها برای مدل‌سازی برنامه‌تان در اندازه‌ها و وضوح‌های مختلف صفحه‌نمایش استفاده کنید. پوسته‌های شبیه‌ساز عبارت‌اند از:

    • QVGA (‏۲۴۰×۳۲۰، تراکم کم، صفحه‌نمایش کوچک)
    • WQVGA (‏۲۴۰×۴۰۰، تراکم کم، صفحه معمولی)
    • FWQVGA (‏۲۴۰×۴۳۲، تراکم کم، صفحه معمولی)
    • HVGA (‏۳۲۰×۴۸۰، تراکم متوسط، صفحه معمولی)
    • WVGA800 (‏۴۸۰×۸۰۰، تراکم بالا، صفحه معمولی)
    • WVGA854 (تراکم بالای ۴۸۰×۸۵۴، صفحه معمولی)

    برای کسب اطلاعات بیشتر درباره نحوه توسعه برنامه‌ای که به‌درستی در همه دستگاه‌های Android نمایش داده می‌شود و کار می‌کند، به پشتیبانی از چند صفحه مراجعه کنید.

    ویژگی‌های توسعه‌دهنده

    بخش‌های زیر اطلاعاتی درباره ویژگی‌های جدید توسعه‌دهنده ارائه می‌دهند که توسط مؤلفه پلاتفرم Android 2.0 بارگیری‌شدنی ارائه شده است.

    پشتیبانی Ant

    • امضای برنامه در حالت اشکال‌زدایی و انتشار. امضای حالت انتشار شامل پشتیبانی یکپارچه برای بهینه‌سازی zipalign است. برای اطلاعات بیشتر، به امضا کردن برنامه‌ها مراجعه کنید.
    • سیستم ساخت Ant جدید را با پشتیبانی از پروژه‌های ابزار دقیق Emma (پوشش کد) اضافه می‌کند.

    Framework API

    بخش‌های زیر اطلاعاتی درباره API چارچوب برنامه ارائه می‌دهند که توسط پلاتفرم Android 2.0 ارائه شده است.

    سطح API

    پلاتفرم Android 2.0 نسخه به‌روزشده‌ای از چارچوب API را ارائه می‌دهد. همانند نسخه‌های قبلی، به میانای برنامه‌سازی کاربردی Android 2.0 یک شناسه عدد صحیح — ۵ — اختصاص داده شده است که در خود سیستم ذخیره می‌شود. این شناسه که «سطح API» نامیده می‌شود، به سیستم اجازه می‌دهد قبل‌از نصب برنامه، به‌درستی تشخیص دهد که آیا برنامه با سیستم سازگار است یا نه.

    برای استفاده از میاناهای برنامه‌سازی کاربردی معرفی‌شده در Android 2.0 در برنامه‌تان، باید مقدار مناسب «۵» را در مشخصه‌های عنصر <uses-sdk> در مانیفست برنامه‌تان تنظیم کنید.

    برای کسب اطلاعات بیشتر درباره نحوه استفاده از «سطح میانای برنامه‌سازی کاربردی»، سند سطوح میانای برنامه‌سازی کاربردی را ببینید.

    خلاصه تغییرات میانای برنامه‌سازی کاربردی

    بلوتوث

    • روشن/خاموش کردن بلوتوث
    • کشف دستگاه و سرویس
    • اتصال به دستگاه از راه دور بااستفاده از RFCOMM و ارسال/دریافت داده
    • تبلیغ سرویس‌های RFCOMM و گوش دادن به اتصال RFCOMM ورودی

    وفق‌دهنده‌های همگام‌سازی

    • میاناهای برنامه‌سازی کاربردی جدید برای وفق‌دهنده‌های همگام‌سازی برای اتصال به هر زیرینه‌ای

    مدیر حساب

    • میانای برنامه‌سازی کاربردی مدیر حساب متمرکز برای ذخیره و دسترسی ایمن به گذرواژه‌ها/کدهای اصالت‌سنجی

    مخاطبین

    • میاناهای برنامه‌سازی کاربردی جدید مخاطبین که امکان استفاده از داده‌های چند حساب را فراهم می‌کند
    • میاناهای برنامه‌سازی کاربردی چارچوب «مخاطب سریع» جدید به توسعه‌دهندگان امکان می‌دهد نشان‌های مخاطب در برنامه‌شان ایجاد کنند. با کلیک کردن روی نشان، پنجره‌ای با فهرستی از روش‌های تماس با فرد با یک کلیک باز می‌شود.

    وب‌نما

    • کلاس‌های منسوخ‌شده: UrlInterceptHandler،‏ Plugin،‏ PluginData،‏ PluginList،‏ UrlInterceptRegistry.

    دوربین

    • پارامترهای جدید برای جلوه رنگ، حالت منظره، حالت فلاش، حالت تمرکز، تراز سفیدی، چرخش، و تنظیمات دیگر.
    • میانای ZoomCallback جدید برای انجام کنش‌ها هنگام تغییر سطح بزرگ‌نمایی.

    رسانه

    • MediaScanner اکنون برای همه تصاویر وقتی در MediaStore درج می‌شوند ریزعکس تولید می‌کند.
    • میانای برنامه‌سازی کاربردی جدید Thumbnail برای بازیابی ریزعکس‌های تصویر و ویدیو درصورت درخواست.

    چارچوب دیگر

    • موضوعات جدید سیستم در android.R.style برای نمایش آسان فعالیت‌ها در بالای کاغذدیواری فعلی سیستم یا قابل‌مشاهده نگه داشتن فعالیت قبلی در پس‌زمینه.
    • WallpaperManager API جدید جایگزین wallpaper APIs می‌شود که قبلاً در Context بود و آن را گسترش می‌دهد تا به برنامه‌ها اجازه دهد کاغذدیواری سیستم را درخواست و تنظیم کنند.
    • میاناهای برنامه‌سازی کاربردی جدید «سرویس» برای کمک به برنامه‌ها در مدیریت صحیح چرخه عمر «سرویس»، به‌ویژه در شرایط کمبود حافظه که ممکن است «سرویس» درحین اجرا متوقف شود.
      • ‫Service.setForeground()‎ منسوخ شده است و اکنون عملاً هیچ عملیاتی انجام نمی‌دهد. این API با API جدیدی به‌نام startForeground()‎ جایگزین شده است که به مرتبط کردن اعلان درحال انجام با وضعیت پیش‌زمینه کمک می‌کند (و این کار را الزامی می‌کند).
    • MotionEvent اکنون می‌تواند اطلاعات لمس هم‌زمان را برای دستگاه‌هایی که از آن پشتیبانی می‌کنند گزارش دهد. حداکثر سه اشاره‌گر را می‌توان به‌طور هم‌زمان ردیابی کرد.
    • KeyEvent دارای میاناهای برنامه‌سازی کاربردی جدیدی برای ارسال کلید است که به پیاده‌سازی رفتار کنش-در-بالا و فشار طولانی کمک می‌کند، و همچنین مکانیزم جدیدی برای لغو فشار کلید (برای کلیدهای مجازی) دارد.
    • WindowManager.LayoutParams دارای ثابت‌های جدیدی است که به پنجره اجازه می‌دهد هنگام نمایش، صفحه را بیدار کند و پنجره را حتی اگر صفحه قفل باشد نشان دهد. این کار به برنامه‌ها اجازه می‌دهد تا مواردی مانند ساعت‌های زنگ‌دار را که باید دستگاه را بیدار کنند، به‌طور تمیزتری پیاده‌سازی کنند.
    • میاناهای برنامه‌سازی کاربردی Intent جدید که وضعیت اتصال دستگاه را پخش می‌کنند و به برنامه‌ها اجازه می‌دهند وقتی دستگاه در پایه اتصال رومیزی یا خودرو قرار می‌گیرد، فعالیت‌های خاصی را راه‌اندازی کنند.

    رویدادهای کلیدی اجراشده در کلید بالا

    ‫Android 2.0 برای اجرا در دستگاه‌هایی طراحی شده است که از کلیدهای مجازی برای HOME (صفحه اصلی)، MENU (منو)، BACK (بازگشت)، و SEARCH (جستجو) به‌جای کلیدهای فیزیکی استفاده می‌کنند. برای پشتیبانی از بهترین تجربه کاربری در این دستگاه‌ها، پلاتفرم Android اکنون این دکمه‌ها را در حالت «رها کردن کلید» (برای جفت «فشردن کلید»/«رها کردن کلید») اجرا می‌کند، نه در حالت «فشردن کلید». این کار به جلوگیری از رویدادهای دکمه تصادفی کمک می‌کند و به کاربر اجازه می‌دهد ناحیه دکمه را فشار دهد و سپس بدون ایجاد رویداد، آن را به بیرون بکشد.

    این تغییر در رفتار فقط درصورتی باید بر برنامه شما تأثیر بگذارد که رویدادهای دکمه را رهگیری کند و به‌جای رها کردن کلید، هنگام فشار دادن کلید کنشی انجام دهد. به‌ویژه اگر برنامه شما کلید «برگشت» را رهگیری می‌کند، باید مطمئن شوید که برنامه شما رویدادهای کلید را به‌درستی مدیریت می‌کند.

    به‌طور کلی، رهگیری کلید «برگشت» در برنامه توصیه نمی‌شود، اما اگر برنامه‌تان این کار را انجام می‌دهد و کنشی را در رویداد key-down (فشردن کلید) به‌جای key-up (رها کردن کلید) فراخوانی می‌کند، باید کدتان را اصلاح کنید.

    اگر برنامه‌تان از میاناهای برنامه‌سازی کاربردی معرفی‌شده در Android 2.0 (میانای برنامه‌سازی کاربردی سطح ۵) استفاده می‌کند، می‌توانید از میاناهای برنامه‌سازی کاربردی جدید برای مدیریت جفت‌های رویداد کلید استفاده کنید:

    • اگر کلید «برگشت» را در فعالیت یا کادر گفتگویی رهگیری می‌کنید، فقط روش جدید onBackPressed() را پیاده‌سازی کنید.
    • اگر کلید «برگشت» را در نمایی رهگیری می‌کنید، باید رویداد کلید را در حالت فشرده شدن کلید (ازطریق روش جدید startTracking() ) ردیابی کنید، سپس کنش را در حالت رها شدن کلید فراخوانی کنید. در اینجا الگویی آورده شده است که می‌توانید از آن استفاده کنید:
    • کاتلین

      override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.repeatCount == 0) {
                      event.startTracking()
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyDown(keyCode, event)
          }
      }
      
      override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
          return when (keyCode) {
              KeyEvent.KEYCODE_BACK -> {
                  if (event.isTracking && !event.isCanceled) {
                      // *** DO ACTION HERE ***
                      true
                  } else {
                      false
                  }
              }
              ...
              else -> super.onKeyUp(keyCode, event)
          }
      }

      جاوا

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK
                      && event.getRepeatCount() == 0) {
                  event.startTracking();
                  return true;
              }
              return super.onKeyDown(keyCode, event);
          }
      
          public boolean onKeyUp(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
                      && !event.isCanceled()) {
                  // *** DO ACTION HERE ***
                  return true;
              }
              return super.onKeyUp(keyCode, event);
          }

    اگر می‌خواهید برنامه قدیمی را به‌روز کنید تا عملکرد کلید «برگشت» آن برای Android 2.0 و نسخه‌های قدیمی‌تر پلاتفرم به‌درستی کار کند، می‌توانید از رویکردی مشابه آنچه در بالا نشان داده شده است استفاده کنید. کد شما می‌تواند رویداد دکمه هدف را در رویداد key-down دریافت کند، پرچمی را برای ردیابی رویداد کلیدی تنظیم کند، و سپس رویداد را در رویداد key-up نیز دریافت کند و درصورت تنظیم پرچم ردیابی، کنش موردنظر را اجرا کند. همچنین باید تغییرات تمرکز را تماشا کنید و پرچم ردیابی را هنگام به‌دست آوردن/ازدست دادن تمرکز پاک کنید.

    گزارش تفاوت‌های میانای برنامه‌سازی کاربردی

    برای مشاهده جزئیات تغییرات API در Android 2.0 (سطح API 5) در مقایسه با نسخه قبلی، به گزارش تفاوت‌های API مراجعه کنید.