میاناهای برنامه‌سازی کاربردی Android 6.0

‫Android 6.0 (M) ویژگی‌های جدیدی برای کاربران و توسعه‌دهندگان برنامه ارائه می‌دهد. این سند مقدمه‌ای بر مهم‌ترین میاناهای برنامه‌سازی کاربردی ارائه می‌دهد.

شروع توسعه

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

سطح میانای برنامه‌سازی کاربردی هدف را به‌روز کنید

برای بهینه‌سازی بهتر برنامه‌تان برای دستگاه‌های دارای Android، targetSdkVersion را روی "23" تنظیم کنید، برنامه‌تان را روی تصویر سیستم Android نصب کنید، آن را آزمایش کنید، سپس برنامه به‌روزشده را با این تغییر منتشر کنید.

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

برای کسب اطلاعات بیشتر درباره نحوه عملکرد سطوح API، سطح API چیست؟ را بخوانید.

اصالت‌سنجی با اثر انگشت

این نسخه پخش میاناهای برنامه‌سازی کاربردی جدیدی ارائه می‌دهد که به شما امکان می‌دهد کاربران را بااستفاده از اسکن اثر انگشت آن‌ها در دستگاه‌های پشتیبانی‌شده اصالت‌سنجی کنید. از این میاناهای برنامه‌سازی کاربردی همراه با سیستم Android Keystore استفاده کنید.

برای اصالت‌سنجی کاربران ازطریق اسکن اثر انگشت، نمونه‌ای از کلاس جدید FingerprintManager دریافت کنید و authenticate() متد را فراخوانی کنید. برنامه شما باید در دستگاه سازگاری که حسگر اثر انگشت دارد اجرا شود. باید میانای کاربر را برای جریان اصالت‌سنجی اثر انگشت در برنامه‌تان پیاده‌سازی کنید و از نماد استاندارد اثر انگشت Android در میانای کاربری‌تان استفاده کنید. نماد اثر انگشت Android (c_fp_40px.png) در نمونه «اصالت‌سنجی زیست‌سنجشی» گنجانده شده است. اگر درحال توسعه چند برنامه هستید که از اصالت‌سنجی اثر انگشت استفاده می‌کنند، توجه داشته باشید که هر برنامه باید اثر انگشت کاربر را به‌طور مستقل اصالت‌سنجی کند.

برای استفاده از این ویژگی در برنامه‌تان، ابتدا اجازه USE_FINGERPRINT را به مانیفستتان اضافه کنید.

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
تلفن همراهی که عملکرد اصالت‌سنجی با اثر انگشت را نشان می‌دهد

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

اگر درحال آزمایش این ویژگی هستید، این مراحل را دنبال کنید:

  1. اگر این کار را نکرده‌اید، «ابزارهای کیت توسعه نرم‌افزار Android» نسخه ۲۴.۳ را نصب کنید.
  2. با رفتن به تنظیمات > امنیت > اثر انگشت، اثر انگشت جدیدی را در شبیه‌ساز ثبت کنید، سپس دستورالعمل‌های ثبت را دنبال کنید.
  3. از شبیه‌ساز برای شبیه‌سازی رویدادهای لمسی اثر انگشت با فرمان زیر استفاده کنید. از همان فرمان برای شبیه‌سازی رویدادهای لمس اثر انگشت در صفحه قفل یا در برنامه‌تان استفاده کنید.
    adb -e emu finger touch <finger_id>
    

    در Windows، ممکن است لازم باشد telnet 127.0.0.1 <emulator-id> و سپس finger touch <finger_id> را اجرا کنید.

تأیید اعتبارنامه

برنامه شما می‌تواند کاربران را براساس اینکه آخرین بار چه زمانی قفل دستگاهشان را باز کرده‌اند اصالت‌سنجی کند. این ویژگی کاربران را از به‌خاطر سپردن گذرواژه‌های مختص به برنامه اضافی بی‌نیاز می‌کند و نیاز به پیاده‌سازی میانای کاربری اصالت‌سنجی توسط شما را برطرف می‌کند. برنامه شما باید از این ویژگی در ترکیب با پیاده‌سازی کلید عمومی یا مخفی برای اصالت‌سنجی کاربر استفاده کند.

