বৈশিষ্ট্য এবং APIs ওভারভিউ

অ্যান্ড্রয়েড ১৫ ডেভেলপারদের জন্য দুর্দান্ত বৈশিষ্ট্য এবং API গুলি উপস্থাপন করেছে। নিম্নলিখিত বিভাগগুলিতে এই বৈশিষ্ট্যগুলি সংক্ষিপ্ত করা হয়েছে যা আপনাকে সম্পর্কিত API গুলি দিয়ে শুরু করতে সহায়তা করবে।

যোগ করা, পরিবর্তিত এবং সরানো API গুলির বিস্তারিত তালিকার জন্য, API diff রিপোর্টটি পড়ুন। যোগ করা API গুলির বিস্তারিত জানতে Android API রেফারেন্সটি দেখুন — Android 15 এর জন্য, API লেভেল 35 এ যোগ করা API গুলি সন্ধান করুন। প্ল্যাটফর্ম পরিবর্তনগুলি আপনার অ্যাপগুলিকে কোথায় প্রভাবিত করতে পারে সে সম্পর্কে জানতে, Android 15 এবং সমস্ত অ্যাপকে লক্ষ্য করে এমন অ্যাপগুলির জন্য Android 15 আচরণ পরিবর্তনগুলি পরীক্ষা করে দেখতে ভুলবেন না।

ক্যামেরা এবং মিডিয়া

অ্যান্ড্রয়েড ১৫-এ বিভিন্ন ধরণের বৈশিষ্ট্য রয়েছে যা ক্যামেরা এবং মিডিয়া অভিজ্ঞতা উন্নত করে এবং আপনাকে এমন সরঞ্জাম এবং হার্ডওয়্যার অ্যাক্সেস দেয় যা নির্মাতাদের অ্যান্ড্রয়েডে তাদের দৃষ্টিভঙ্গি বাস্তবায়িত করতে সহায়তা করে।

অ্যান্ড্রয়েড মিডিয়া এবং ক্যামেরার জন্য সর্বশেষ বৈশিষ্ট্য এবং ডেভেলপার সমাধান সম্পর্কে আরও জানতে, গুগল আই/ও থেকে আধুনিক অ্যান্ড্রয়েড মিডিয়া এবং ক্যামেরা অভিজ্ঞতা তৈরির আলোচনা দেখুন।

কম আলোতে বুস্ট

Android 15 引入了弱光增强功能,这是一种自动曝光模式,适用于 Camera 2夜间模式相机扩展。“弱光增强”功能可在光线昏暗的环境下调整预览画面的曝光度。这与夜间模式相机扩展程序创建静态图片的方式不同,因为夜间模式会将一系列照片组合起来,以创建一张经过增强的单张图片。虽然夜间模式非常适合拍摄静态图片,但无法创建连续的帧流,而“低光增强”功能可以。因此,弱光增强功能可启用相机功能,例如:

  • 提供增强型图片预览,以便用户更好地取景拍摄低光照片
  • 在光线不足的情况下扫描二维码

如果您启用“弱光增强”功能,该功能会在光线较弱时自动开启,在光线较强时关闭。

应用可以在光线昏暗的环境下录制预览画面,以保存经过亮度提升的视频。

如需了解详情,请参阅弱光增强

অ্যাপ-মধ্যস্থ ক্যামেরা নিয়ন্ত্রণ

অ্যান্ড্রয়েড 15 সমর্থিত ডিভাইসগুলিতে ক্যামেরা হার্ডওয়্যার এবং এর অ্যালগরিদমগুলির উপর আরও নিয়ন্ত্রণের জন্য একটি এক্সটেনশন যুক্ত করে:

  • উন্নত ফ্ল্যাশ শক্তি সমন্বয় ইমেজ ক্যাপচার করার সময় SINGLE এবং TORCH উভয় মোডে ফ্ল্যাশ তীব্রতার সুনির্দিষ্ট নিয়ন্ত্রণ সক্ষম করে।

HDR হেডরুম নিয়ন্ত্রণ

Android 15 HDR হেডরুম বেছে নেয় যা অন্তর্নিহিত ডিভাইসের ক্ষমতা এবং প্যানেলের বিট-গভীরতার জন্য উপযুক্ত। যে পৃষ্ঠাগুলিতে প্রচুর SDR সামগ্রী রয়েছে, যেমন একটি মেসেজিং অ্যাপ একটি একক HDR থাম্বনেল প্রদর্শন করে, এই আচরণটি SDR সামগ্রীর অনুভূত উজ্জ্বলতাকে বিরূপভাবে প্রভাবিত করতে পারে৷ Android 15 আপনাকে SDR এবং HDR সামগ্রীর মধ্যে ভারসাম্য বজায় রাখতে setDesiredHdrHeadroom সহ HDR হেডরুম নিয়ন্ত্রণ করতে দেয়।

বাম স্ক্রিনে SDR UI উপাদানগুলির উজ্জ্বলতা ডান স্ক্রিনের উজ্জ্বলতার চেয়ে বেশি অভিন্ন বলে মনে হচ্ছে, যা HDR এবং SDR বিষয়বস্তু মিশ্রিত হলে সম্ভাব্য হেডরুম সমস্যাগুলিকে অনুকরণ করে৷ HDR হেডরুম সামঞ্জস্য করে, আপনি SDR এবং HDR সামগ্রীর মধ্যে একটি ভাল ভারসাম্য অর্জন করতে পারেন।

শব্দ নিয়ন্ত্রণ

Android 15 引入了对 CTA-2075 响度标准的支持,可帮助您避免音频响度不一致,并确保用户在切换内容时不必不断调整音量。系统利用输出设备(头戴式耳机和扬声器)的已知特性以及 AAC 音频内容中提供的响度元数据,智能调整音频响度和动态范围压缩级别。

如需启用此功能,您需要确保 AAC 内容中提供响度元数据,并在应用中启用平台功能。为此,您可以通过使用关联的 AudioTrack 中的音频会话 ID 调用其 create 工厂方法来实例化 LoudnessCodecController 对象;这会自动开始应用音频更新。您可以传递 OnLoudnessCodecUpdateListener 来修改或过滤响度参数,然后再将其应用于 MediaCodec

// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = 
val audioTrack = AudioTrack.Builder()
                                .setSessionId(sessionId)
                                .build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
   val lcController = LoudnessCodecController.create(mSessionId)
   // Starts applying audio updates for each added MediaCodec
}

AndroidX media3 ExoPlayer 也将更新,以使用 LoudnessCodecController API,可实现无缝应用集成。

ভার্চুয়াল MIDI 2.0 ডিভাইস

Android 13 ইউএসবি ব্যবহার করে MIDI 2.0 ডিভাইসে সংযোগ করার জন্য সমর্থন যোগ করেছে, যা ইউনিভার্সাল MIDI প্যাকেট (UMP) ব্যবহার করে যোগাযোগ করে। Android 15 ভার্চুয়াল MIDI অ্যাপগুলিতে UMP সমর্থন প্রসারিত করে, কম্পোজিশন অ্যাপগুলিকে একটি ভার্চুয়াল MIDI 2.0 ডিভাইস হিসাবে সিন্থেসাইজার অ্যাপগুলিকে নিয়ন্ত্রণ করতে সক্ষম করে ঠিক যেমন তারা একটি USB MIDI 2.0 ডিভাইসের সাথে করে।

আরও দক্ষ AV1 সফ্টওয়্যার ডিকোডিং

dav1d 徽标

dav1d 是 VideoLAN 推出的热门 AV1 软件解码器,适用于不支持硬件 AV1 解码的 Android 设备。与旧版 AV1 软件解码器相比,dav1d 的性能最高可提升 3 倍,让更多用户(包括一些低端和中端设备)能够播放高清 AV1 视频。

您的应用需要选择启用 dav1d,方法是通过名称 "c2.android.av1-dav1d.decoder" 调用它。在后续更新中,dav1d 将成为默认的 AV1 软件解码器。此支持已标准化,并向后移植到收到 Google Play 系统更新的 Android 11 设备。

ডেভেলপারের উৎপাদনশীলতা এবং সরঞ্জাম

যদিও আপনার উৎপাদনশীলতা উন্নত করার জন্য আমাদের বেশিরভাগ কাজ অ্যান্ড্রয়েড স্টুডিও , জেটপ্যাক কম্পোজ এবং অ্যান্ড্রয়েড জেটপ্যাক লাইব্রেরির মতো সরঞ্জামগুলিকে কেন্দ্র করে, আমরা সর্বদা প্ল্যাটফর্মে এমন উপায়গুলি খুঁজি যা আপনাকে আপনার দৃষ্টিভঙ্গি আরও সহজে বাস্তবায়নে সহায়তা করবে।

OpenJDK ১৭টি আপডেট

