API های اندروید 6.0

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

شروع به توسعه کنید

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

سطح API هدف خود را به روز کنید

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

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

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

احراز هویت اثر انگشت

این نسخه API های جدیدی را ارائه می دهد تا به شما امکان می دهد با استفاده از اسکن اثر انگشت کاربران در دستگاه های پشتیبانی شده، احراز هویت کاربران را تأیید کنید، از این API ها در ارتباط با سیستم Android Keystore استفاده کنید.

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

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

<uses-permission
        android:name="android.permission.USE_FINGERPRINT" />
موبایلی که قابلیت احراز هویت اثر انگشت را نشان می دهد

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

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

  1. اگر این کار را انجام نداده اید، نسخه 24.3 ابزار اندروید SDK را نصب کنید.
  2. با رفتن به Settings > Security > Fingerprint، یک اثر انگشت جدید را در شبیه ساز ثبت کنید، سپس دستورالعمل های ثبت نام را دنبال کنید.
  3. از یک شبیه ساز برای شبیه سازی رویدادهای لمس اثر انگشت با دستور زیر استفاده کنید. از همین فرمان برای شبیه سازی رویدادهای لمس اثر انگشت در صفحه قفل یا در برنامه خود استفاده کنید.
    adb -e emu finger touch <finger_id>
    

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

تایید اعتبار

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

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

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

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

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

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

اکنون سیستم پشتیبان‌گیری و بازیابی کامل اطلاعات را برای برنامه‌ها انجام می‌دهد. برای فعال کردن این رفتار، برنامه شما باید Android 6.0 (سطح API 23) را هدف قرار دهد. شما نیازی به اضافه کردن کد اضافی ندارید. اگر کاربران حساب های گوگل خود را حذف کنند، اطلاعات پشتیبان آنها نیز حذف می شود. برای آشنایی با نحوه عملکرد این ویژگی و نحوه پیکربندی مواردی که در سیستم فایل پشتیبان‌گیری شود، به پیکربندی پشتیبان‌گیری خودکار برای برنامه‌ها مراجعه کنید.

اشتراک گذاری مستقیم

قسمت پایین یک موبایل که قابلیت اشتراک گذاری مستقیم را نشان می دهد

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

برای فعال کردن اهداف اشتراک مستقیم، باید کلاسی را تعریف کنید که کلاس 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>

تعاملات صوتی

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

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

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

Assist API

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

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

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

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

دستگاه های ذخیره سازی قابل پذیرش

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

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

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

$ 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 (سطح API 23) را هدف قرار می‌دهند، وقتی کاربر دکمه قلم اصلی را فشار می‌دهد، روش getButtonState() BUTTON_STYLUS_PRIMARY را برمی‌گرداند. اگر قلم دکمه دومی داشته باشد، وقتی کاربر آن را فشار می‌دهد، همان روش BUTTON_STYLUS_SECONDARY را برمی‌گرداند. اگر کاربر هر دو دکمه را به طور همزمان فشار دهد، روش هر دو مقدار یا با هم ( BUTTON_STYLUS_PRIMARY | BUTTON_STYLUS_SECONDARY ) را برمی گرداند.
  • برای برنامه‌هایی که نسخه پلتفرم پایین‌تری را هدف قرار می‌دهند، روش getButtonState() BUTTON_SECONDARY (برای فشار دادن دکمه قلم اصلی)، BUTTON_TERTIARY (برای فشار دادن دکمه قلم ثانویه)، یا هر دو را برمی‌گرداند.

اسکن کم انرژی بلوتوث بهبود یافته است

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

پشتیبانی Hotspot 2.0 Release 1

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

حالت نمایش 4K

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

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

ColorStateLists قابل تم

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

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

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

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

ویژگی های ویدئو

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

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

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

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

Flashlight API

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

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

API پردازش مجدد

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

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

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

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

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

ویژگی های Android for Work

این نسخه شامل APIهای جدید زیر برای Android for Work است:

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

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

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