برای تنظیم مدت زمان وقفه که پس‌از آن کاربر می‌تواند با موفقیت اصالت‌سنجی شود و از همان کلید دوباره استفاده کند، هنگام راه‌اندازی KeyGenerator یا KeyPairGenerator، روش جدید setUserAuthenticationValidityDurationSeconds() را فراخوانی کنید.

از نمایش بیش‌ازحد کادر گفتگوی اصالت‌سنجی مجدد خودداری کنید -- برنامه‌هایتان باید ابتدا از شیء رمزنگاری استفاده کنند و اگر مهلت زمانی منقضی شد، از روش createConfirmDeviceCredentialIntent() برای اصالت‌سنجی مجدد کاربر در برنامه‌تان استفاده کنند.

پیوند دادن برنامه

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

پشتیبان‌گیری خودکار برای برنامه‌ها

اکنون سیستم برای برنامه‌ها پشتیبان‌گیری و بازیابی کامل داده‌ها را به‌طور خودکار انجام می‌دهد. برنامه‌تان باید Android 6.0 (سطح میانای برنامه کاربردی ۲۳) را هدف‌یابی کند تا این رفتار فعال شود؛ نیازی به افزودن کد اضافی ندارید. اگر کاربران «حساب Google» خود را حذف کنند، داده‌های پشتیبان‌گیری آن‌ها نیز حذف می‌شود. برای آشنایی با نحوه عملکرد این ویژگی و نحوه پیکربندی آنچه در سیستم فایل پشتیبان‌گیری می‌شود، پیکربندی «پشتیبان‌گیری خودکار» برای برنامه‌ها را ببینید.

هم‌رسانی مستقیم

قسمت پایین تلفن همراهی که عملکرد «هم‌رسانی مستقیم» را نمایش می‌دهد

این نسخهٔ پخش میاناهای برنامه‌سازی کاربردی را دراختیارتان قرار می‌دهد تا هم‌رسانی را برای کاربران سریع و شهودی کنید. اکنون می‌توانید هدف‌های هم‌رسانی مستقیم را تعریف کنید که فعالیت خاصی را در برنامه‌تان راه‌اندازی می‌کنند. این هدف‌های هم‌رسانی مستقیم ازطریق منو هم‌رسانی دراختیار کاربران قرار می‌گیرند. این ویژگی به کاربران امکان می‌دهد محتوا را در برنامه‌های دیگر با هدف‌هایی مثل مخاطبین هم‌رسانی کنند. برای مثال، هدف هم‌رسانی مستقیم ممکن است فعالیتی را در برنامه شبکه اجتماعی دیگری راه‌اندازی کند که به کاربر امکان می‌دهد محتوا را مستقیماً با دوست یا انجمن خاصی در آن برنامه هم‌رسانی کند.

برای فعال کردن هدف‌های هم‌رسانی مستقیم، باید کلاسی تعریف کنید که کلاس ChooserTargetService را گسترش دهد. سرویس خود را در مانیفست اعلام کنید. در آن اظهارنامه، اجازه BIND_CHOOSER_TARGET_SERVICE و فیلتر هدف بااستفاده از کنش SERVICE_INTERFACE را مشخص کنید.

مثال زیر نشان می‌دهد که چگونه می‌توانید ChooserTargetService را در مانیفست خود اعلام کنید.

<service android:name=".ChooserTargetService"
        android:label="@string/service_name"
        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
    <intent-filter>
        <action android:name="android.service.chooser.ChooserTargetService" />
    </intent-filter>
</service>

برای هر فعالیتی که می‌خواهید درمعرض دید ChooserTargetService قرار دهید، <meta-data> عنصری با نام "android.service.chooser.chooser_target_service" در مانیفست برنامه‌تان اضافه کنید.

<activity android:name=".MyShareActivity”
        android:label="@string/share_activity_label">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
    </intent-filter>
<meta-data
        android:name="android.service.chooser.chooser_target_service"
        android:value=".ChooserTargetService" />
</activity>

تعاملات صوتی