Android 15 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致。

其中包含以下主要功能和改进:

这些 API 会通过 Google Play 系统更新在搭载 Android 12(API 级别 31)及更高版本的 10 亿多部设备上更新,以便您以最新的编程功能为目标平台。

পিডিএফ উন্নতি

Android 15 对 PdfRenderer API 进行了重大改进。应用可以整合呈现等高级功能 受密码保护的文件、注释、表单编辑searching,而 selection 则包含副本。支持线性化 PDF 优化,此功能可加快本地 PDF 查看速度并减少资源使用量。Jetpack PDF 库使用这些 API 来简化 PDF 的添加 查看功能。

<ph type="x-smartling-placeholder">
</ph>
PDF 渲染的最新更新包括 搜索嵌入式 PDF 文件中的内容。

PdfRenderer 已移至一个可使用 Google Play 系统更新独立于平台版本,并且我们支持 将这些变更还原到 Android 11(API 级别 30),方法是创建兼容的 Android 15 之前版本的 API Surface,称为 PdfRendererPreV

স্বয়ংক্রিয় ভাষা পরিবর্তনের পরিমার্জন

অ্যান্ড্রয়েড 14 অডিওতে অন-ডিভাইস, বহু-ভাষা স্বীকৃতি যোগ করেছে ভাষাগুলির মধ্যে স্বয়ংক্রিয় পরিবর্তনের সাথে, কিন্তু এর ফলে শব্দগুলি বাদ পড়তে পারে, বিশেষ করে যখন ভাষা দুটি উচ্চারণের মধ্যে কম বিরতির সাথে স্যুইচ করে। Android 15 অ্যাপগুলিকে তাদের ব্যবহারের ক্ষেত্রে এই সুইচিং টিউন করতে সাহায্য করার জন্য অতিরিক্ত নিয়ন্ত্রণ যোগ করে। EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS স্বয়ংক্রিয় স্যুইচিংকে অডিও সেশনের শুরুতে সীমাবদ্ধ করে, যখন EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES একটি নির্দিষ্ট সংখ্যক স্যুইচের পরে ভাষা স্যুইচিং নিষ্ক্রিয় করে। এই বিকল্পগুলি বিশেষভাবে উপযোগী যদি আপনি আশা করেন যে অধিবেশন চলাকালীন একটি একক ভাষা বলা হবে যা স্বয়ংক্রিয়ভাবে সনাক্ত করা উচিত।

উন্নত ওপেনটাইপ ভেরিয়েবল ফন্ট এপিআই

Android 15 OpenType ভেরিয়েবল ফন্টের ব্যবহারযোগ্যতা উন্নত করে। আপনি buildVariableFamily API এর সাথে ওজন অক্ষ উল্লেখ না করে একটি পরিবর্তনশীল ফন্ট থেকে একটি FontFamily উদাহরণ তৈরি করতে পারেন। টেক্সট রেন্ডারার প্রদর্শন করা টেক্সট মেলে wght অক্ষের মান ওভাররাইড করে।

এপিআই ব্যবহার করে একটি Typeface তৈরির জন্য কোডটিকে যথেষ্ট সরল করে:

কোটলিন

val newTypeface = Typeface.CustomFallbackBuilder(
            FontFamily.Builder(
                Font.Builder(assets, "RobotoFlex.ttf").build())
                    .buildVariableFamily())
    .build()

জাভা

Typeface newTypeface = Typeface.CustomFallbackBuilder(
            new FontFamily.Builder(
                new Font.Builder(assets, "RobotoFlex.ttf").build())
                    .buildVariableFamily())
    .build();

পূর্বে, একই Typeface তৈরি করতে, আপনার আরও অনেক কোডের প্রয়োজন হবে:

কোটলিন

val oldTypeface = Typeface.CustomFallbackBuilder(
            FontFamily.Builder(
                Font.Builder(assets, "RobotoFlex.ttf")
                    .setFontVariationSettings("'wght' 400")
                    .setWeight(400)
                    .build())
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 100")
                        .setWeight(100)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 200")
                        .setWeight(200)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 300")
                        .setWeight(300)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 500")
                        .setWeight(500)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 600")
                        .setWeight(600)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 700")
                        .setWeight(700)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 800")
                        .setWeight(800)
                        .build()
                )
                .addFont(
                    Font.Builder(assets, "RobotoFlex.ttf")
                        .setFontVariationSettings("'wght' 900")
                        .setWeight(900)
                        .build()
                ).build()
        ).build()

জাভা

Typeface oldTypeface = new Typeface.CustomFallbackBuilder(
    new FontFamily.Builder(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 400")
            .setWeight(400)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 100")
            .setWeight(100)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 200")
            .setWeight(200)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 300")
            .setWeight(300)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 500")
            .setWeight(500)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 600")
            .setWeight(600)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 700")
            .setWeight(700)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 800")
            .setWeight(800)
            .build()
    )
    .addFont(
        new Font.Builder(assets, "RobotoFlex.ttf")
            .setFontVariationSettings("'wght' 900")
            .setWeight(900)
            .build()
    )
    .build()
).build();

পুরানো এবং নতুন উভয় API এর সাথে কীভাবে একটি Typeface তৈরি হয় তার একটি উদাহরণ এখানে দেওয়া হল:

নতুন এবং পুরানো API ব্যবহার করে টাইপফেস রেন্ডারিং কীভাবে আলাদা তার একটি উদাহরণ

এই উদাহরণে, পুরানো API দিয়ে তৈরি করা Typeface 350, 450, 550 এবং 650 Font উদাহরণগুলির জন্য সঠিক ফন্টের ওজন তৈরি করার ক্ষমতা রাখে না, তাই রেন্ডারার সবচেয়ে কাছের ওজনে ফিরে আসে। সুতরাং এই ক্ষেত্রে, 350 এর পরিবর্তে 300 রেন্ডার করা হয়, 450 এর পরিবর্তে 400 রেন্ডার করা হয়, ইত্যাদি। বিপরীতে, নতুন এপিআইগুলির সাথে তৈরি Typeface গতিশীলভাবে একটি প্রদত্ত ওজনের জন্য একটি Font উদাহরণ তৈরি করে, তাই সঠিক ওজন 350, 450, 550 এবং 650 এর জন্যও রেন্ডার করা হয়।

দানাদার লাইন ব্রেক নিয়ন্ত্রণ

从 Android 15 开始,TextView 和底层行断开符可以将给定部分文本保留在同一行中,以提高可读性。您可以通过在字符串资源或 createNoBreakSpan 中使用 <nobreak> 标记来充分利用此换行符自定义功能。同样,您可以使用 <nohyphen> 标记或 createNoHyphenationSpan 来防止对字词进行分词。

例如,以下字符串资源不包含换行符,在呈现时,文本“Pixel 8 Pro”会在不合适的位置换行:

<resources>
    <string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>

相比之下,此字符串资源包含 <nobreak> 标记,该标记会将字词“Pixel 8 Pro”换行,并防止换行:

<resources>
    <string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>

以下图片展示了这些字符串呈现方式的差异:

一行文本的布局,其中显示短语“Pixel 8 Pro.”未使用 <nobreak> 标记换行。
使用 <nobreak> 标记封装“Pixel 8 Pro.”短语的同一行文本的布局。

অ্যাপ আর্কাইভিং

Android 和 Google Play 宣布支持最后的应用归档功能 年,这让用户可以通过移除部分内容来释放空间 通过 Android 应用发布的设备中不常用的应用 前往 Google Play 下载套装。Android 15 在操作系统级别支持应用归档和解压缩,让所有应用商店都能更轻松地实现归档和解压缩。

具有 REQUEST_DELETE_PACKAGES 权限的应用可以调用 PackageInstaller requestArchive 方法请求归档 已安装的应用软件包,这会移除 APK 和所有缓存的文件,但会保留 用户数据已归档的应用会通过 LauncherApps API 作为可显示的应用返回;用户会看到一个界面处理,以突出显示这些应用已归档。如果用户点按已归档的应用,负责安装的应用会收到解除归档请求,并且可以通过 ACTION_PACKAGE_ADDED 广播监控恢复过程。

使用开发者选项在设备上启用 16 KB 模式

切换以 16KB 页面大小启动设备开发者选项,以在 16 KB 模式下启动设备。

在 Android 15 的 QPR 版本中,您可以使用某些设备上提供的开发者选项,以 16 KB 模式启动设备并执行设备端测试。在使用开发者选项之前,请依次前往设置 > 系统 > 软件更新,并应用所有可用的更新。

此开发者选项适用于以下设备:

  • Pixel 8 和 Pixel 8 Pro(搭载 Android 15 QPR1 或更高版本)

  • Pixel 8a(搭载 Android 15 QPR1 或更高版本)

  • Pixel 9、9 Pro 和 9 Pro XL(搭载 Android 15 QPR2 Beta 2 或更高版本)

