مهندس روابط توسعهدهنده
راهاندازی Googlebook مرز جدیدی را برای تجربههای با کیفیت بالا و در سطح رایانه باز میکند. در این جلسه، با دو شریک پیشگام که از ابتدا برای این پلتفرم ساختهاند، به پشت صحنه میرویم.
Notability سفر خود را در ایجاد یک برنامه Android کلاس رایانه بااستفاده از Jetpack Compose به اشتراک خواهد گذاشت. با سفر آنها در انتقال از پلاتفرمهای دیگر برنامه با اولویت اول رایانه آشنا شوید. سپس، Logitech به بخش سختافزار میپردازد و درباره نحوه ساخت و سفارشیسازی لوازم جانبی برای ادغام یکپارچه با Googlebook صحبت میکند. به این جلسه بپیوندید تا بینشهای کاربردی و واقعی درباره بهینهسازی ورودیها، بهرهبرداری از میاناهای برنامهسازی کاربردی صفحهنمایش بزرگ، و ارائه تجربه کاربری ممتاز و منسجم در سختافزار و نرمافزار کسب کنید.
آوانویسی
سلام، من امیلی رابرتز هستم، مدافع توسعهدهندگان که حدود نه سال است با برنامههای Android در رایانههای کیفی کار میکنم.
و Googlebook راهاندازی شد.
هورا!
من و من فوقالعاده هستم فکر میکنم نوآوریای که به فضای رایانه کیفی میآوریم بسیار جالب است.
و بسیار خوشحالم که در اینجا با دو توسعهدهنده روی صحنه هستم که واقعاً روی عالی بهنظر رسیدن برنامههایشان در Googlebook سرمایهگذاری کردهاند.
سلام.
من رایان از Notability هستم.
من مدیر Android هستم و این برنامه دفترچه یادداشت دیجیتالی است که بهتازگی در Android راهاندازی کردهایم.
این ویژگی در iOS، رایانه، و اکنون Googlebooks نیز دردسترس است.
سلام.
من جو از Logitech هستم و ما بهخاطر سختافزارها و لوازم جانبی عالیمان شناخته شدهایم.
و درباره اینکه چگونه آنها را به پلاتفرمهای جدید آوردیم صحبت خواهم کرد.
میخواهم آنها را هل دهم.
و بنابراین، Googlebooks اینجا است.
هورا!
هورا!
هورا!
امیدوارم فرصت کرده باشید آنها را امتحان کنید، چه خودتان یا با رفتن به یک طبقه بالاتر یا پایینتر در غرفه نمایشی.
و البته فراموش نکنید که ظاهر برنامهتان را در آنها بررسی کنید.
میخواهم سخنرانی همیشگیام را ارائه دهم که بومسازگان Android درحال رشد است.
من نه سال است که این را میگویم و هنوز هم درست است.
و برنامهها باید تکامل یابند تا مطمئن شوید که نیازهای کاربران خود را در تمام نیازها در تمام اندازههای صفحه نمایش و دستگاهها برآورده میکنید.
داشتن چیدمان برنامهای که عملکرد و رفتار خوبی داشته باشد، در این مرحله یک روال استاندارد است.
و بهترین راه برای انجام این کار استفاده از Jetpack Compose و Navigation 3 است.
و ورودی، همان چیز است.
باید کار کند.
و البته، معماری و مدیریت وضعیت برنامههای شما همگی بخشی از چیدمان و ورودیها هستند.
و در ADS گفتگوهای زیادی درباره نحوه انجام این کار با جدیدترین ابزارها و روالهای مطلوب داریم.
بااینحال، امروز فکر کردیم فرصت خوبی است تا کمی فضا برای توسعهدهندگانی که از همان ابتدا برای Googlebook ساختهاند ایجاد کنیم و داستان آنها را بشنویم.
Notability یک برنامه یادداشتبرداری فوقالعاده است که از ابتدا برای Googlebook ساخته شده است.
و Logitech نهتنها برای اطمینان از کارکرد صفحهکلیدها و موشوارهها و سایر لوازم جانبی آنها تلاش کرد، بلکه برای عملکرد فوقالعاده آنها در Googlebooks، ازجمله سفارشیسازی کاربر، نیز تلاش کرد.
متأسفم که کمی از توجه را از شما میدزدم، جو، اما به جزئیات خواهیم پرداخت.
بنابراین، همین برای من کافی است.
متأسفم، اینبار رپ نمیخوانم.
و قطعاً دیگر از سبک آزاد خبری نیست.
بههرحال، ما بسیار هیجانزده هستیم که Notability را در Googlebooks داریم، بنابراین من این کلیکر را به رایان میدهم.
سپاسگزاریم.
عالی.
خیلی ممنون، اِم.
و ما بسیار هیجانزده هستیم که در Googlebooks هستیم.
Notability جایی است که میلیونها دانشآموز درحالحاضر در آن یاد میگیرند و متخصصان یادداشتبرداری میکنند.
همانطور که قبلاً اشاره کردم، اکنون در Android دردسترس است و میخواهم بهطور خلاصه درباره نحوه ساخت آن و اینکه چگونه ساختن برای Android بهطور صحیح درواقع از همان ابتدا بسیار نزدیک به Googlebooks بهطور بهینه ساخته میشود، صحبت کنم.
برای شروع، وقتی حدود دو سال پیش این پروژه را شروع کردیم، واقعاً میخواستیم مطمئن شویم که فقط برنامه iOS خود را منتقل نمیکنیم و آن را به کاربران تحویل نمیدهیم و نمیگوییم که این کافی است.
ما چیزی میخواستیم که واقعاً با انتظارات کاربر همخوانی داشته باشد، اما همچنان برابری کامل ویژگیها را ارائه دهد.
برای رسیدن به این هدف، از «طراحی مواد» و مؤلفههای آن استفاده کردیم تا همه صفحهها را از پایه سفارشیسازی کنیم.
و مطمئن شدیم که از Jetpack Compose استفاده میکنیم.
برنامه Android بومی که کاملاً بر Jetpack Compose مبتنی است به ما امکان میدهد از طیف کاملی از سختافزارها پشتیبانی کنیم، نه فقط تلفنهای کوچک و دستگاههای ردهپایین، بلکه رایانههای لوحی قدرتمند و ردهبالا با صفحهنمایشهای بزرگ، رایانهها، واقعیت گسترده، خودروها، و هر چیز دیگری در این میان.
Jetpack Compose پشتیبانی از این موارد را بهصورت بومی بسیار آسان میکند، بدون اینکه نیاز باشد ویژگیهای اضافی زیادی در میاناهای کاربر ساخته شود.
بنابراین، به Notability میرویم.
همه چیز در Notability براساس Jetpack Compose ساخته شده است.
رابط کاربری در سراسر پلاتفرم یکسان است و اساساً یکبار ساخته شده است و هیچ تغییر واقعی بین آنچه در تلفن نشان داده میشود و آنچه درنهایت در دستگاههای بزرگتر مانند رایانه لوحی و Googlebook نشان داده میشود وجود ندارد.
برای انجام این کار، Navigation 3 قفل بزرگی را برای ما باز میکند.
نحوه عملکرد Navigation 3 در Google که در Notability تعبیه شده است به این صورت است که براساس اندازه صفحهنمایش، میتوانیم چیدمان را سفارشیسازی کنیم بدون اینکه این ویژگی نگران نحوه ارائه آن باشد.
در این نسخه نمایشی، میتوانید ببینید که اگر چیزی فضایی برای باز شدن پانل کناری داشته باشد، باز خواهد شد.
اما اگر اینطور نباشد، بهصورت برگهای در پایین صفحه بالا میآید.
خب، این در کد چطور بهنظر میرسد؟
در کدی که اینجا داریم، میتوانید ببینید که یک نقطه ورود برای پانل خلاصه واقعی در کنار وجود دارد و ما آن را به پشته قبلیها اضافه میکنیم.
سپس، استراتژی صحنه سفارشی ما میرود و چیدمانی را برای آن پانل کناری انتخاب میکند، بسته به اینکه فضا وجود دارد یا نه.
بنابراین در رایانه لوحی یا دستگاه Googlebook، فضای دردسترس را پیدا میکند و فضا ایجاد میکند و آن پانل را از سمت راست میلغزاند.
اما در دستگاههایی مثل تلفن یا شاید دستگاه تاشو، ممکن است فضای کافی برای نمایش درست آن پانل وجود نداشته باشد، بنابراین بهجای آن، پانل بهصورت برگه پایین بالا میآید.
چون Notability با اندازه پنجره سازگار میشود و نگران نوع دستگاه نیست (تلفن، Googlebook، رایانه لوحی، دستگاه تاشو، یا هر چیز دیگری)، واسط کاربر ما خیلی راحت بهطور خودکار با نیازهای کاربران سازگار میشود.
در اینجا میتوانید ببینید که در تلفن، همه دکمهها و ابزارها بهگونهای جابهجا میشوند که بهراحتی در دسترس انگشت شست قرار بگیرند.
در رایانه لوحی، پانلهای پیمایش را در کنار محتوای اصلی نمایش میدهیم چون فضای بیشتری دارید و تعامل با صفحهنمایشها آسانتر است.
در دستگاههای تاشو، از قابلیت تاشوندگی برای ارائه چیدمانها و واسطهای کاربری منحصربهفرد برای مواردی مانند آزمون مطالعه استفاده میکنیم، جایی که کاربران میتوانند پاسخهای خود را در نیمه پایینی و پیشرفت واقعی آزمون را در نیمه بالایی داشته باشند.
و درنهایت، اکنون در Googlebook، تغییر اندازه پنجره بهصورت روان انجام میشود.
بنابراین، درست مانند هر برنامه پنجرهای معمولی دیگری در رایانه، Notability با تغییر اندازه پنجره برای هر نیاز کنارهمی که داشته باشید، سازگار میشود.
وقتی داشتیم «رابط کاربری تطبیقی» را میساختیم، همانطور که گفتم، این رابط کاربری تقریباً برای کل تجربه کامل میزکار در Googlebooks کار میکند.
این کار شما را خیلی نزدیک میکند.
اما اگر تجربهای در سطح رایانه میخواهید، چیزی که واقعاً بینظیر باشد، چند کار را توصیه میکنیم انجام دهید.
ابتدا، صفحهکلید را در اولویت قرار دهید.
کاربران به اندازه زمانی که از رایانه لوحی یا تلفن معمولی استفاده میکنند به لمس حساس نخواهند بود و داشتن میانبرهای صفحهکلید و روشی آسان برای دسترسی به فهرست میانبرهای Android بسیار مهم است.
سپس، گاهی اوقات میتوانید ویژگیهایتان را بهگونهای طراحی کنید که بسته به نوع دستگاه و لوازم جانبی ورودی دردسترس، چیدمان متفاوتی داشته باشند.
وقتی چیزی مثل رایانه کیفی، بله، رایانه کیفی با صفحهکلید متصل یا موشواره را شناسایی میکنیم، درواقع میانای کاربر کمی متفاوتی در صفحه اصلی ارائه میدهیم تا کاربران به ابزارهایی هدایت شوند که فکر میکنیم این نوع کاربران به چیزی مثل رایانه لوحی ترجیح میدهند، جایی که قلم و یادداشتهای خودکار با قلم دستنویس گزینه اصلی خواهد بود.
موضوع دیگری که باید به آن فکر کنید این است که چگونه چندین دستگاه مختلف با یکدیگر تعامل دارند.
بنابراین، «ادامه دادن در» ویژگی جدیدی در Android 17 است که به شما امکان میدهد برنامهتان را بهطور یکپارچه از دستگاهی به دستگاه دیگر منتقل کنید.
بنابراین در این مثال، برای نمونه، یادداشتی را از تلفنتان به دستگاه رایانه بزرگترتان منتقل میکنیم.
این کار بهراحتی با همگامسازی سریع شناسه یادداشت و پیشرفت سریع در جایی که از نظر ما هستید انجام میشود.
بنابراین برای ما بسیار آسان است که فقط یک قصد برنامه سریع به دستگاه Googlebook ارسال کنیم و سپس دقیقاً از جایی که متوقف شدهاید ادامه دهیم.
مورد دیگری که باید برای دستگاههای کلاس رایانه درنظر گرفت، مدلهای پشتیبانی چندورودی است.
بنابراین، نهتنها چیزهایی مانند میانبرهای صفحهکلید را که قبلاً ذکر شد خواهید داشت، بلکه پدهای لمسی با انواع مختلف بزرگنمایی و رفتارهای پیمایش را نیز خواهید داشت که ممکن است قبلاً نداشتهاید.
همچنین منوهای کلیکراست خواهید داشت که ممکن است لازم باشد برای کاربرانی که قبلاً آنجا نبودهاند دردسترس قرار گیرند.
علاوهبراین، چون بسیاری از دستگاههای Googlebook هنوز دستگاههای دارای صفحه لمسی هستند، باید مطمئن شوید که وقتی کاربر با آن دستگاه تعامل میکند، تشخیص ورودی متفاوتی نه تنها برای قلم و انگشت، بلکه برای مکاننمای پد لمسی نیز داشته باشید، زیرا هر سه باید بهطور متفاوتی مدیریت شوند.
اگر به جوهر و نوشتن یادداشت علاقه دارید، مانند Notability، توصیه میکنیم از Jetpack Ink استفاده کنید.
بنابراین این چیزی است که ما برای ارائه یک سیستم ساخت با تأخیر کم برای جوهر خود استفاده میکنیم، بدون اینکه نیاز باشد یک پشته سنگین و پیچیده از رشتهها، رندرینگ، خوانندگان بافر، و چیزهای مختلفی را که کمی بعد به شما نشان خواهم داد، مدیریت کنیم.
اما اگر همین الان کار کند، درواقع، بهلطف Logitech، میتوانم یک نسخه نمایشی زنده از برنامه Notability را به شما نشان دهم.
بله، عالی است.
پس، اوه، زود باش.
بسیار خوب، عالی است.
بنابراین، این آزمایش من از قبل است.
اما همانطور که میبینید، من از انگشتم استفاده میکنم، بنابراین در اینجا هنوز ورودی انگشت را تشخیص میدهد، که عالی است.
اگر میخواستم میتوانستم از موشواره هم استفاده کنم.
اما درحالحاضر توانستهایم چند قلمموی سفارشی و انحصاری Android بسازیم.
بنابراین، همانطور که در اینجا میبینید، من این جلوه رنگینکمان و زرقوبرق را انتخاب کردهام، بنابراین ورودی یا جلوههای جوهر ما تحت تأثیر کتابخانه Jetpack کتابخانه Jetpack Ink در زیر قرار میگیرند.
بنابراین، اجازه دهید پیامم را یک بار دیگر بنویسم.
پس، سلام.
و سپس، بیایید سبز Android را برای بخش آخر در اینجا انتخاب کنیم.
لمس کردن درست آن سخت است.
بفرمایید، سبز Android.
و سپس، میتوانیم ببینیم که رنگهای واقعی بسته به اینکه کدام رنگ را بهعنوان مدل پایه خود در اینجا دارید، تغییر میکنند.
هورا، عالی است.
بنابراین، در گذشته، وقتی این نوع قلمموها را میساختیم، ممکن بود ماهها طول بکشد تا همه سایهزنهای سفارشی و رابط کاربری و همه چیز را درست کنیم و ظاهر خوبی به آنها بدهیم.
اکنون، خوشبختانه، بهلطف Jetpack Ink، با هوش مصنوعی و قلمموساز سفارشی آنها، این زمان میتواند به کمتر از یک هفته کاهش یابد.
بنابراین اگر در بازار بهدنبال هر نوع جوهرکاری هستید، به آنها اطلاع دهید.
این میانای برنامهسازی کاربردی عالی است و در زمان ما بسیار صرفهجویی کرد.
عالی.
و همانطور که قبلاً اشاره کردم، این چیزی است که به نظر میرسد.
بنابراین ما چیزی داریم که به آن لایه جوهر خیس میگویند.
این جوهر ما است که درحال پیشرفت است، هنوز درحال کشیده شدن است، باید بسیار بسیار پاسخگو باشد، میدانید، درمقابل یک لایه جوهر خشک.
این از یک چیز فیزیکی منطقی است، میتوانید به آن فکر کنید.
این جوهر ذخیرهشده است، قبلاً تمام شده است.
بنابراین، قبلاً انتقال کاملاً برعهده ما بود.
بنابراین ما مجبور بودیم این رشتهبندی را انجام دهیم، مجبور بودیم دوباره ترسیم و تمیز کنیم، باید آن را به یک لایه خشک تحویل میدادیم و مطمئن میشدیم که آنها همگامسازی شدهاند و سوسو نمیزنند، و همه این پیچیدگیها وجود داشت.
و درنهایت، باید چیزی را که Notability را منحصربهفرد میکند اعمال میکردیم، درست است؟
ما مدلهای برازش منحنی خودمان را داریم، روشهایی داریم که واقعاً دستخط شما را برجسته میکند.
بنابراین، میدانید، این مدل قدیمی بود.
بهلطف Jetpack Ink، تنها کاری که باید انجام دهیم این است که منحنی خود را در نمای شکلهای پیشرفت سفارشی آنها قرار دهیم و همه چیز بلافاصله در Android بهطور جادویی برای ما کار میکند.
موضوع دیگری که در بحث درباره Jetpack Ink و دیگر کتابخانههای Google به آن فکر میکنیم KMP است.
بنابراین، این درواقع چیزی است که ما با نگاه کردن به کد iOS که قبلاً ساخته شده بود شروع کردیم و با خود فکر کردیم: «بسیار خوب، ما میخواهیم برخیاز منطقها را بین Android و iOS بهاشتراک بگذاریم.
ما مدلها را داریم، تغییرات را داریم، ریاضیات پیچیده را داریم.
منطقی است که همرسانی شود.»
و فکر کردیم، «هی، C++، میدانید، Objective-C از Apple، بیایید آن مسیر را برویم.»
معلوم شد که Kotlin Multiplatform نهتنها برای مهندسان iOS ما آسانتر بود، بلکه درواقع سریعتر هم بود.
بنابراین، نهتنها بااستفاده از Kotlin عملکرد بهتری داشتیم و توانستیم بخش زیادی از کد Android را کپی کنیم، بلکه در درازمدت برای iOS هم آسانتر بود.
بنابراین اگر بهدنبال همرسانی کد هستید، توصیه میکنم Kotlin Multiplatform را بررسی کنید.
درحالحاضر، هنوز درحال ارزیابی آن هستیم.
میدانید، هنوز ۱۰۰٪ پشتیبانی نمیشود یا چیزی شبیه به این، چون همانطور که میدانید، مدلهای مختلف هوش مصنوعی اکنون تقلب را کمی آسانتر میکنند، فقط با داشتن کدی که در چندین مکان وجود دارد، اما این هنوز چیزی است که ما بهطور فعال درحال بررسی آن هستیم و من واقعاً نظر بسیار مثبتی درباره آن دارم.
بسیار خوب، حالا نوبت به فوت کوزهگری Notability میرسد.
بنابراین، اگر بخواهید یک ویرایشگر نوشتار کاربردی در Android بسازید، متوجه میشوید که درحالحاضر واقعاً راه خوبی برای ساختن یک ویرایشگر نوشتار برای اسناد بزرگ و عظیم وجود ندارد.
The basic Android, you know, edit input fields are all about smaller little UIs, little EditTexts, little short-form things.
چیزی که درنهایت مجبور شدیم بسازیم این سیستم بسیار پیچیده بود که اساساً روی میاناهای برنامهسازی کاربردی Android موجود قرار دارد، اما میتواند اسناد بسیار بسیار بزرگتر، مثلاً هزاران صفحه نوشتار را بهطور همزمان مدیریت کند، که میتوانند بهطور مشترک ویرایش شوند، بنابراین میتوانید کاربری در جای دیگری داشته باشید که ۵۰۰ صفحه دورتر از شما را ویرایش میکند، که باعث تغییراتی میشود که بر کار شما درحال انجام تأثیر میگذارد.
و راهی که برای انجام این کار پیدا کردیم اساساً این است که ضربهکلیدهای ما دو مسیر را طی میکنند.
بنابراین اولین مسیر این است که، هی، این بهترین تلاش ما است، این کلید باید، میدانید، اینجا ظاهر شود.
براساس آنچه درحالحاضر میتوانیم از ظاهر زیرین بگوییم، فکر میکنیم این خوب است.
و سپس همگامسازی سریع انجام میدهیم، درست است؟
ما به بخش پشتیبانی میرویم، همکارانمان را بررسی میکنیم، میگوییم، «سلام، همه چیز خوب است؟
آیا این منطقی است؟
همه چیز خوب است؟»
و اگر چیزی باید تغییر کند، در آن نقطه دوباره تنظیم میشود.
میتوانید تصور کنید که اگر دو کاربر در یک خط درحال فشردن کلیدها باشند، کمی درهموبرهم میشود که چه کسی چه چیزی را دریافت میکند.
اما در بیشتر موارد، این ویژگی واقعاً خوب کار میکند.
دلیل اینکه اینجا به آن اشاره میکنم این است که این کار بسیار بزرگی است که ما انجام دادهایم و درحال بررسی هستیم که آن را متنباز کنیم.
بنابراین اگر کسی در این کنفرانس یا در آینده بهصورت آنلاین مایل به همکاری در این زمینه است و فکر میکند این ایده خوبی است، به ما اطلاع دهد.
ما درحال بحث هستیم که آیا واقعاً ارزش تلاش برای سرمایهگذاری در آن را دارد یا نه، اما میدانید، این یک تعهد بزرگ از جانب ما بوده است و ما به نتایج آن بسیار افتخار میکنیم.
بسیارخوب، و این هم نحوه کار جوهر است.
بنابراین، از نظر مدل همکاری، این کمی مستقیمتر است که چگونه در پایان ما کار میکند.
بنابراین همانطور که در اینجا میبینید، سه مرحله وجود دارد.
یک نقطه تماس وجود دارد که در آن میگوییم: «سلام، راستی، ما داریم یک رویداد جوهر را شروع میکنیم» به هرکدام از دستگاههای متصلشدهمان، که در این مورد، یک iPad است.
سپس طراحی واقعی وجود دارد، بنابراین بسته به اینکه کاربر چه مدت دستگاه خود را نگه میدارد، میدانید، قلم آنها میچرخد، میتواند یک تا میلیونها مورد از اینها وجود داشته باشد.
امیدوارم خیلی خیلی طولانی نباشد.
فکر میکنم در نقطهای محدودیتی وجود دارد، اما، میدانید، برای موارد استفاده عادی، بسیار خوب است.
و سپس رویداد بلند کردن رخ میدهد.
و بنابراین روشی که ما آن را مدیریت میکنیم این است که درواقع یک شیء گذرا داریم که آن را در مدل خود نگه میداریم.
بنابراین، در iPad میگوییم: «بسیار خوب، یک ضربه قلم درحال وارد شدن است، اما هنوز اینجا نیست.
نمیتوانیم با آن تعامل کنیم.
این زودگذر است.»
و فقط وقتی آن رویداد پایانی راهاندازی میشود، ما واقعاً وارد میشویم و میگوییم: «بسیار خوب، عالی است.
اکنون کل آن را با یک شیء جایگزین کنید که iOS یا هر مشتری دیگری بتواند آن را بگیرد و با آن تعامل داشته باشد.»
و این هم چیزی است که داریم با آن بازی میکنیم تا کمی متنباز شود.
این، میدانید، جوهر مستقیم ما نیست، بلکه برخی از چیزهای گذرا است، بهویژه در لایه نوشتار.
عالی.
و بعد، بله.
بنابراین برخی چیزهای دیگر که توصیه میکنیم استفاده کنید.
هوشواره دروندستگاهی عالی است.
از آن برای اسکن اسناد استفاده میکنیم، بنابراین میتوانید اسناد را اسکن کنید، میتوانید نوشتارهای PDF را تجزیهوتحلیل کنید، میتوانید برخیاز تشخیصهای دستنویس را انجام دهید.
ما همچنین از مدلهای هوش مصنوعی ابری باز مانند Gemini برای کمک به تولید «یادداشتهای هوشمند» خود در اینجا استفاده میکنیم، جایی که یادداشتهای کاربران دستهبندی، خلاصه و سپس به روشهایی که برای مدل یادگیری بهتر و تعاملیتر است، به آنها بازگردانده میشود.
و همه اینها با هم واقعاً باعث میشود که Notability مانند یک برنامه رایانه کیفی احساس شود، درست است؟
این هدف نهایی است.
ما همه این مدلهای جالب و متفاوت، چیزهای مختلف، ورودیهای متنی را داریم، اما نکته مهم این است که آیا این شبیه یک برنامه رایانه کیفی است یا شبیه این است که یک برنامه تلفن را روی صفحهنمایش بزرگ خود باز کردهاید و دارید با آن بازی میکنید؟
صفحهکلید، پد لمسی، قلم، تغییر اندازه پنجره، همه اینها ویژگیهای کلیدی هستند که باید بهدرستی اجرا شوند تا مطمئن شویم که کاربران واقعاً احساس خوبی دارند.
ولی همانطور که قبلاً هم اشاره کردم، Jetpack Compose، Navigation 3، و «طراحی مواد» همه اینها را پوشش میدهند.
بنابراین اگر کارها را درست انجام دهید، درواقع کار سختی نیست.
رسیدن به اینجا خیلی آسان است.
بنابراین، بله.
اینها نکات کلیدی ما هستند.
میدانید، وقتی به Android در آینده فکر میکنید، من دیگر به دستگاهها فکر نمیکنم.
من به این فکر نمیکنم که این تلفن است، این تاشو است، این دستگاه واقعیت گسترده است، این رایانه رومیزی یا رایانه کیفی است، یا رایانه لوحی، یا خودرو، یا تلویزیون.
درعوض، این است که، سلام، اندازه صفحهنمایش دردسترس من چقدر است و مدالهای ورودی دردسترس کاربرانم چیست؟
و بیایید بهترین تجربه ممکن را برای کسانی که در آینده میآیند فراهم کنیم.
میدانید، و همانطور که قبلاً در اسلاید آخر هم اشاره کردم، میدانید، Compose و Nav 3 واقعاً پشتیبانی از همه اینها را آسان میکنند.
و سپس Google هر روز میاناهای برنامهسازی کاربردی جدید و واقعاً قدرتمندی مانند Jetpack ink یا Gemini روی دستگاه یا انواع چیزهایی را ارائه میدهد که ساختن تجربههای اصلی را برای شما آسان میکند و سپس بر روی فرمول جادویی که شما را منحصربهفرد میکند تمرکز میکند.
بسیارخوب.
بله.
بسیار سپاسگزارم.
این صحبت من است.
اگر سؤالی دارید، بعداً دردسترس خواهم بود، یا میتوانید با Notability تماس بگیرید.
این برنامه از حدود دو ماه پیش در Android کاملاً جدید است.
بالاخره از نسخه بتا خارج شدیم.
بنابراین، میدانید، هرطور مایلید آن را امتحان کنید.
بازخوردتان را ارائه دهید.
در Googlebooks در فرایند نمایشی پشت سر شما هم دردسترس است.
و اکنون ادامه کار را به جو از Logitech میسپارم.
متشکریم.
بسیار خوب.
ممنون، رایان.
امروز، باشه، متأسفم.
بیایید اسلایدمان را بیاوریم، بسیار خوب.
ممنون، رایان.
و امروز، من توضیح خواهم داد که چگونه Options+ را که یک برنامه سفارشیسازی جانبی است به Googlebooks آوردیم.
و ساختن تجربه جانبی به چه معناست؟
من آنچه را که ساختهایم، چند نکته برجسته مهندسی پشت آن، بدون نورهای کم، و جایی که در آینده میرویم را پوشش خواهم داد.
Now, Logitech devices worked with Android in the past, and most of users found they it the peripherals improve their accessibility, and especially with premium laptops and those phones docked phones with external monitors.
صحبت از این شد، قبلاً در طبقه پایین، در غرفه نمایشی Googlebook دیدم که یک دنده متوالی بازی Logitech را به میز وصل کرده بودند و از آن برای جابهجایی بین صفحههای مختلف در رایانه لوحی استفاده میکردند.
بفرمایید.
این یکی از راههای استفاده از آن است.
اوه، راستی، فراری مجبور شد ۵۰٬۰۰۰ یورو اضافه برای سکانس- بگذریم.
آره.
بنابراین در Googlebook، همانطور که رایان بهطور کاملاً جامع اشاره کرد، فضای بسیار بیشتری برای کار داریم.
همانطور که میبینید، میتوانید اندازه صفحهنمایشها را تغییر دهید، افقی، عمودی، یا مربعی، اگر دوست دارید، و فضای بسیار بیشتری برای کار بین برنامهها دارید.
میتوانید به کاری که انجام میدهید، برنامههای مختلف، و میدانید، تغییر زمینه، و همه این چیزها ادامه دهید.
و این قطعاً طراحی برنامه را تغییر داد و طرحبندیها باید درطول کل فرایندها مفید باقی بمانند.
برای ما Logitech، این بهطور خاص جالب بهنظر میرسد چون ما شرکتی هستیم با تجربه زیاد در لوازم جانبی، درست است؟
ما پایه بسیار محکمی برای این کار ایجاد میکنیم.
بنابراین، از دیدگاه ما، برای این نوع محیط کاری، موشواره یا صفحهکلید ابزاری است که کاربر ما درطول روز کاری با آن تعامل دارد.
آنها میتوانند خیلی راحت وارد گردش کارشان شوند.
و فکر میکنم واقعاً اغراق نیست اگر بگوییم Logitech دههها تجربه را به این کار میآورد.
فکر میکنم اوایل این ماه چهلوپنجمین سالگردمان بود.
و فکر میکنم از روز دوم، سال دوم Logitech، درحال ساختن موشواره بودهایم.
بنابراین، با این نوع تجربه، ما بسیار مطمئن هستیم که وارد این حوزه شویم.
حتی بهتر از آن، ما میراثی عالی با ChromeOS داریم.
ما در گذشته سازگاری درجه یک با ChromeOS را تضمین کردهایم.
Now, with these all being said, we have a very good experience practical experience breaking the boundary between between hardware where we built, software where we create create create, and then the platform, the OS, Googlebooks.
بنابراین، یک مثال میتواند به این سادگی باشد که کاربر دکمهای را فشار میدهد و نتیجه قابلپیشبینی را میبیند.
تقریباً مثل چیزی است که شما مردم همه آن را بدیهی میدانید.
اما درواقع به سازگاری یکپارچه قطعات نیاز دارند.
علاوهبراین، همه دوست دارند دستگاههایشان با لوازم جانبی سازگار باشد.
برای مثال، تنظیم کردن حساسیت آنها بهطور دقیق.
۶۵ تا است، نه یکی بیشتر، نه یکی کمتر.
بنابراین، همه این موارد به ادغام سازگاری یکپارچه بسیار خوبی بین هر سه مورد نیاز دارند.
اکنون با راهاندازی Googlebooks، Options+ را برای Googlebooks عرضه میکنیم.
بنابراین، درحالحاضر از طیفی از موشوارهها و صفحهکلیدها پشتیبانی میکنیم و در آینده از موارد بیشتری پشتیبانی خواهیم کرد.
و این همچنین جایی است که به کاربر اجازه میدهیم دستگاههای خود را پیکربندی کند.
و همانطور که قبلاً گفتم، مثل حساسیت، همه این چیزها.
اکنون، اینجا صحنه جالب میشود.
وقتی درباره پیکربندی- پیکربندیپذیری صحبت میکنیم، درواقع درباره دو طرف صحبت میکنیم.
یک طرف سختافزار و سفتافزار است که ویژگیها در سفتافزار ما پیادهسازی میشوند.
طرف دیگر درواقع نکته کلیدی این نسخه نمایشی است و این ارائه طرف سیستمعامل است.
فکر میکنم همه افراد حاضر در اینجا میدانند که در گذشته دستگاههای Android و اکثر برنامهها در محیط امن خودشان، یعنی فضاهای کاربر، قرار داشتند.
محدودیتهای خاصی برای کارهایی که میتوانید انجام دهید و در بسیاری از موارد، کارهایی که نمیتوانید انجام دهید و آنچه میخواهید وجود دارد.
برای ما، این موضوع بسیار مهم است.
اکنون، این یک نماگرفت است، بعداً یک نسخه نمایشی خواهیم داشت، اما این نماگرفت است.
ما اینجا یک موشواره داریم، MX Master 4، و عملکردهای زیادی اینجا داریم.
و برای افرادی که با دنیای جانبی آشنا هستند، میتوانید تشخیص دهید که برخی ویژگیها بسیار شبیه به ویژگیهای سفتافزار و ویژگیهای دستگاه پیادهسازی شدهاند.
و برخی دیگر قطعاً نه.
و برای ما، کاری که انجام میدهیم این است که سعی کنیم به کاربر اجازه دهیم قابلیت پیکربندی هر دو طرف را داشته باشد.
و کار ما اساساً این است که، برای مثال، این گزینهها را قابلفهم کنیم و قابلیت کامل را به کاربر ارائه دهیم، و این موارد را بهدرستی برای سیستمعامل و سفتافزار پیکربندی کنیم.
اکنون بیایید یک نسخه نمایشی سریع داشته باشیم.
اوه، این نسخه نمایشی بسیار تأثیرگذار بود.
اما دفعه بعد، رایان، از موشواره استفاده کن.
بسیار خوب، شروع میکنیم.
این صفحه دستگاه من است.
میبینید که من یک ماوس MX Master 4 راهاندازی کردهام، این یکی.
پس بیایید شروع کنیم.
مستقیماً به صفحه پیکربندی میرویم، همانطور که قبلاً دیدید، و اینجا جایی است که جادو اتفاق میافتد.
اکنون، بیایید ابتدا «حلقه جستجو» را برای دکمه شست انتخاب کنیم.
و سپس بیایید «اشارهگر جادویی» را به دکمه ویژگی اختصاص دهیم.
اکنون، بیایید شروع کنیم.
بیایید مرورگری را باز کنیم.
به اینجا بروید.
اینجا، دکمه شست را که بهتازگی «حلقه جستجو» را به آن اختصاص دادهام فشار میدهم.
همانطور که میبینید، دور صفحهکلید دایره میکشم.
بفرمایید!
Google فقط اطلاعات مربوط به این صفحهکلید را نمایش میدهد.
بسیار کاربردی و بسیار روان است.
اکنون، بیایید چیز دیگری را امتحان کنیم.
اوه، متأسفم.
بگذارید به عقب برگردم.
بیایید «اشارهگر جادویی» را امتحان کنیم.
اینجا، بیایید این را تغییر دهیم.
و میتوانم دکمه ویژگی را فشار دهم، این را برچسبگذاری کنم، و فشار دهم، «این دستگاه چیست؟»
بفرمایید.
Google جستجو را شروع میکند و نتایج را نمایش میدهد.
بنابراین، نکته خوب این است که کل گردش کار را فقط در یک عملیات دستی ادغام میکنید.
شما ویژگیها را ازقبل اختصاص میدهید، فشار میدهید، دایره میکشید، کلیک میکنید، تمام.
بنابراین، ما معتقدیم که این نوع عملیات بهطور قابلتوجهی دسترسی کاربران و روش کار آنها را بهبود میبخشد.
اکنون، بیایید به اسلایدها برگردیم.
بنابراین ممکن است بپرسید چه چیزی باعث وقوع آن اتفاق شده است.
چون بسیاری از کارهایی که در گذشته انجام میشد را برنامهها نمیتوانند انجام دهند.
اینجا، بفرمایید، Peripheral Customization API که هم در Googlebooks و هم در دستگاههای Android دردسترس است.
بااینحال، یادداشتهای Google در اینجا آمده است.
درحالحاضر، این API در فهرست مجازها قرار دارد.
اما قرار است همراه با بهروزرسانیهای Android در سهماهه چهارم ۲۰۲۶ (یعنی همین سهماهه) منتشر شود.
بنابراین وقتی منتشر شود، فکر میکنم توسعهدهندگان در سراسر جهان بتوانند از آن استفاده کنند.
اکنون، بیایید کمی به جنبه فنی بپردازیم.
این کل فرایند سه مؤلفه اصلی دارد: دستگاه، که قابلدرک است؛ راهانداز، که میتواند کلید یا دکمهای باشد که برای این کار درنظر گرفته شده است؛ و کنش، که در سمت سیستمعامل برنامه است.
اکنون، بیایید نگاهی سریع به این تکهکد بیندازیم.
و در بالاترین قسمت، دستگاهی را بااستفاده از شناسه فروشنده و شناسه محصول آن تعریف میکنیم.
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123
// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()
val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)ما معمولاً آن را vid و pid مینامیم.
با حرکت به پایین، شروع به تعریف راهانداز میکنیم.
و در اینجا، همانطور که میبینید، میخواهیم از دکمه وسط بهعنوان راهانداز استفاده کنیم.
و در اینجا، میخواهیم آن دکمه میانی را به بخش «دستیار صوتی» ویژگی سیستمعامل نگاشت کنیم.
درست است؟
ما یک actionBuilder درست اینجا از AppCustomizationAction داریم، و اینجا.
سپس با حرکت بیشتر به پایین، در اینجا این نگاشت را بین محصول، دستگاه، راهانداز، و کنش ثبت میکنیم.
و البته، کد واقعی کمی پیچیدهتر از این است، اما مفهوم کلی همین است.
بسیار ساده و آسان برای استفاده.
اکنون، این هم یک ویژگی بسیار جالب و جذاب دیگر.
یک فایل GIF اینجا گذاشتم تا دیدنش برای همه آسانتر باشد.
بنابراین اساساً وقتی دستگاه سازگار و پشتیبانیشدهای، در این مورد، موشواره Logitech mobifold، به سیستم متصل شود، سیستمعامل اعلان استانداردی را راهاندازی میکند تا به شما بگوید: «هی، برنامهای برای این کار دارید.»
به کاربر بگویید، البته.
و وقتی روی آن کلیک کنید، به «فروشگاه Play» هدایت میشوید و میتوانید مستقیماً از آنجا نصب کنید.
به این ویژگی «کاوش جفتسازی سریع» میگویند.
اکنون درنهایت، بیایید به سمت رابط کاربری برویم.
رایان موارد بسیار بسیار خوبی را درباره Googlebook و نحوه انجام واسط کاربر پوشش داده است، بنابراین من در اینجا نسبتاً سریع پیش خواهم رفت.
بنابراین همانطور که میبینید، Options+ از پلاتفرمهای مختلفی اجرا میشود، در مورد ما، Windows، Mac، و اکنون Googlebooks.
بنابراین هدف ما درواقع دو هدف است: یکی اینکه میخواهیم احساس شود که مختص پلاتفرم است، اما درعینحال میخواهیم احساس شود که در سراسر پلاتفرمها مشابه است، یعنی وقتی با Options+ در یک پلاتفرم آشنا شدید، باید بتوانید بهراحتی از آن در پلاتفرم دیگری استفاده کنید.
بنابراین، این یعنی ما میخواهیم از آن پلاتفرمهای خاص بهره ببریم، اما درعینحال، از همان زبان طراحی استفاده کنیم.
بنابراین، همانطور که میبینید، زبان طراحی در سراسر برد یکسان است.
و همانطور که قبلاً بحث کردیم، کاربران Googlebook که کاربر Google هستند تمایل دارند از Googlebook بیشتر بهصورت رایانه کیفی/رایانه استفاده کنند.
بنابراین، البته، خود برنامه ما، حتی در Googlebook، شبیه یک برنامه رایانهای است.
بنابراین خود برنامه ممکن است مانند یک برنامه رایانهای رفتار کند و در اندازههای مختلف پنجره، لمسهای مختلف، و البته، میتوانید استفاده از موشواره و صفحهکلید را کنترل کنید.
بسیار خوب، این داستان کوتاه و نسخه نسبتاً کوتاهی از داستان لوازم جانبی Logitech و Options+ در Googlebook است.
و عالی کار میکند.
بااینحال، ما تازه شروع کردهایم.
چند مرحله داریم: یکی اینکه میخواهیم این تجربه را به دستگاههای بیشتر، صفحهکلیدها، موشوارهها، و سایر لوازم جانبی بیشتر بیاوریم، و میخواهیم این برنامه را بااستفاده از بازخورد کاربران واقعی اصلاح کنیم.
و سپس، البته، مهمترین چیز این است که ما در آینده با Google همکاری خواهیم کرد و ادغام عمیقتری در پلاتفرمهای جدید خواهیم داشت.
بنابراین هدف نهایی ما این است که سفارشیسازی جانبی را به تجربهای بسیار بسیار طبیعی از استفاده از Googlebook تبدیل کنیم و به افراد کمک کنیم به روشی که میخواهند کار کنند.
باشه قبول.
حتماً از غرفههای ما در طبقه پایین بازدید کنید و خودتان Options+ و دستگاههای فوقالعاده Logitech را امتحان کنید.
و از شریکمان Google سپاسگزاریم، و از همه شما بهخاطر وقتی که گذاشتید سپاسگزاریم.
بسیار سپاسگزارم.
// Vendor and product Information
const val VENDOR_ID = 1234
val pid = 123
// Use the mouse Middle Button as the trigger
val trigger = ButtonCustomizationTrigger(MotionEvent.BUTTON_TERTIARY)
// Set Voice Assistant as the action
val actionBuilder = AppCustomizationAction.Builder(component, ACTION_MAIN)
actionBuilder.setData(ActionId.ACTION_VOICE_ASSIST.actionId) // Action IDs are predefined
val action = actionBuilder.build()
val im = context.getSystemService(INPUT_SERVICE) as InputManager
im.addPeripheralCustomization(VENDOR_ID, pid, trigger, action)