این نسخه جدید میانای برنامه‌سازی کاربردی تعامل صوتی را ارائه می‌دهد که همراه با کنش‌های صوتی، به شما امکان می‌دهد تجربه‌های صوتی مکالمه‌ای را در برنامه‌هایتان بسازید. برای تعیین اینکه آیا کنش گفتاری فعالیتتان را راه‌اندازی کرده است یا نه، متد isVoiceInteraction() را فراخوانی کنید. در این صورت، برنامه شما می‌تواند از کلاس VoiceInteractor برای درخواست تأیید صوتی از کاربر، انتخاب از فهرست گزینه‌ها، و غیره استفاده کند.

بیشتر تعاملات صوتی از کنش صوتی کاربر منشأ می‌گیرند. فعالیت تعامل صوتی می‌تواند همچنین بدون ورودی کاربر شروع شود. برای مثال، برنامه دیگری که ازطریق تعامل صوتی راه‌اندازی شده است نیز می‌تواند قصدی برای راه‌اندازی تعامل صوتی ارسال کند. برای تعیین اینکه فعالیت شما از پُرسمان صوتی کاربر یا از برنامه تعامل صوتی دیگری راه‌اندازی شده است، روش isVoiceInteractionRoot() را فراخوانی کنید. اگر برنامه دیگری فعالیت شما را راه‌اندازی کرده باشد، این روش false را برمی‌گرداند. برنامه شما ممکن است از کاربر بخواهد تأیید کند که قصد انجام این کنش را داشته است.

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

Assist API

این نسخهٔ پخش روش جدیدی را برای کاربران ارائه می‌دهد تا ازطریق دستیار با برنامه‌های شما تعامل داشته باشند. برای استفاده از این ویژگی، کاربر باید به دستیار اجازه دهد از بافت کنونی استفاده کند. پس‌از فعال شدن، کاربر می‌تواند با فشار طولانی روی دکمه صفحه اصلی، دستیار را در هر برنامه‌ای فرا بخواند.

برنامه شما می‌تواند با تنظیم پرچم FLAG_SECURE، انتخاب کند که زمینه فعلی را با دستیار هم‌رسانی نکند. علاوه‌بر مجموعه استاندارد اطلاعاتی که پلاتفرم به دستیار منتقل می‌کند، برنامه شما می‌تواند بااستفاده از کلاس جدید AssistContent اطلاعات تکمیلی را هم‌رسانی کند.

برای ارائه زمینه اضافی از برنامه‌تان به دستیار، این مراحل را دنبال کنید:

  1. میانای Application.OnProvideAssistDataListener را پیاده‌سازی کنید.
  2. این شنونده را بااستفاده از registerOnProvideAssistDataListener() ثبت کنید.
  3. برای ارائه اطلاعات زمینه‌ای مختص فعالیت، onProvideAssistData() callback و، درصورت تمایل، onProvideAssistContent() callback جدید را ملغی کنید.

دستگاه‌های حافظه قابل‌پذیرش

با این نسخه، کاربران می‌توانند از دستگاه‌های ذخیره‌سازی خارجی مثل کارت SD استفاده کنند. با پذیرفتن دستگاه ذخیره‌سازی خارجی، دستگاه رمزگذاری و قالب‌بندی می‌شود تا مانند حافظه داخلی عمل کند. این ویژگی به کاربران امکان می‌دهد هم برنامه‌ها و هم داده‌های خصوصی این برنامه‌ها را بین دستگاه‌های ذخیره‌سازی جابه‌جا کنند. هنگام انتقال برنامه‌ها، سیستم android:installLocation اولویت را در مانیفست رعایت می‌کند.

اگر برنامه شما به «میاناهای برنامه‌سازی کاربردی» یا فیلدهای زیر دسترسی دارد، توجه داشته باشید که مسیرهای فایلی که برمی‌گردانند وقتی برنامه بین دستگاه‌های ذخیره‌سازی داخلی و خارجی منتقل می‌شود به‌صورت پویا تغییر می‌کند. هنگام ساختن مسیرهای فایل، اکیداً توصیه می‌شود که همیشه این «میاناهای برنامه‌سازی کاربردی» را به‌صورت پویا فراخوانی کنید. از مسیرهای فایل کدبندی‌شده سخت استفاده نکنید یا مسیرهای فایل کاملاً واجدشرایطی را که قبلاً ساخته شده‌اند حفظ نکنید.