গ্রাফিক্স

অ্যান্ড্রয়েড ১৫ সর্বশেষ গ্রাফিক্স উন্নতি নিয়ে এসেছে, যার মধ্যে রয়েছে ANGLE এবং ক্যানভাস গ্রাফিক্স সিস্টেমে সংযোজন।

অ্যান্ড্রয়েডের জিপিইউ অ্যাক্সেস আধুনিকীকরণ

Vulkan 徽标

与早期相比,Android 硬件已经有了很大的进步。早期,核心操作系统在单个 CPU 上运行,并且使用基于固定功能流水线的 API 访问 GPU。从 Android 7.0(API 级别 24)开始,NDK 中就提供了 Vulkan® 图形 API,其较低级别的抽象更好地反映了现代 GPU 硬件,可更好地扩缩以支持多个 CPU 核心,并可降低 CPU 驱动程序开销,从而提升应用性能。所有现代游戏引擎都支持 Vulkan。

Vulkan 是 Android 与 GPU 的首选接口。因此,Android 15 包含 ANGLE 作为可选层,用于在 Vulkan 基础上运行 OpenGL® ES。改用 ANGLE 将标准化 Android OpenGL 实现,提高兼容性,在某些情况下还有助于提升性能。在 Android 15 中,您可以依次前往设置 -> 系统 -> 开发者选项 -> 实验性功能:启用 ANGLE,启用开发者选项,以便通过 ANGLE 测试 OpenGL ES 应用的稳定性和性能。

Android ANGLE on Vulkan 路线图

Android GPU API 即将发生变更的路线图。

为了简化 GPU 堆栈,我们今后将在更多新设备上将 ANGLE 作为 GL 系统驱动程序提供,未来 OpenGL/ES 将只能通过 ANGLE 获得支持。尽管如此,我们计划继续在所有设备上支持 OpenGL ES

建议的后续措施

使用开发者选项为 OpenGL ES 选择 ANGLE 驱动程序,然后测试您的应用。对于新项目,我们强烈建议您为 C/C++ 使用 Vulkan。

ক্যানভাসের উন্নতি

Android 15 অতিরিক্ত ক্ষমতা সহ Android এর ক্যানভাস গ্রাফিক্স সিস্টেমের আমাদের আধুনিকীকরণ অব্যাহত রেখেছে:

  • Matrix44 স্থানাঙ্ক রূপান্তরের জন্য একটি 4x4 ম্যাট্রিক্স প্রদান করে যেটি ব্যবহার করা উচিত যখন আপনি 3D তে ক্যানভাসকে ম্যানিপুলেট করতে চান।
  • clipShader বর্তমান ক্লিপকে নির্দিষ্ট শেডারের সাথে ছেদ করে, যখন clipOutShader ক্লিপটিকে বর্তমান ক্লিপ এবং শেডারের পার্থক্যে সেট করে, প্রতিটি শেডারকে আলফা মাস্ক হিসাবে বিবেচনা করে। এটি জটিল আকারের অঙ্কনকে দক্ষতার সাথে সমর্থন করে।

কর্মক্ষমতা এবং ব্যাটারি

অ্যান্ড্রয়েড আপনার অ্যাপের কর্মক্ষমতা এবং মান উন্নত করতে সাহায্য করার উপর তার মনোযোগ অব্যাহত রেখেছে। অ্যান্ড্রয়েড 15 এমন API প্রবর্তন করে যা আপনার অ্যাপের কাজগুলিকে আরও দক্ষ করে তুলতে, অ্যাপের কর্মক্ষমতা অপ্টিমাইজ করতে এবং আপনার অ্যাপ সম্পর্কে অন্তর্দৃষ্টি সংগ্রহ করতে সহায়তা করে।

ব্যাটারি-সাশ্রয়ী সর্বোত্তম অনুশীলন, নেটওয়ার্ক এবং পাওয়ার ব্যবহার ডিবাগিং এবং অ্যান্ড্রয়েড 15 এবং অ্যান্ড্রয়েডের সাম্প্রতিক সংস্করণগুলিতে ব্যাকগ্রাউন্ড কাজের ব্যাটারি দক্ষতা কীভাবে উন্নত করা হচ্ছে তার বিশদ জানতে, Google I/O থেকে অ্যান্ড্রয়েডে ব্যাকগ্রাউন্ড কাজের ব্যাটারি দক্ষতা উন্নত করার বিষয়ে আলোচনা দেখুন।

অ্যাপ্লিকেশনস্টার্টইনফো এপিআই

在以前的 Android 版本中,应用启动一直是个谜。在应用中确定应用是从冷启动、温启动还是热启动状态启动很困难。您还很难了解应用在各种启动阶段(分叉进程、调用 onCreate、绘制第一个帧等)所花的时间。在 Application 类被实例化时,您无法知道应用是通过广播、content provider、作业、备份、启动完成、闹钟还是 Activity 启动的。

Android 15 上的 ApplicationStartInfo API 提供了所有这些功能,以及更多功能。您甚至可以选择在流程中添加自己的时间戳,以便在一个位置收集时间数据。除了收集指标之外,您还可以使用 ApplicationStartInfo 直接优化应用启动;例如,您可以消除在应用因广播而启动时在 Application 类中实例化与界面相关的库所带来的高昂开销。

অ্যাপের আকারের বিস্তারিত তথ্য

Android 8.0 (API স্তর 26) থেকে, Android StorageStats.getAppBytes API অন্তর্ভুক্ত করেছে যা একটি অ্যাপের ইনস্টল করা আকারকে একক সংখ্যা বাইট হিসাবে সংক্ষিপ্ত করে, যা APK আকারের সমষ্টি, APK থেকে বের করা ফাইলের আকার, এবং ফাইলগুলি যেগুলি ডিভাইসে তৈরি হয়েছিল যেমন আগ-অফ-টাইম (AOT) সংকলিত কোড। আপনার অ্যাপ কীভাবে স্টোরেজ ব্যবহার করছে তার পরিপ্রেক্ষিতে এই সংখ্যাটি খুব অন্তর্দৃষ্টিপূর্ণ নয়।

Android 15 StorageStats.getAppBytesByDataType([type]) API যোগ করে, যা আপনাকে APK ফাইল বিভাজন, AOT এবং স্পিডআপ সম্পর্কিত কোড, ডেক্স মেটাডেটা, লাইব্রেরি এবং নির্দেশিত প্রোফাইল সহ আপনার অ্যাপ কীভাবে সমস্ত স্থান ব্যবহার করছে তার অন্তর্দৃষ্টি পেতে দেয়।

অ্যাপ-পরিচালিত প্রোফাইলিং

অ্যান্ড্রয়েড 15 ProfilingManager ক্লাস অন্তর্ভুক্ত করে, যা আপনাকে আপনার অ্যাপের মধ্যে থেকে প্রোফাইলিং তথ্য সংগ্রহ করতে দেয় যেমন হিপ ডাম্প, হিপ প্রোফাইল, স্ট্যাক স্যাম্পলিং এবং আরও অনেক কিছু। এটি আউটপুট ফাইল সনাক্ত করতে একটি সরবরাহকৃত ট্যাগ সহ আপনার অ্যাপে একটি কলব্যাক প্রদান করে, যা আপনার অ্যাপের ফাইল ডিরেক্টরিতে বিতরণ করা হয়। পারফরম্যান্সের প্রভাব কমানোর জন্য API রেট সীমিত করে।

আপনার অ্যাপে প্রোফাইলিং রিকোয়েস্ট তৈরি করা সহজ করার জন্য, আমরা কোর 1.15.0-rc01 বা উচ্চতর সংস্করণে উপলব্ধ সংশ্লিষ্ট Profiling AndroidX API ব্যবহার করার পরামর্শ দিই।

SQLite ডাটাবেসের উন্নতি

Android 15 引入了 SQLite API,这些 API 可公开底层 SQLite 引擎的高级功能,以解决可能在应用中出现的特定性能问题。将 SQLite 更新到版本 3.44.3

开发者应参阅 SQLite 性能最佳实践 以便充分利用其 SQLite 数据库,尤其是在处理大型 或运行对延迟敏感的查询时

অ্যান্ড্রয়েড ডায়নামিক পারফরম্যান্স ফ্রেমওয়ার্ক আপডেট

Android 15 继续投资于 Android 动态性能框架 (ADPF),这是一组 API,可让游戏和性能密集型应用更为直接地与 Android 设备的电源和散热系统进行互动。在受支持的设备上,Android 15 添加了 ADPF 功能:

  • 针对提示会话的节能模式,用于指明其关联的线程应优先节能而非性能,非常适合长时间运行的后台工作负载。
  • 系统可以在提示会话中报告 GPU 和 CPU 工作时长,以便同时调整 CPU 和 GPU 频率,以最佳方式满足工作负载需求。
  • 热余量阈值,用于根据余量预测来解读可能的热节流状态。

如需详细了解如何在应用和游戏中使用 ADPF,请参阅相关文档

গোপনীয়তা

অ্যান্ড্রয়েড ১৫-তে বিভিন্ন ধরণের বৈশিষ্ট্য রয়েছে যা অ্যাপ ডেভেলপারদের ব্যবহারকারীর গোপনীয়তা রক্ষা করতে সাহায্য করে।

স্ক্রিন রেকর্ডিং সনাক্তকরণ

Android 15 增加了对应用的支持,以检测 正在录制。每当应用转换时,系统都会调用回调 在屏幕录制内容中处于可见与隐藏状态之间。如果正在记录注册进程的 UID 拥有的 activity,则系统会将应用视为可见。这样一来,如果您的应用执行敏感操作,您就可以告知用户正在录制他们的操作。

val mCallback = Consumer<Int> { state ->
  if (state == SCREEN_RECORDING_STATE_VISIBLE) {
    // We're being recorded
  } else {
    // We're not being recorded
  }
}

override fun onStart() {
   super.onStart()
   val initialState =
      windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
   mCallback.accept(initialState)
}

override fun onStop() {
    super.onStop()
    windowManager.removeScreenRecordingCallback(mCallback)
}

সম্প্রসারিত ইন্টেন্টফিল্টার ক্ষমতা

Android 15 UriRelativeFilterGroup মাধ্যমে আরও সুনির্দিষ্ট Intent রেজোলিউশনের জন্য সমর্থন করে, যাতে UriRelativeFilter অবজেক্টের একটি সেট রয়েছে যা Intent ম্যাচিং নিয়মগুলির একটি সেট তৈরি করে যা প্রত্যেককে অবশ্যই সন্তুষ্ট হতে হবে, যার মধ্যে URL ক্যোয়ারী প্যারামিটার, URL খণ্ড এবং ব্লক করা বা বর্জনের নিয়ম রয়েছে।

এই নিয়মগুলিকে AndroidManifest XML ফাইলে <uri-relative-filter-group> ট্যাগ দিয়ে সংজ্ঞায়িত করা যেতে পারে, যা ঐচ্ছিকভাবে একটি android:allow ট্যাগ অন্তর্ভুক্ত করতে পারে। এই ট্যাগগুলিতে <data> ট্যাগ থাকতে পারে যা বিদ্যমান ডেটা ট্যাগ বৈশিষ্ট্যগুলির পাশাপাশি android:query এবং android:fragment বৈশিষ্ট্যগুলি ব্যবহার করে৷

এখানে AndroidManifest সিনট্যাক্সের একটি উদাহরণ:

<intent-filter android:autoVerify="true">
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.BROWSABLE" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:scheme="http" />
  <data android:scheme="https" />
  <data android:host="astore.com" />
  <uri-relative-filter-group>
    <data android:pathPrefix="/auth" />
    <data android:query="region=na" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:query="mobileoptout=true" />
  </uri-relative-filter-group>
  <uri-relative-filter-group android:allow="false">
    <data android:pathPrefix="/auth" />
    <data android:fragmentPrefix="faq" />
  </uri-relative-filter-group>
</intent-filter>

ব্যক্তিগত স্থান

একটি ডিভাইসে সংবেদনশীল অ্যাপ দেখাতে বা লুকানোর জন্য ব্যক্তিগত স্থানটি আনলক এবং লক করা যেতে পারে।

ব্যক্তিগত স্থান ব্যবহারকারীদের তাদের ডিভাইসে একটি পৃথক স্থান তৈরি করতে দেয় যেখানে তারা প্রমাণীকরণের একটি অতিরিক্ত স্তরের অধীনে সংবেদনশীল অ্যাপগুলিকে চোখ থেকে দূরে রাখতে পারে। ব্যক্তিগত স্থান একটি পৃথক ব্যবহারকারী প্রোফাইল ব্যবহার করে। ব্যবহারকারী ব্যক্তিগত স্থানের জন্য ডিভাইস লক বা একটি পৃথক লক ফ্যাক্টর ব্যবহার করতে পারেন।

ব্যক্তিগত স্থানের অ্যাপ্লিকেশনগুলি লঞ্চারে একটি পৃথক পাত্রে প্রদর্শিত হয় এবং ব্যক্তিগত স্থানটি লক করা অবস্থায় সাম্প্রতিক দৃশ্য, বিজ্ঞপ্তি, সেটিংস এবং অন্যান্য অ্যাপ্লিকেশন থেকে লুকিয়ে থাকে৷ ব্যবহারকারী দ্বারা তৈরি এবং ডাউনলোড করা সামগ্রী (যেমন মিডিয়া বা ফাইল) এবং অ্যাকাউন্টগুলি ব্যক্তিগত স্থান এবং প্রধান স্থানের মধ্যে পৃথক করা হয়। সিস্টেম শেয়ারশীট এবং ফটো পিকার ব্যবহার করা যেতে পারে অ্যাপগুলিকে স্পেস জুড়ে সামগ্রীতে অ্যাক্সেস দেওয়ার জন্য যখন ব্যক্তিগত স্থানটি আনলক করা থাকে।

ব্যবহারকারীরা বিদ্যমান অ্যাপ এবং তাদের ডেটা ব্যক্তিগত স্থানে সরাতে পারবেন না। পরিবর্তে, ব্যবহারকারীরা তাদের পছন্দের অ্যাপ স্টোর ব্যবহার করে একটি অ্যাপ ইনস্টল করতে ব্যক্তিগত স্থানে একটি ইনস্টল বিকল্প নির্বাচন করেন। প্রাইভেট স্পেসে অ্যাপগুলি মূল স্পেসের যেকোন অ্যাপ থেকে আলাদা কপি হিসেবে ইনস্টল করা হয় (একই অ্যাপের নতুন কপি)।

যখন একজন ব্যবহারকারী ব্যক্তিগত স্থান লক করে, প্রোফাইলটি বন্ধ হয়ে যায়। প্রোফাইল বন্ধ থাকাকালীন, ব্যক্তিগত স্থানের অ্যাপগুলি আর সক্রিয় থাকে না এবং বিজ্ঞপ্তিগুলি দেখানো সহ ফোরগ্রাউন্ড বা ব্যাকগ্রাউন্ড ক্রিয়াকলাপগুলি সম্পাদন করতে পারে না৷

আমরা সুপারিশ করছি যে আপনি আপনার অ্যাপটি প্রত্যাশিতভাবে কাজ করে তা নিশ্চিত করতে ব্যক্তিগত স্থান দিয়ে আপনার অ্যাপটি পরীক্ষা করুন, বিশেষ করে যদি আপনার অ্যাপ নিম্নলিখিত বিভাগগুলির মধ্যে একটিতে পড়ে:

নির্বাচিত ফটো অ্যাক্সেসের জন্য সাম্প্রতিক ব্যবহারকারী নির্বাচনের প্রশ্ন করুন

মিডিয়া অনুমতিগুলিতে আংশিক অ্যাক্সেস দেওয়া হলে অ্যাপগুলি এখন শুধুমাত্র সাম্প্রতিক-নির্বাচিত ফটো এবং ভিডিওগুলিকে হাইলাইট করতে পারে৷ এই বৈশিষ্ট্যটি এমন অ্যাপগুলির জন্য ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারে যেগুলি প্রায়শই ফটো এবং ভিডিওগুলিতে অ্যাক্সেসের অনুরোধ করে৷ আপনার অ্যাপে এই বৈশিষ্ট্যটি ব্যবহার করতে, ContentResolver মাধ্যমে MediaStore জিজ্ঞাসা করার সময় QUERY_ARG_LATEST_SELECTION_ONLY আর্গুমেন্টটি সক্ষম করুন।

কোটলিন

val externalContentUri = MediaStore.Files.getContentUri("external")

val mediaColumns = arrayOf(
   FileColumns._ID,
   FileColumns.DISPLAY_NAME,
   FileColumns.MIME_TYPE,
)

val queryArgs = bundleOf(
   // Return only items from the last selection (selected photos access)
   QUERY_ARG_LATEST_SELECTION_ONLY to true,
   // Sort returned items chronologically based on when they were added to the device's storage
   QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC",
   QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?",
   QUERY_ARG_SQL_SELECTION_ARGS to arrayOf(
       FileColumns.MEDIA_TYPE_IMAGE.toString(),
       FileColumns.MEDIA_TYPE_VIDEO.toString()
   )
)

জাভা

Uri externalContentUri = MediaStore.Files.getContentUri("external");