برای اشکال‌زدایی این ویژگی، می‌توانید با اجرای این فرمان، پذیرش درایو USB متصل به دستگاه Android ازطریق کابل USB On-The-Go (OTG) را فعال کنید:

$ adb shell sm set-force-adoptable true

اعلان‌ها

این نسخه تغییرات زیر را به API اعلان‌ها اضافه می‌کند:

  • سطح فیلتر جدید INTERRUPTION_FILTER_ALARMS که با حالت مزاحم نشوید جدید فقط زنگ‌های هشدار مطابقت دارد.
  • مقدار دسته CATEGORY_REMINDER جدید که برای تمایز یادآوری‌های زمان‌بندی‌شده توسط کاربر از رویدادهای دیگر (CATEGORY_EVENT) و زنگ‌های هشدار (CATEGORY_ALARM) استفاده می‌شود.
  • کلاس جدید Icon که می‌توانید ازطریق روش‌های setSmallIcon() و setLargeIcon() به اعلان‌هایتان پیوست کنید. به‌همین ترتیب، روش addAction() اکنون به‌جای شناسه منبع طراحی‌شدنی، شیء Icon را می‌پذیرد.
  • روش جدید getActiveNotifications() که به برنامه‌های شما اجازه می‌دهد اعلان‌های فعال خود را پیدا کنند.

پشتیبانی از قلم بلوتوث

این نسخه پشتیبانی بهبودیافته‌ای برای ورودی کاربر بااستفاده از قلم بلوتوث ارائه می‌دهد. کاربران می‌توانند قلم سازگار مجهز به بلوتوث را با تلفن یا رایانه لوحی‌شان جفت و متصل کنند. هنگام اتصال، اطلاعات موقعیت از صفحه لمسی با اطلاعات فشار و دکمه از قلم ترکیب می‌شود تا طیف وسیع‌تری از بیان را نسبت‌به صفحه لمسی به‌تنهایی ارائه دهد. برنامه شما می‌تواند با ثبت کردن View.OnContextClickListener و GestureDetector.OnContextClickListener اشیا در فعالیتتان، فشار دادن دکمه قلم را بشنود و کنش‌های ثانویه انجام دهد.

از روش‌ها و ثابت‌های MotionEvent برای تشخیص تعامل‌های دکمه قلم استفاده کنید:

  • اگر کاربر قلمی را با دکمه‌ای روی صفحه برنامه شما لمس کند، روش getTooltype() TOOL_TYPE_STYLUS را برمی‌گرداند.
  • برای برنامه‌هایی که Android 6.0 (سطح میانای برنامه کاربردی ۲۳) را هدف‌یابی می‌کنند، وقتی کاربر دکمه اصلی قلم را فشار می‌دهد، روش getButtonState() مقدار BUTTON_STYLUS_PRIMARY را برمی‌گرداند. اگر قلم دکمه دوم داشته باشد، وقتی کاربر آن را فشار می‌دهد، همان روش BUTTON_STYLUS_SECONDARY را برمی‌گرداند. اگر کاربر هر دو دکمه را به‌طور هم‌زمان فشار دهد، این روش هر دو مقدار را با هم برمی‌گرداند (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY).
  • برای برنامه‌هایی که نسخه پلاتفرم پایین‌تری را هدف‌یابی می‌کنند، روش getButtonState() BUTTON_SECONDARY (برای فشار دادن دکمه اصلی قلم)، BUTTON_TERTIARY (برای فشار دادن دکمه فرعی قلم)، یا هر دو را برمی‌گرداند.

اسکن بهبودیافته «بلوتوث کم‌مصرف»

اگر برنامه‌تان اسکن‌های «بلوتوث کم‌مصرف» انجام می‌دهد، از روش جدید setCallbackType() استفاده کنید تا مشخص کنید که می‌خواهید سیستم وقتی برای اولین‌بار بسته آگهی‌ای را که با مجموعه ScanFilter مطابقت دارد پیدا می‌کند یا پس‌از مدت طولانی آن را می‌بیند، با تماس‌های برگشتی به شما اطلاع دهد. این رویکرد برای اسکن کردن نسبت به آنچه در نسخه قبلی پلاتفرم ارائه شده است، انرژی کمتری مصرف می‌کند.