String[] mediaColumns = {
    FileColumns._ID,
    FileColumns.DISPLAY_NAME,
    FileColumns.MIME_TYPE
};

Bundle queryArgs = new Bundle();
queryArgs.putBoolean(MediaStore.QUERY_ARG_LATEST_SELECTION_ONLY, true);
queryArgs.putString(MediaStore.QUERY_ARG_SQL_SORT_ORDER, FileColumns.DATE_ADDED + " DESC");
queryArgs.putString(MediaStore.QUERY_ARG_SQL_SELECTION, FileColumns.MEDIA_TYPE + " = ? OR " + FileColumns.MEDIA_TYPE + " = ?");
queryArgs.putStringArray(MediaStore.QUERY_ARG_SQL_SELECTION_ARGS, new String[] {
    String.valueOf(FileColumns.MEDIA_TYPE_IMAGE),
    String.valueOf(FileColumns.MEDIA_TYPE_VIDEO)
});

অ্যান্ড্রয়েডে প্রাইভেসি স্যান্ডবক্স

অ্যান্ড্রয়েড 15- এ Android-এ গোপনীয়তা স্যান্ডবক্সের সর্বশেষ সংস্করণকে অন্তর্ভুক্ত করে সর্বশেষ Android বিজ্ঞাপন পরিষেবার এক্সটেনশনগুলি অন্তর্ভুক্ত রয়েছে। এই সংযোজনটি এমন প্রযুক্তি বিকাশের জন্য আমাদের কাজের অংশ যা ব্যবহারকারীর গোপনীয়তা উন্নত করে এবং মোবাইল অ্যাপের জন্য কার্যকর, ব্যক্তিগতকৃত বিজ্ঞাপন অভিজ্ঞতা সক্ষম করে। আমাদের গোপনীয়তা স্যান্ডবক্স পৃষ্ঠায় আপনাকে শুরু করতে সহায়তা করার জন্য Android বিকাশকারী পূর্বরূপ এবং বিটা প্রোগ্রামগুলিতে গোপনীয়তা স্যান্ডবক্স সম্পর্কে আরও তথ্য রয়েছে৷

স্বাস্থ্য সংযোগ

Android 15 Android-এর Health Connect- এর আশেপাশে সাম্প্রতিক এক্সটেনশনগুলিকে একীভূত করে, অ্যাপ-সংগৃহীত স্বাস্থ্য ও ফিটনেস ডেটা পরিচালনা ও শেয়ার করার জন্য একটি নিরাপদ এবং কেন্দ্রীভূত প্ল্যাটফর্ম। এই আপডেটটি ফিটনেস , পুষ্টি , ত্বকের তাপমাত্রা, প্রশিক্ষণ পরিকল্পনা এবং আরও অনেক কিছু জুড়ে অতিরিক্ত ডেটা প্রকারের জন্য সমর্থন যোগ করে।

ত্বকের তাপমাত্রা ট্র্যাকিং ব্যবহারকারীদের পরিধানযোগ্য বা অন্যান্য ট্র্যাকিং ডিভাইস থেকে আরও সঠিক তাপমাত্রার ডেটা সঞ্চয় এবং ভাগ করতে দেয়।

প্রশিক্ষণ পরিকল্পনাগুলি হল একটি ব্যবহারকারীকে তাদের ফিটনেস লক্ষ্য অর্জনে সহায়তা করার জন্য কাঠামোগত ওয়ার্কআউট পরিকল্পনা। প্রশিক্ষণ পরিকল্পনা সমর্থনের মধ্যে বিভিন্ন ধরনের সমাপ্তি এবং কর্মক্ষমতা লক্ষ্য অন্তর্ভুক্ত রয়েছে:

Google I/O থেকে অ্যান্ড্রয়েড হেলথ টক সহ অভিযোজনযোগ্য অভিজ্ঞতার বিল্ডিং- এ Android-এ Health Connect-এর সাম্প্রতিক আপডেটগুলি সম্পর্কে আরও জানুন৷

,

Android 15 Android-এর Health Connect- এর আশেপাশে সাম্প্রতিক এক্সটেনশনগুলিকে একীভূত করে, অ্যাপ-সংগৃহীত স্বাস্থ্য ও ফিটনেস ডেটা পরিচালনা ও শেয়ার করার জন্য একটি নিরাপদ এবং কেন্দ্রীভূত প্ল্যাটফর্ম। এই আপডেটটি ফিটনেস , পুষ্টি , ত্বকের তাপমাত্রা, প্রশিক্ষণ পরিকল্পনা এবং আরও অনেক কিছু জুড়ে অতিরিক্ত ডেটা প্রকারের জন্য সমর্থন যোগ করে।

ত্বকের তাপমাত্রা ট্র্যাকিং ব্যবহারকারীদের পরিধানযোগ্য বা অন্যান্য ট্র্যাকিং ডিভাইস থেকে আরও সঠিক তাপমাত্রার ডেটা সঞ্চয় এবং ভাগ করতে দেয়।

প্রশিক্ষণ পরিকল্পনাগুলি হল একটি ব্যবহারকারীকে তাদের ফিটনেস লক্ষ্য অর্জনে সহায়তা করার জন্য কাঠামোগত ওয়ার্কআউট পরিকল্পনা। প্রশিক্ষণ পরিকল্পনা সমর্থনের মধ্যে বিভিন্ন ধরনের সমাপ্তি এবং কর্মক্ষমতা লক্ষ্য অন্তর্ভুক্ত রয়েছে:

Google I/O থেকে অ্যান্ড্রয়েড হেলথ টক সহ অভিযোজনযোগ্য অভিজ্ঞতার বিল্ডিং- এ Android-এ Health Connect-এর সাম্প্রতিক আপডেটগুলি সম্পর্কে আরও জানুন৷

অ্যাপ স্ক্রিন শেয়ারিং

অ্যান্ড্রয়েড 15 অ্যাপ স্ক্রিন শেয়ারিং সমর্থন করে যাতে ব্যবহারকারীরা পুরো ডিভাইস স্ক্রীনের পরিবর্তে শুধুমাত্র একটি অ্যাপ উইন্ডো শেয়ার বা রেকর্ড করতে পারে। Android 14 QPR2-এ প্রথম সক্রিয় করা এই বৈশিষ্ট্যটিতে MediaProjection কলব্যাক রয়েছে যা আপনার অ্যাপকে অ্যাপ স্ক্রিন শেয়ারিং অভিজ্ঞতা কাস্টমাইজ করতে দেয়। মনে রাখবেন যে Android 14 (API লেভেল 34) বা উচ্চতর টার্গেট করা অ্যাপগুলির জন্য, প্রতিটি MediaProjection ক্যাপচার সেশনের জন্য ব্যবহারকারীর সম্মতি প্রয়োজন

ব্যবহারকারীর অভিজ্ঞতা এবং সিস্টেম UI

অ্যান্ড্রয়েড ১৫ অ্যাপ ডেভেলপার এবং ব্যবহারকারীদের তাদের চাহিদা অনুযায়ী ডিভাইস কনফিগার করার জন্য আরও নিয়ন্ত্রণ এবং নমনীয়তা প্রদান করে।

আপনার অ্যাপের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে Android 15-এর সর্বশেষ উন্নতিগুলি কীভাবে ব্যবহার করবেন সে সম্পর্কে আরও জানতে, Google I/O থেকে আপনার Android অ্যাপের ব্যবহারকারীর অভিজ্ঞতা উন্নত করুন টকটি দেখুন।

জেনারেটেড প্রিভিউ API সহ আরও সমৃদ্ধ উইজেট প্রিভিউ

অ্যান্ড্রয়েড 15-এর আগে, উইজেট পিকার প্রিভিউ দেওয়ার একমাত্র উপায় ছিল একটি স্ট্যাটিক ইমেজ বা লেআউট রিসোর্স নির্দিষ্ট করা। এই প্রিভিউগুলি প্রায়ই আসল উইজেটটির চেহারা থেকে উল্লেখযোগ্যভাবে আলাদা হয় যখন এটি হোম স্ক্রিনে স্থাপন করা হয়। এছাড়াও, জেটপ্যাক গ্ল্যান্স দিয়ে স্ট্যাটিক রিসোর্স তৈরি করা যায় না, তাই একজন গ্ল্যান্স ডেভেলপারকে তাদের উইজেট স্ক্রিনশট করতে হবে বা উইজেট প্রিভিউ করার জন্য একটি XML লেআউট তৈরি করতে হবে।

অ্যান্ড্রয়েড 15 জেনারেট করা পূর্বরূপগুলির জন্য সমর্থন যোগ করে। এর মানে হল যে অ্যাপ উইজেট প্রদানকারীরা স্ট্যাটিক রিসোর্সের পরিবর্তে পিকার প্রিভিউ হিসেবে ব্যবহার করার জন্য RemoteViews তৈরি করতে পারে।

অ্যাপগুলি উইজেট বাছাইকারীকে দূরবর্তী দৃশ্য সরবরাহ করতে পারে, যাতে ব্যবহারকারীরা যা দেখতে পাবে তার আরও প্রতিনিধি হতে তারা পিকারে সামগ্রী আপডেট করতে পারে।

পুশ API

অ্যাপগুলি একটি পুশ API এর মাধ্যমে জেনারেটেড প্রিভিউ প্রদান করতে পারে। অ্যাপ্লিকেশানগুলি তাদের জীবনচক্রের যেকোনো সময়ে পূর্বরূপ প্রদান করতে পারে এবং পূর্বরূপ প্রদানের জন্য হোস্টের কাছ থেকে একটি সুস্পষ্ট অনুরোধ গ্রহণ করে না। AppWidgetService এ প্রিভিউ টিকে থাকে, এবং হোস্ট তাদের চাহিদা অনুযায়ী অনুরোধ করতে পারে। নিম্নলিখিত উদাহরণটি একটি XML উইজেট লেআউট সংস্থান লোড করে এবং এটিকে পূর্বরূপ হিসাবে সেট করে:

AppWidgetManager.getInstance(appContext).setWidgetPreview(
   ComponentName(
       appContext,
       SociaLiteAppWidgetReceiver::class.java
   ),
   AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
   RemoteViews("com.example", R.layout.widget_preview)
)

প্রত্যাশিত প্রবাহ হল:

  1. যেকোনো সময়, উইজেট প্রদানকারী setWidgetPreview কল করে। প্রদত্ত প্রিভিউ অন্যান্য প্রদানকারীর তথ্য সহ AppWidgetService এ টিকে থাকে।
  2. setWidgetPreview AppWidgetHost.onProvidersChanged কলব্যাকের মাধ্যমে একটি আপডেট করা প্রিভিউ হোস্টকে অবহিত করে। প্রতিক্রিয়া হিসাবে, উইজেট হোস্ট তার সমস্ত প্রদানকারীর তথ্য পুনরায় লোড করে।
  3. একটি উইজেট পূর্বরূপ প্রদর্শন করার সময়, হোস্ট AppWidgetProviderInfo.generatedPreviewCategories চেক করে, এবং যদি নির্বাচিত বিভাগটি উপলব্ধ থাকে, তাহলে এই প্রদানকারীর জন্য সংরক্ষিত পূর্বরূপ ফেরত দিতে AppWidgetManager.getWidgetPreview কল করে।

setWidgetPreview কখন কল করতে হবে

যেহেতু প্রিভিউ প্রদানের জন্য কোন কলব্যাক নেই, তাই অ্যাপগুলি যেকোন সময়ে প্রিভিউ পাঠানোর জন্য বেছে নিতে পারে যখন তারা চলছে। কত ঘন ঘন প্রিভিউ আপডেট করতে হবে তা নির্ভর করে উইজেটের ব্যবহারের ক্ষেত্রে।

নিম্নলিখিত তালিকাটি পূর্বরূপ ব্যবহারের ক্ষেত্রে দুটি প্রধান বিভাগ বর্ণনা করে:

  • প্রদানকারীরা তাদের উইজেট প্রিভিউতে বাস্তব ডেটা দেখায়, যেমন ব্যক্তিগতকৃত বা সাম্প্রতিক তথ্য। ব্যবহারকারী একবার সাইন ইন করলে বা তাদের অ্যাপে প্রাথমিক কনফিগারেশন সম্পন্ন করলে এই প্রদানকারীরা পূর্বরূপ সেট করতে পারে। এর পরে, তারা তাদের নির্বাচিত ক্যাডেন্সে পূর্বরূপ আপডেট করার জন্য একটি পর্যায়ক্রমিক কাজ সেট আপ করতে পারে। এই ধরনের উইজেটের উদাহরণ একটি ফটো, ক্যালেন্ডার, আবহাওয়া বা সংবাদ উইজেট হতে পারে।
  • প্রোভাইডার যেগুলি প্রিভিউ বা দ্রুত-অ্যাকশন উইজেটগুলিতে স্ট্যাটিক তথ্য দেখায় যা কোনও ডেটা প্রদর্শন করে না। এই প্রদানকারীরা একবার প্রিভিউ সেট করতে পারে, যখন অ্যাপটি প্রথম চালু হয়। এই ধরনের উইজেটের উদাহরণগুলির মধ্যে রয়েছে একটি ড্রাইভ দ্রুত অ্যাকশন উইজেট বা ক্রোম শর্টকাট উইজেট।

কিছু প্রদানকারী হাব মোড পিকারে স্ট্যাটিক প্রিভিউ দেখাতে পারে, কিন্তু হোমস্ক্রিন পিকারে আসল তথ্য। এই সরবরাহকারীদের পূর্বরূপ সেট করতে এই উভয় ব্যবহারের ক্ষেত্রে নির্দেশিকা অনুসরণ করা উচিত।

ছবিতে ছবিতে

অ্যান্ড্রয়েড 15 পিকচার-ইন-পিকচার (পিআইপি) এ পরিবর্তন এনেছে যাতে পিআইপি মোডে প্রবেশ করার সময় আরও মসৃণ রূপান্তর নিশ্চিত করা হয়। এটি তাদের প্রধান UI এর উপরে ওভারলেড থাকা UI উপাদান থাকা অ্যাপগুলির জন্য উপকারী হবে, যা PiP-তে যায়।

বিকাশকারীরা যুক্তি সংজ্ঞায়িত করতে onPictureInPictureModeChanged কলব্যাক ব্যবহার করে যা ওভারলেড UI উপাদানগুলির দৃশ্যমানতা টগল করে৷ PiP এন্টার বা এক্সিট অ্যানিমেশন সম্পন্ন হলে এই কলব্যাকটি ট্রিগার হয়। অ্যান্ড্রয়েড 15 থেকে শুরু করে, PictureInPictureUiState ক্লাসে অন্য রাজ্য অন্তর্ভুক্ত রয়েছে।

এই UI অবস্থার সাথে, Android 15 (API স্তর 35) টার্গেট করা অ্যাপগুলি PiP অ্যানিমেশন শুরু হওয়ার সাথে সাথে isTransitioningToPip() এর সাথে Activity#onPictureInPictureUiStateChanged কলব্যাক আহ্বান করা পর্যবেক্ষণ করবে। এমন অনেক UI উপাদান রয়েছে যা অ্যাপটির জন্য প্রাসঙ্গিক নয় যখন এটি পিআইপি মোডে থাকে, যেমন ভিউ বা লেআউট যাতে পরামর্শ, আসন্ন ভিডিও, রেটিং এবং শিরোনামের মতো তথ্য অন্তর্ভুক্ত থাকে। অ্যাপটি যখন PiP মোডে যায়, তখন এই UI উপাদানগুলি লুকানোর জন্য onPictureInPictureUiStateChanged কলব্যাক ব্যবহার করুন। যখন অ্যাপটি PiP উইন্ডো থেকে ফুল স্ক্রিন মোডে যায়, তখন এই উপাদানগুলিকে আনহাইড করতে onPictureInPictureModeChanged কলব্যাক ব্যবহার করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
        if (pipState.isTransitioningToPip()) {
          // Hide UI elements
        }
    }
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
        if (isInPictureInPictureMode) {
          // Unhide UI elements
        }
    }

অপ্রাসঙ্গিক UI উপাদানগুলির এই দ্রুত দৃশ্যমানতা টগল (একটি PiP উইন্ডোর জন্য) একটি মসৃণ এবং ফ্লিকার-মুক্ত PiP এন্টার অ্যানিমেশন নিশ্চিত করতে সহায়তা করে।

উন্নত 'বিরক্ত করবেন না' নিয়ম

AutomaticZenRule 允许应用自定义注意力机制 管理(勿扰)规则,并确定何时启用或停用 。Android 15 极大地增强了这些规则,旨在提高 用户体验。其中包含以下增强功能:

  • AutomaticZenRule 添加类型,让系统能够应用特殊类型 对某些规则的处理
  • AutomaticZenRule 添加图标,使模式更加丰富 易于识别。
  • triggerDescription 字符串添加到 AutomaticZenRule,用于描述 规则应当对用户生效的条件。
  • 已添加 ZenDeviceEffects 更改为AutomaticZenRule,从而允许规则触发灰度等操作 显示、夜间模式或调暗壁纸。

বিজ্ঞপ্তি চ্যানেলের জন্য ভাইব্রেশন এফেক্ট সেট করুন