پشتیبانی از «انتشار ۱ نقطه اتصال ۲.۰»

این نسخه پخش از مشخصات «نسخه ۱ نقطه اتصال ۲.۰» در دستگاه‌های Nexus 6 و Nexus 9 پشتیبانی می‌کند. برای آماده‌سازی اطلاعات اعتباری «نقطه اتصال ۲.۰» در برنامه‌تان، از روش‌های جدید کلاس WifiEnterpriseConfig، مثل setPlmn() و setRealm() استفاده کنید. در شیء WifiConfiguration، می‌توانید فیلدهای FQDN و providerFriendlyName را تنظیم کنید. روش جدید isPasspointNetwork() نشان می‌دهد که آیا شبکه شناسایی‌شده نشان‌دهنده نقطه دسترسی Hotspot 2.0 است یا نه.

حالت نمایش 4K

اکنون پلاتفرم به برنامه‌ها اجازه می‌دهد درخواست کنند وضوح نمایشگر در سخت‌افزارهای سازگار به پردازش 4K ارتقا یابد. برای پُرسمان کردن وضوح فیزیکی فعلی، از Display.Mode API جدید استفاده کنید. اگر میانای کاربری در وضوح منطقی پایین‌تری طراحی شده باشد و به وضوح فیزیکی بزرگ‌تری ارتقا داده شده باشد، توجه داشته باشید که وضوح فیزیکی که روش getPhysicalWidth() برمی‌گرداند ممکن است با وضوح منطقی گزارش‌شده توسط getSize() متفاوت باشد.

می‌توانید با تنظیم کردن دارایی preferredDisplayModeId پنجره برنامه‌تان، از سیستم بخواهید که وضوح فیزیکی را در برنامه درحال اجرا تغییر دهد. اگر می‌خواهید به وضوح نمایشگر 4K بروید، این ویژگی مفید است. در حالت نمایشگر 4K، رابط کاربری همچنان با وضوح اصلی (مثلاً ۱۰۸۰ پیکسل) پردازش می‌شود و به 4K ارتقا می‌یابد، اما SurfaceView اشیا ممکن است محتوا را با وضوح بومی نمایش دهند.

فهرست‌های وضعیت رنگ زمینه‌ای

اکنون ویژگی‌های زمینه در ColorStateList برای دستگاه‌های دارای Android 6.0 (سطح میانای برنامه‌سازی کاربردی ۲۳) پشتیبانی می‌شود. روش‌های Resources.getColorStateList() و Resources.getColor() منسوخ شده‌اند. اگر این میاناهای برنامه‌سازی کاربردی را فراخوانی می‌کنید، به‌جای آن Context.getColorStateList() یا Context.getColor() روش‌های جدید را فراخوانی کنید. این روش‌ها همچنین در کتابخانه v4 appcompat ازطریق ContextCompat دردسترس است.

ویژگی‌های صوتی

این نسخه پخش بهبودهایی به پردازش صوتی در Android اضافه می‌کند، ازجمله:

  • پشتیبانی از پروتکل MIDI با میاناهای برنامه‌سازی کاربردی جدید android.media.midi. از این میاناهای برنامه‌سازی کاربردی برای ارسال و دریافت رویدادهای MIDI استفاده کنید.
  • کلاس‌های جدید AudioRecord.Builder و AudioTrack.Builder برای ایجاد اشیای ضبط و بازپخش صدای دیجیتال به‌ترتیب، و پیکربندی ویژگی‌های منبع و مقصد صدا برای ملغی کردن پیش‌فرض‌های سیستم.
  • قلاب‌های API برای مرتبط کردن دستگاه‌های صوتی و ورودی. این ویژگی به‌ویژه زمانی مفید است که برنامه شما به کاربران اجازه دهد جستجوی صوتی را از کنترل‌کننده بازی یا کنترل از راه دور متصل به Android TV شروع کنند. وقتی کاربر جستجویی را شروع می‌کند، سیستم onSearchRequested() کاربر جدید را فرا می‌خواند. برای تعیین اینکه دستگاه ورودی کاربر میکروفون داخلی دارد یا نه، شیء InputDevice را از آن برگشت‌پذیر بازیابی کنید، سپس روش جدید hasMicrophone() را فراخوانی کنید.
  • روش جدید getDevices() که به شما امکان می‌دهد فهرستی از همه دستگاه‌های صوتی متصل به سیستم را بازیابی کنید. همچنین می‌توانید AudioDeviceCallback شیئی را ثبت کنید اگر می‌خواهید سیستم وقتی دستگاه صوتی وصل یا قطع می‌شود به برنامه‌تان اطلاع دهد.

ویژگی‌های ویدیو

این نسخه قابلیت‌های جدیدی به «میاناهای برنامه‌سازی کاربردی» پردازش ویدیو اضافه می‌کند، ازجمله:

  • کلاس جدید MediaSync که به برنامه‌ها کمک می‌کند تا جاری‌سازی‌های صوتی و تصویری را به‌صورت هم‌زمان پردازش کنند. میان‌گیرهای صوتی به‌صورت غیرمسدودکننده ارسال می‌شوند و ازطریق یک فراخوانی برگشتی برگردانده می‌شوند. همچنین از نرخ بازپخش پویا پشتیبانی می‌کند.
  • رویداد جدید EVENT_SESSION_RECLAIMED، که نشان می‌دهد مدیر منابع جلسه بازشده توسط برنامه را پس گرفته است. اگر برنامه شما از جلسات DRM استفاده می‌کند، باید این رویداد را مدیریت کنید و مطمئن شوید که از جلسه بازپس‌گرفته‌شده استفاده نمی‌کنید.
  • کد خطای جدید ERROR_RECLAIMED که نشان می‌دهد مدیر منابع منبع رسانه‌ای استفاده‌شده توسط کدک را پس گرفته است. با این استثنا، کدک باید آزاد شود، زیرا به حالت پایانی منتقل شده است.
  • واسط getMaxSupportedInstances() جدید برای دریافت راهنمایی درباره حداکثر تعداد نمونه‌های هم‌زمان کدک پشتیبانی‌شده.
  • روش جدید setPlaybackParams() برای تنظیم نرخ بازپخش رسانه برای بازپخش سریع یا آهسته. همچنین به‌طور خودکار پخش صدا را در ارتباط با ویدیو کشیده یا سرعت می‌بخشد.

ویژگی‌های دوربین

این نسخه شامل «میاناهای برنامه‌سازی کاربردی» جدید زیر برای دسترسی به چراغ قوه دوربین و برای پردازش مجدد تصاویر دوربین است:

Flashlight API

اگر دستگاه دوربین واحد فلاش داشته باشد، می‌توانید setTorchMode() روش را برای روشن یا خاموش کردن حالت چراغ‌قوه واحد فلاش بدون باز کردن دستگاه دوربین فراخوانی کنید. برنامه مالکیت انحصاری واحد فلاش یا دستگاه دوربین را ندارد. هرگاه دستگاه دوربین دردسترس نباشد یا منابع دوربین دیگری که چراغ قوه را روشن نگه می‌دارند دردسترس نباشند، حالت چراغ قوه خاموش می‌شود و دیگر دردسترس نخواهد بود. برنامه‌های دیگر نیز می‌توانند setTorchMode() را برای خاموش کردن حالت چراغ قوه فراخوانی کنند. وقتی آخرین برنامه‌ای که حالت چراغ قوه را روشن کرده است بسته شود، حالت چراغ قوه خاموش می‌شود.

می‌توانید با فراخوانی روش registerTorchCallback() ، یک تماس برگشتی ثبت کنید تا درباره وضعیت حالت چراغ قوه مطلع شوید. اولین‌بار که تماس برگشتی ثبت می‌شود، بلافاصله با وضعیت حالت چراغ قوه همه دستگاه‌های دوربین دارای واحد فلاش که درحال‌حاضر شناخته شده‌اند تماس گرفته می‌شود. اگر حالت چراغ قوه باموفقیت روشن یا خاموش شود، روش onTorchModeChanged() فراخوانی می‌شود.

Reprocessing API