Android 15 NotificationChannel.setVibrationEffect ব্যবহার করে চ্যানেলের মাধ্যমে ইনকামিং বিজ্ঞপ্তিগুলির জন্য সমৃদ্ধ ভাইব্রেশন সেট করা সমর্থন করে, যাতে আপনার ব্যবহারকারীরা তাদের ডিভাইসের দিকে না তাকিয়ে বিভিন্ন ধরনের বিজ্ঞপ্তির মধ্যে পার্থক্য করতে পারে।

মিডিয়া প্রজেকশন স্ট্যাটাস বার চিপ এবং অটো স্টপ

মিডিয়া অভিক্ষেপ ব্যক্তিগত ব্যবহারকারীর তথ্য প্রকাশ করতে পারে। একটি নতুন, বিশিষ্ট স্ট্যাটাস বার চিপ ব্যবহারকারীদের যেকোনো চলমান স্ক্রিন প্রজেকশন সম্পর্কে সচেতন করে। ব্যবহারকারীরা স্ক্রিন কাস্টিং, শেয়ারিং বা রেকর্ডিং বন্ধ করতে চিপটিতে ট্যাপ করতে পারেন। এছাড়াও, আরও স্বজ্ঞাত ব্যবহারকারীর অভিজ্ঞতার জন্য, ডিভাইসের স্ক্রীন লক হয়ে গেলে যেকোনও অগ্রগতি স্ক্রীন প্রজেকশন এখন স্বয়ংক্রিয়ভাবে বন্ধ হয়ে যায়।

স্ক্রিন শেয়ারিং, কাস্টিং এবং রেকর্ডিংয়ের জন্য স্ট্যাটাস বার চিপ।

বড় পর্দা এবং ফর্ম ফ্যাক্টর

অ্যান্ড্রয়েড ১৫ আপনার অ্যাপগুলিকে বড় স্ক্রিন, ফ্লিপেবল এবং ফোল্ডেবল সহ অ্যান্ড্রয়েডের ফর্ম ফ্যাক্টরগুলির সর্বাধিক সুবিধা পেতে সহায়তা দেয়।

উন্নত বড় স্ক্রিন মাল্টিটাস্কিং

Android 15 ব্যবহারকারীদের বড় স্ক্রিনের ডিভাইসে মাল্টিটাস্ক করার আরও ভাল উপায় দেয়। উদাহরণস্বরূপ, ব্যবহারকারীরা দ্রুত অ্যাক্সেসের জন্য তাদের প্রিয় স্প্লিট-স্ক্রিন অ্যাপ্লিকেশন সংমিশ্রণগুলি সংরক্ষণ করতে পারে এবং অ্যাপ্লিকেশনগুলির মধ্যে দ্রুত স্যুইচ করতে স্ক্রিনে টাস্কবারটি পিন করতে পারে। এর মানে হল যে আপনার অ্যাপটি অভিযোজিত কিনা তা নিশ্চিত করা আগের চেয়ে অনেক বেশি গুরুত্বপূর্ণ।

Google I/O- এ উপাদান 3 অভিযোজিত লাইব্রেরি সহ অভিযোজিত অ্যান্ড্রয়েড অ্যাপস এবং বিল্ডিং UI তৈরির সেশন রয়েছে যা সাহায্য করতে পারে, এবং আমাদের ডকুমেন্টেশনে আপনাকে বড় স্ক্রিনের জন্য ডিজাইন করতে সহায়তা করার জন্য আরও অনেক কিছু রয়েছে৷

কভার স্ক্রিন সাপোর্ট

আপনার অ্যাপটি এমন একটি সম্পত্তি ঘোষণা করতে পারে যা Android 15 আপনার Application বা Activity সমর্থিত ফ্লিপযোগ্য ডিভাইসের ছোট কভার স্ক্রিনে উপস্থাপন করার অনুমতি দিতে ব্যবহার করে। এই স্ক্রিনগুলিকে Android অ্যাপগুলি চালানোর জন্য সামঞ্জস্যপূর্ণ লক্ষ্য হিসাবে বিবেচনা করা খুব ছোট, কিন্তু আপনার অ্যাপগুলিকে সমর্থন করার জন্য বেছে নিতে পারে, আপনার অ্যাপটিকে আরও জায়গায় উপলব্ধ করে।

সংযোগ

আপনার অ্যাপকে যোগাযোগ এবং ওয়্যারলেস প্রযুক্তির সর্বশেষ অগ্রগতিতে অ্যাক্সেস দেওয়ার জন্য অ্যান্ড্রয়েড 15 প্ল্যাটফর্মটি আপডেট করে।

স্যাটেলাইট সাপোর্ট

Android 15 继续扩大对卫星连接的平台支持,并包含一些界面元素,以确保在整个卫星连接环境中提供一致的用户体验。

应用可以使用 ServiceState.isUsingNonTerrestrialNetwork() 执行以下操作: 检测设备是否连接到卫星,让他们更清楚地了解 可能会导致完全网络服务不可用的原因此外,Android 15 支持短信和彩信应用以及预加载的 RCS 应用,以便使用卫星连接发送和接收消息。

当设备连接到卫星时,系统会显示通知。

মসৃণ NFC অভিজ্ঞতা

Android 15 正在努力打造更顺畅、更可靠的感应式付款体验,同时继续支持 Android 强大的 NFC 应用生态系统。在受支持的设备上,应用可以请求 NfcAdapter 进入观察模式,在该模式下,设备会监听但不会响应 NFC 读卡器,并将应用的 NFC 服务 PollingFrame 对象发送以进行处理。PollingFrame 对象可用于在与 NFC 读卡器进行首次通信之前进行身份验证,在许多情况下,这支持一触式交易。

此外,应用可以在受支持的设备上注册过滤器,以便在有轮询循环活动时收到通知,从而能够与多个感知 NFC 的应用顺畅运行。

ওয়ালেট ভূমিকা

অ্যান্ড্রয়েড 15 একটি ওয়ালেট ভূমিকা প্রবর্তন করে যা ব্যবহারকারীর পছন্দের ওয়ালেট অ্যাপের সাথে কঠোর সংহতকরণের অনুমতি দেয়। এই ভূমিকাটি NFC ডিফল্ট কন্ট্যাক্টলেস পেমেন্ট সেটিং প্রতিস্থাপন করে। ব্যবহারকারীরা সেটিংস > অ্যাপ্লিকেশান > ডিফল্ট অ্যাপ্লিকেশানগুলিতে নেভিগেট করে Wallet ভূমিকা ধারক পরিচালনা করতে পারেন৷

পেমেন্ট বিভাগে নিবন্ধিত AID-এর জন্য NFC ট্যাপ রাউট করার সময় Wallet ভূমিকা ব্যবহার করা হয়। ট্যাপগুলি সর্বদা Wallet রোল হোল্ডারের কাছে যায় যদি না একই AID-এর জন্য নিবন্ধিত অন্য একটি অ্যাপ অগ্রভাগে চলছে।

ওয়ালেট কুইক অ্যাকসেস টাইল সক্রিয় করার সময় কোথায় যেতে হবে তা নির্ধারণ করতেও এই ভূমিকা ব্যবহার করা হয়। যখন ভূমিকাটি "কোনও নয়" তে সেট করা থাকে, তখন দ্রুত অ্যাক্সেস টাইল উপলব্ধ থাকে না এবং অর্থপ্রদানের বিভাগ NFC ট্যাপগুলি শুধুমাত্র অগ্রভাগের অ্যাপে বিতরণ করা হয়৷

নিরাপত্তা

অ্যান্ড্রয়েড ১৫ আপনার অ্যাপের নিরাপত্তা উন্নত করতে, আপনার অ্যাপের ডেটা সুরক্ষিত করতে এবং ব্যবহারকারীদের তাদের ডেটার উপর আরও স্বচ্ছতা এবং নিয়ন্ত্রণ প্রদান করতে সাহায্য করে। ব্যবহারকারীর সুরক্ষা উন্নত করতে এবং নতুন হুমকি থেকে আপনার অ্যাপকে সুরক্ষিত রাখতে আমরা কী করছি তার আরও তথ্যের জন্য গুগল আই/ও থেকে " সেফগার্ডিং ইউজার সিকিউরিটি অন অ্যান্ড্রয়েড" টকটি দেখুন।

অটোফিলের মাধ্যমে ক্রেডেনশিয়াল ম্যানেজারকে একীভূত করুন

从 Android 15 开始,开发者可以将用户名或密码字段等特定视图与 Credential Manager 请求相关联,从而更轻松地在登录过程中提供量身定制的用户体验。当用户聚焦于其中一个视图时,系统会向 Credential Manager 发送相应请求。系统会汇总来自各个提供商的凭据,并在自动填充后备界面(例如内嵌建议或下拉菜单建议)中显示这些凭据。Jetpack androidx.credentials 库是开发者首选的端点,很快将在 Android 15 及更高版本中推出,以进一步增强此功能。

বায়োমেট্রিক প্রম্পটের সাথে একক ট্যাপ সাইন-আপ এবং সাইন-ইন একীভূত করুন

ক্রেডেনশিয়াল ম্যানেজার বায়োমেট্রিক প্রম্পটগুলিকে শংসাপত্র তৈরি এবং সাইন-ইন প্রক্রিয়াগুলিতে সংহত করে , বায়োমেট্রিক প্রম্পটগুলি পরিচালনা করার জন্য প্রদানকারীদের প্রয়োজনীয়তা দূর করে৷ ফলস্বরূপ, শংসাপত্র প্রদানকারীদের শুধুমাত্র বায়োমেট্রিক ফ্লো ফলাফলের সাথে বর্ধিত, তৈরি এবং প্রবাহের ফলাফলের উপর ফোকাস করতে হবে। এই সরলীকৃত প্রক্রিয়াটি আরও দক্ষ এবং সুবিন্যস্ত শংসাপত্র তৈরি এবং পুনরুদ্ধার প্রক্রিয়া তৈরি করে।

এন্ড-টু-এন্ড এনক্রিপশনের জন্য কী ব্যবস্থাপনা

আমরা Android 15-এ E2eeContactKeysManager প্রবর্তন করছি, যা ক্রিপ্টোগ্রাফিক পাবলিক কীগুলির স্টোরেজের জন্য একটি OS-স্তরের API প্রদান করে আপনার Android অ্যাপগুলিতে এন্ড-টু-এন্ড এনক্রিপশন (E2EE) সুবিধা দেয়।

E2eeContactKeysManager ব্যবহারকারীদের তাদের পরিচিতিগুলির সর্বজনীন কীগুলি পরিচালনা এবং যাচাই করার জন্য একটি কেন্দ্রীভূত উপায় দিতে প্ল্যাটফর্ম পরিচিতি অ্যাপের সাথে একীভূত করার জন্য ডিজাইন করা হয়েছে৷

কন্টেন্ট URI-তে অনুমতি পরীক্ষা করা হচ্ছে

অ্যান্ড্রয়েড 15 এপিআইগুলির একটি সেট প্রবর্তন করে যা সামগ্রী ইউআরআইগুলিতে অনুমতি পরীক্ষা করে:

  • Context.checkContentUriPermissionFull : এটি কন্টেন্ট ইউআরআই-এ সম্পূর্ণ অনুমতি পরীক্ষা করে।
  • Activity ম্যানিফেস্ট অ্যাট্রিবিউটের requireContentUriPermissionFromCaller : এটি অ্যাক্টিভিটি লঞ্চের সময় প্রদত্ত কন্টেন্ট URI-তে নির্দিষ্ট অনুমতি প্রয়োগ করে।
  • Activity কলারদের জন্য ComponentCaller ক্লাস : এটি সেই অ্যাপের প্রতিনিধিত্ব করে যা অ্যাক্টিভিটি চালু করেছে।

অ্যাক্সেসযোগ্যতা

অ্যান্ড্রয়েড ১৫ ব্যবহারকারীদের জন্য অ্যাক্সেসিবিলিটি উন্নত করার জন্য বৈশিষ্ট্য যুক্ত করে।

উন্নত ব্রেইল

Android 15-এ, আমরা টকব্যাকের জন্য ব্রেইল ডিসপ্লে সমর্থন করা সম্ভব করেছি যা USB এবং সুরক্ষিত ব্লুটুথ উভয়ের মাধ্যমে HID মান ব্যবহার করছে।

এই স্ট্যান্ডার্ডটি, অনেকটা ইঁদুর এবং কীবোর্ড দ্বারা ব্যবহৃত একটির মতো, সময়ের সাথে সাথে ব্রেইল ডিসপ্লেগুলির একটি বিস্তৃত পরিসরে Android কে সমর্থন করবে৷

আন্তর্জাতিকীকরণ

অ্যান্ড্রয়েড ১৫ এমন বৈশিষ্ট্য এবং ক্ষমতা যোগ করে যা বিভিন্ন ভাষায় একটি ডিভাইস ব্যবহার করার সময় ব্যবহারকারীর অভিজ্ঞতাকে পরিপূরক করে।

CJK ভেরিয়েবল ফন্ট

অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, চাইনিজ, জাপানিজ এবং কোরিয়ান (CJK) ভাষার ফন্ট ফাইল, NotoSansCJK, এখন একটি পরিবর্তনশীল ফন্ট। পরিবর্তনশীল ফন্টগুলি CJK ভাষায় সৃজনশীল টাইপোগ্রাফির জন্য সম্ভাবনা উন্মুক্ত করে। ডিজাইনাররা শৈলীর একটি বিস্তৃত পরিসর অন্বেষণ করতে পারে এবং দৃশ্যত আকর্ষণীয় লেআউট তৈরি করতে পারে যা অর্জন করা আগে কঠিন বা অসম্ভব ছিল।

চাইনিজ, জাপানিজ এবং কোরিয়ান (CJK) ভাষার জন্য পরিবর্তনশীল ফন্ট বিভিন্ন ফন্টের প্রস্থের সাথে কীভাবে উপস্থিত হয়।

আন্তঃচরিত্রের ন্যায্যতা

从 Android 15 开始,可以通过 使用 JUSTIFICATION_MODE_INTER_CHARACTER。“字词间的理由”原为 最初是在 Android 8.0(API 级别 26)中引入的, Justifications 功能为使用 例如中文、日语等。

使用 JUSTIFICATION_MODE_NONE 的日语文本布局。
使用 JUSTIFICATION_MODE_NONE 的英语文本布局。


使用 JUSTIFICATION_MODE_INTER_WORD 的日语文本布局。
使用 JUSTIFICATION_MODE_INTER_WORD 的英语文本布局。


使用 JUSTIFICATION_MODE_INTER_CHARACTER 的日语文本布局。
使用 JUSTIFICATION_MODE_INTER_CHARACTER 的英语文本布局。

স্বয়ংক্রিয় লাইন ব্রেক কনফিগারেশন

Android 从以下语言开始支持基于短语的日语和韩语换行: Android 13(API 级别 33)。不过,虽然基于短语的行分隔符可以提高短文本行的可读性,但对于长文本行,效果并不理想。在 Android 15 中,应用只能使用 LINE_BREAK_WORD_STYLE_AUTO 选项,针对短文本行应用基于短语的行分隔符。此选项会为文本选择最佳字词样式选项。

对于短文本行,则使用基于短语的换行符,功能相同 为 LINE_BREAK_WORD_STYLE_PHRASE,如 以下图片:

对于短文本行,LINE_BREAK_WORD_STYLE_AUTO 应用基于短语的换行符,以提高文本的可读性。 这与应用 LINE_BREAK_WORD_STYLE_PHRASE

对于较长的文本行,LINE_BREAK_WORD_STYLE_AUTO 会使用 no 换行字词样式, LINE_BREAK_WORD_STYLE_NONE,如 以下图片:

对于较长的文本,LINE_BREAK_WORD_STYLE_AUTO 应用不换行的字词样式,以提高文本的可读性。 这与应用 LINE_BREAK_WORD_STYLE_NONE

অতিরিক্ত জাপানি হেনটাইগানা ফন্ট

অ্যান্ড্রয়েড 15-এ, পুরানো জাপানি হিরাগানা (হেনটাইগানা নামে পরিচিত) এর জন্য একটি ফন্ট ফাইল ডিফল্টরূপে বান্ডিল করা হয়। হেনটাইগানা অক্ষরের অনন্য আকারগুলি শিল্পকর্ম বা ডিজাইনে একটি স্বতন্ত্র ফ্লেয়ার যোগ করতে পারে এবং প্রাচীন জাপানি নথিগুলির সঠিক সংক্রমণ এবং বোঝার সংরক্ষণ করতে সহায়তা করে।

জাপানি হেনটাইগানা ফন্টের জন্য অক্ষর এবং পাঠ্য শৈলী।

VideoLAN শঙ্কু কপিরাইট (c) 1996-2010 VideoLAN। এই লোগো বা একটি পরিবর্তিত সংস্করণ যে কেউ VideoLAN প্রকল্প বা VideoLAN টিম দ্বারা বিকশিত কোনো পণ্য উল্লেখ করার জন্য ব্যবহার বা পরিবর্তিত হতে পারে, কিন্তু প্রকল্পের দ্বারা অনুমোদন নির্দেশ করে না।

Vulkan এবং Vulkan লোগো হল Khronos Group Inc এর নিবন্ধিত ট্রেডমার্ক।

OpenGL হল একটি নিবন্ধিত ট্রেডমার্ক এবং OpenGL ES লোগো হল Hewlett Packard Enterprise-এর একটি ট্রেডমার্ক যা Khronos-এর অনুমতিতে ব্যবহৃত হয়।