«میانای برنامه‌سازی کاربردی» Camera2 برای پشتیبانی از پردازش مجدد تصویر با قالب‌های YUV و خصوصی مات گسترش یافته است. برای تعیین اینکه آیا این قابلیت‌های پردازش مجدد دردسترس است، با getCameraCharacteristics() تماس بگیرید و کلید REPROCESS_MAX_CAPTURE_STALL را بررسی کنید. اگر دستگاهی از پردازش مجدد پشتیبانی کند، می‌توانید با فراخوانی createReprocessableCaptureSession() و ایجاد درخواست برای پردازش مجدد بافر ورودی، جلسه ضبط دوربین قابل‌پردازش مجدد ایجاد کنید.

از کلاس ImageWriter برای متصل کردن جریان بافر ورودی به ورودی پردازش مجدد دوربین استفاده کنید. برای دریافت یک بافر خالی، این مدل برنامه‌نویسی را دنبال کنید:

  1. روش dequeueInputImage() را فراخوانی کنید.
  2. داده‌ها را در میان‌گیر ورودی پر کنید.
  3. با فراخوانی روش queueInputImage()، بافر را به دوربین ارسال کنید.

اگر از شیء ImageWriter همراه با تصویر PRIVATE استفاده می‌کنید، برنامه شما نمی‌تواند مستقیماً به داده‌های تصویر دسترسی داشته باشد. به‌جای آن، تصویر PRIVATE را مستقیماً با فراخوانی روش queueInputImage() بدون هیچ‌گونه کپی بافر به ImageWriter منتقل کنید.

اکنون کلاس ImageReader از جاری‌سازی تصویر با قالب PRIVATE پشتیبانی می‌کند. این پشتیبانی به برنامه شما امکان می‌دهد صف تصویر دایره‌ای از ImageReader تصویر برونداد را حفظ کند، یک یا چند تصویر را انتخاب کند، و آن‌ها را برای پردازش مجدد دوربین به ImageWriter ارسال کند.

ویژگی‌های Android for Work

این نسخه شامل «میاناهای برنامه‌سازی کاربردی» جدید زیر برای Android for Work است:

  • کنترل‌های بهبودیافته برای دستگاه‌های «شرکتی، تک‌کاربردی»: «مالک دستگاه» اکنون می‌تواند تنظیمات زیر را برای بهبود مدیریت دستگاه‌های «شرکتی، تک‌کاربردی» (COSU) کنترل کند:
    • محافظ صفحه‌کلید را با روش setKeyguardDisabled() غیرفعال یا دوباره فعال کنید.
    • نوار وضعیت (ازجمله تنظیمات فوری، اعلان‌ها، و اشاره تند به بالا برای راه‌اندازی Google Now) را با setStatusBarDisabled() روش غیرفعال یا دوباره فعال کنید.
    • راه‌اندازی ایمن را با ثابت UserManager DISALLOW_SAFE_BOOT غیرفعال یا بازفعال کنید.
    • بااستفاده از STAY_ON_WHILE_PLUGGED_IN ثابت، از خاموش شدن صفحه‌نمایش درحین اتصال به پریز جلوگیری کنید.
  • نصب و حذف نصب بی‌صدای برنامه‌ها توسط «مالک دستگاه»: «مالک دستگاه» اکنون می‌تواند بااستفاده از PackageInstaller میاناهای برنامه‌سازی کاربردی، برنامه‌ها را به‌صورت بی‌صدا نصب و حذف نصب کند، بدون اینکه به Google Play ویژه کار وابسته باشد. اکنون می‌توانید دستگاه‌ها را ازطریق «مالک دستگاه» آماده کنید که برنامه‌ها را بدون تعامل کاربر واکشی و نصب می‌کند. این ویژگی برای فعال کردن آماده‌سازی با یک لمس برای کیوسک‌ها یا دستگاه‌های مشابه دیگر بدون فعال کردن حساب Google مفید است.
  • دسترسی بی‌صدای گواهینامه سازمانی: وقتی برنامه‌ای choosePrivateKeyAlias() را فرا می‌خواند، قبل‌از اینکه از کاربر خواسته شود گواهینامه‌ای را انتخاب کند، «مالک نمایه» یا «مالک دستگاه» اکنون می‌تواند روش onChoosePrivateKeyAlias() را فرا بخواند تا نام مستعار را بی‌صدا به برنامه درخواست‌کننده ارائه دهد. این ویژگی به شما امکان می‌دهد بدون تعامل کاربر به برنامه‌های مدیریت‌شده اجازه دهید به گواهینامه‌ها دسترسی داشته باشند.
  • پذیرش خودکار به‌روزرسانی‌های سیستم. با تنظیم خط‌مشی به‌روزرسانی سیستم با setSystemUpdatePolicy()، «مالک دستگاه» اکنون می‌تواند به‌روزرسانی سیستم را به‌طور خودکار بپذیرد، برای مثال در مورد دستگاه کیوسک، یا به‌روزرسانی را به‌تعویق بیندازد و از انجام آن توسط کاربر تا ۳۰ روز جلوگیری کند. علاوه‌براین، سرپرست می‌تواند بازه زمانی روزانه‌ای را تنظیم کند که در آن به‌روزرسانی باید انجام شود، برای مثال در ساعاتی که از دستگاه کیوسک استفاده نمی‌شود. وقتی به‌روزرسانی سیستم دردسترس باشد، سیستم بررسی می‌کند که آیا برنامه کنترل‌کننده خط‌مشی دستگاه خط‌مشی به‌روزرسانی سیستم را تنظیم کرده است یا نه و براساس آن عمل می‌کند.
  • نصب گواهینامه واگذارشده: «مالک نمایه» یا «مالک دستگاه» اکنون می‌تواند به برنامه طرف سوم اجازه دهد این DevicePolicyManager میاناهای برنامه‌سازی کاربردی مدیریت گواهینامه را فراخوانی کند:
  • تلفن همراهی که ویژگی اعلان وضعیت کار را در Android for Work نمایش می‌دهد
  • ردیابی مصرف داده. «مالک دستگاه» یا «نمایه» اکنون می‌تواند بااستفاده از روش‌های جدید NetworkStatsManager، آمار استفاده از داده را که در تنظیمات > استفاده از داده قابل‌مشاهده است پُرسمان کند. «مالکان نمایه» به‌طور خودکار اجازه دارند داده‌های نمایه‌ای را که مدیریت می‌کنند پُرسمان کنند، درحالی‌که «مالکان دستگاه» به داده‌های استفاده کاربر اصلی مدیریت‌شده دسترسی دارند.
  • مدیریت اجازه زمان اجرا:

    «مالک نمایه» یا «مالک دستگاه» می‌تواند خط‌مشی اجازه‌ای برای همه درخواست‌های زمان اجرای همه برنامه‌ها بااستفاده از setPermissionPolicy() تنظیم کند تا یا از کاربر بخواهد اجازه را اعطا کند یا اجازه را به‌طور خودکار و بی‌صدا اعطا یا رد کند. اگر خط‌مشی دوم تنظیم شده باشد، کاربر نمی‌تواند انتخاب انجام‌شده توسط «مالک نمایه» یا «مالک دستگاه» را در صفحه اجازه‌های برنامه در تنظیمات تغییر دهد.

  • وی‌پی‌ان در «تنظیمات»: برنامه‌های وی‌پی‌ان اکنون در تنظیمات > بیشتر > وی‌پی‌ان قابل‌مشاهده است. علاوه‌براین، اعلان‌هایی که همراه با استفاده از وی‌پی‌ان ارائه می‌شود اکنون مختص نحوه پیکربندی آن وی‌پی‌ان است. برای «مالک نمایه»، اعلان‌ها مربوط به این است که آیا VPN برای نمایه مدیریت‌شده، نمایه شخصی، یا هر دو پیکربندی شده است یا نه. برای «مالک دستگاه»، اعلان‌ها مربوط به این است که آیا وی‌پی‌ان برای کل دستگاه پیکربندی شده است یا نه.
  • اعلان وضعیت کاری: اکنون هرگاه برنامه‌ای از نمایه مدیریت‌شده فعالیتی در پیش‌زمینه داشته باشد، نماد کیف اسناد در نوار وضعیت نشان داده می‌شود. علاوه‌براین، اگر قفل دستگاه مستقیماً برای فعالیت برنامه‌ای در نمایه مدیریت‌شده باز شود، پیامکی نمایش داده می‌شود که به کاربر اطلاع می‌دهد در نمایه کاری است.