1page.title=Android N cho Nhà phát triển 2meta.tags="preview", "androidn" 3page.tags="preview", "developer preview" 4page.image=images/cards/card-n-apis_2x.png 5@jd:body 6 7 8 9 10<div id="tb-wrapper"> 11<div id="tb"> 12 <h2>Các tính năng chính cho nhà phát triển</h2> 13 <ol> 14 <ul style="list-style-type:none;"> 15 <li><a href="#multi-window_support">Hỗ trợ đa cửa sổ</a></li> 16 <li><a href="#notification_enhancements">Thông báo</a></li> 17 <li><a href="#jit_aot">Biên dịch JIT/AOT</a></li> 18 <li><a href="#quick_path_to_app_install">Cài đặt ứng dụng nhanh chóng</a></li> 19 <li><a href="#doze_on_the_go">Chế độ Ngủ sâu khi di chuyển</a></li> 20 <li><a href="#background_optimizations">Tối ưu hóa chạy ngầm</a></li> 21 <li><a href="#data_saver">Tiết kiệm dữ liệu</a></li> 22 <li><a href="#tile_api">API cho ô Cài đặt nhanh</a></li> 23 <li><a href="#number-blocking">Chặn số</a></li> 24 <li><a href="#call_screening">Sàng lọc cuộc gọi</a></li> 25 <li><a href="#multi-locale_languages">Bản địa và ngôn ngữ</a></li> 26 <li><a href="#icu4">API ICU4J trong Android</a></li> 27 <li><a href="#gles_32">API OpenGL ES 3.2</a></li> 28 <li><a href="#android_tv_recording">Ghi lại trên Android TV</a></li> 29 <li><a href="#android_for_work">Android cho Công việc</a></li> 30 <li><a href="#accessibility_enhancements">Trợ năng</a></li> 31 <li><a href="#direct_boot">Khởi động Trực tiếp</a></li> 32 <li><a href="#key_attestation">Chứng thực khóa</a></li> 33 <li><a href="#network_security_config">Cấu hình Bảo mật mạng</a></li> 34 <li><a href="#default_trusted_ca">CA an toàn mặc định</a></li> 35 <li><a href="apk_signature_v2">Lược đồ chữ ký số v2 cho tệp APK</a></li> 36 <li><a href="#scoped_directory_access">Truy cập thư mục theo phạm vi</a></li> 37 </ol> 38</div> 39</div> 40 41 42 43<p>Android N vẫn đang trong quá trình phát triển nhưng bây giờ bạn có thể dùng thử 44dưới dạng N Developer Preview. Các phần dưới đây sẽ nêu bật một số 45tính năng mới cho nhà phát triển. </p> 46 47<p> 48 Bạn cần xem <a href="{@docRoot}preview/behavior-changes.html">Các thay đổi Hành vi</a> để biết được 49 những phần thay đổi của nền tảng có thể ảnh hưởng đến ứng dụng của bạn, hãy xem 50 các hướng dẫn cho nhà phát triển để biết thêm về những tính năng chính và tải xuống tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> để biết chi tiết về 51 các API mới. 52</p> 53 54<h2 id="multi-window_support">Hỗ trợ đa cửa sổ</h2> 55 56 57<p>Trong Android N, chúng tôi sẽ đưa vào nền tảng một tính năng đa nhiệm mới 58 rất được mong đợi — hỗ trợ đa cửa sổ. </p> 59 60 <p>Giờ đây người dùng có thể nhanh chóng mở đồng thời hai ứng dụng trên màn hình. </p> 61 <ul> 62 <li>Trên điện thoại và máy tính bảng 63chạy Android N, người dùng có thể chạy hai ứng dụng song song hai bên hoặc 64 trên dưới trong chế độ chia đôi màn hình. Người dùng có thể thay đổi kích thước của ứng dụng bằng cách kéo 65thanh phân chia ở giữa. </li> 66 67<li>Trên thiết bị Android TV, các ứng dụng có thể tự đặt vào <a href="{@docRoot}preview/features/picture-in-picture.html">chế độ 68hình-trong-hình</a>, cho phép ứng dụng tiếp tục hiển thị nội dung khi người dùng duyệt web hoặc 69tương tác với ứng dụng khác. Hãy xem bên dưới để biết thêm thông tin. </li> 70 </ul> 71 72<div class="col-4of10"> 73<img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" /> 74<p class="img-caption"> 75 <strong>Hình 1.</strong> Các ứng dụng chạy trong chế độ chia màn hình. 76</p> 77 </div> 78 79<p>Đặc biệt là trên máy tính bảng và các thiết bị màn hình lớn khác, việc hỗ trợ đa cửa sổ 80cho phép bạn mang lại những cách thức mới thu hút người dùng. Thậm chí bạn còn có thể cho phép kéo thả trong 81ứng dụng để người dùng kéo nội dung một cách thuận tiện vào hoặc ra ngoài ứng dụng của bạn — đây là một cách 82nâng cao trải nghiệm của người dùng rất hiệu quả. </p> 83 84<p>Thêm tính năng hỗ trợ đa màn hình vào ứng dụng của bạn và cấu hình cách thức 85xử lý hiển thị đa cửa sổ là điều rất đơn giản. Ví dụ, bạn có thể chỉ định kích thước 86tối thiểu cho phép của hoạt động, ngăn người dùng thay đổi kích thước của hoạt động nhỏ hơn 87kích thước đó. Bạn cũng có thể vô hiệu hóa hiển thị đa cửa sổ cho ứng dụng của mình, giúp 88 đảm bảo hệ thống sẽ chỉ hiển thị ứng dụng của bạn ở chế độ toàn màn hình.</p> 89 90<p> 91 Để biết thêm thông tin, hãy xem tài liệu cho nhà phát triển <a href="{@docRoot}preview/features/multi-window.html">Hỗ trợ đa cửa sổ</a> 92. 93</p> 94 95<h2 id="notification_enhancements">Cải tiến thông báo</h2> 96 97<p>Chúng tôi đã thiết kế lại thông báo trong Android N để chúng được sử dụng dễ dàng và nhanh 98hơn. Một số các thay đổi bao gồm:</p> 99 100<ul> 101 <li> 102 <strong>Cập nhật Mẫu</strong>: Chúng tôi đã cập nhật các mẫu thông báo để 103 tạo điểm nhấn mới cho ảnh gây ấn tượng và ảnh đại diện. Nhà phát triển sẽ có thể 104 tận dụng các mẫu mới nhưng chỉ cần thực hiện một số chỉnh sửa nhỏ trong mã nguồn của họ. 105 </li> 106 107 <li> 108 <strong>Thông báo gộp</strong>: Hệ thống có thể nhóm các tin nhắn 109 lại với nhau, ví dụ như theo chủ đề tin nhắn và hiển thị thành nhóm. Người dùng có thể 110 thực hiện các thao tác như Hủy hoặc Lưu trữ chúng ngay tại chỗ. Nếu bạn từng 111 triển khai các thông báo cho Android Wear thì bạn đã làm quen với 112 mô hình này. 113 </li> 114 115 <li> 116 <strong>Trả lời trực tiếp</strong>: Đối với những ứng dụng giao tiếp theo thời gian thực, 117 hệ thống Android sẽ hỗ trợ trả lời ngay tại chỗ để người dùng có thể nhanh chóng phản hồi lại 118 một tin nhắn SMS hoặc tin nhắn văn bản trực tiếp bên trong giao diện thông báo đó. 119 </li> 120 121 <li> 122 <strong>Dạng xem tùy chỉnh</strong>: Hai API mới cho phép bạn sử dụng các trang trí 123 hệ thống như tiêu đề và hành động của thông báo khi sử dụng các dạng xem 124 tùy chỉnh trong thông báo. 125 </li> 126</ul> 127 128<div class="col-4of12"> 129 <img src="{@docRoot}images/android-7.0/notifications-1.png" alt="" style="padding:.5em;max-width:226px"> 130</div> 131 132<div class="col-4of12"> 133 <img src="{@docRoot}images/android-7.0/notifications-3.png" alt="" style="padding:.5em;max-width:226px"> 134</div> 135 136<div class="col-4of12"> 137 <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px"> 138</div> 139 140 141<p class="img-caption"> 142 <strong>Hình 2.</strong> Thông báo gộp và trả lời trực tiếp. 143</p> 144 145<p>Hãy xem 146 hướng dẫn về <a href="{@docRoot}preview/features/notification-updates.html">Thông báo</a> 147 để biết cách triển khai các tính năng mới này.</p> 148 149 150 151<h2 id="jit_aot">Biên dịch JIT/AOT theo cấu hình</h2> 152 153<p>Trong Android N, chúng tôi đã bổ sung một trình biên dịch Just in Time (JIT) có mã được cấu hình cho 154ART, cho phép nó nâng cao hiệu năng của các ứng dụng Android tức thì khi 155chạy. Trình biên dịch JIT bổ trợ thêm cho trình biên dịch Ahead of Time (AOT) của ART 156và giúp cải hiện hiệu năng thời gian chạy, tiết kiệm không gian lưu trữ và tăng tốc độ các bản cập nhật của 157ứng dụng và cập nhật của hệ thống.</p> 158 159<p>Biên dịch theo cấu hình cho phép ART quản lý quá trình biên dịch AOT/JIT của từng ứng dụng 160tùy theo sử dụng thực tế cũng như các điều kiện trên thiết bị. Ví 161dụ, ART sẽ duy trì một cấu hình cho các phương thức hay dùng nhất của mỗi ứng dụng và có thể biên dịch trước 162rồi tạo bộ đệm cho các phương thức đó để có hiệu năng cao nhất. Những phần khác của ứng dụng 163sẽ được giữ nguyên không biên dịch cho đến khi chúng thực sự được sử dụng.</p> 164 165<p>Bên cạnh nâng cao hiệu năng cho các phần chính của ứng dụng, quá trình biên dịch 166theo cấu hình còn giúp giảm tổng lượng RAM được sử dụng của ứng dụng, bao gồm cả các 167tệp nhị phân liên quan. Tính năng này đặc biệt quan trọng trên các thiết bị ít bộ nhớ.</p> 168 169<p>ART sẽ quản lý quá trình biên dịch theo cấu hình bằng cách giảm tối thiểu tác động đến 170pin của thiết bị. Nó sẽ tiến hành quá trình biên dịch trước chỉ khi nào thiết bị nhàn rỗi và 171đang sạc, giúp tiết kiệm thời gian và pin bằng cách thực hiện công việc đó trước.</p> 172 173<h2 id="quick_path_to_app_install">Cài đặt ứng dụng nhanh chóng</h2> 174 175<p>Một trong những lợi ích dễ thấy nhất của trình biên dịch JIT của ART là tốc độ cài đặt 176ứng dụng và cập nhật hệ thống. Ngay cả các ứng dụng lớn cần vài phút để 177tối ưu và cài đặt trong Android 6.0 thì giờ đây có thể cài đặt chỉ trong một vài 178giây. Các cập nhật cho hệ thống cũng sẽ nhanh hơn vì không còn bước tối ưu hóa nữa. </p> 179 180<h2 id="doze_on_the_go">Chế độ Ngủ sâu khi di chuyển...</h2> 181 182<p>Chế độ Ngủ sâu đã được giới thiệu trong Android 6.0. Đây là một chế độ của hệ thống giúp tiết kiệm pin bằng cách trì hoãn 183các hoạt động CPU và mạng của ứng dụng khi thiết bị đang nhàn rỗi, ví dụ như khi thiết bị 184đang nằm trên bàn hoặc trong ngăn kéo. </p> 185 186<p>Giờ đây Chế độ Ngủ sâu trong Android N đã được cải tiến thêm và tiết kiệm pin ngay cả khi đang di chuyển. 187Bất kỳ khi nào màn hình đang tắt trong một khoảng thời gian và thiết bị không được cắm sạc thì 188Chế độ Ngủ sâu sẽ áp dụng tập con của các hạn chế CPU và mạng quen thuộc đối với các ứng dụng. 189Điều này có nghĩa là người dùng có thể tiết kiệm pin ngay cả khi đang mang thiết bị trong túi 190của họ.</p> 191 192 193<img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" /> 194<p class="img-caption"> 195 <strong>Hình 3.</strong> Chế độ Ngủ sâu đang áp dụng 196 các hạn chế để cải thiện thời lượng pin ngay cả khi thiết bị không được đặt một chỗ. 197</p> 198 199 200<p>Sau một khoảng thời gian ngắn khi màn hình tắt và thiết bị chỉ chạy bằng nguồn pin, Chế độ Ngủ sâu 201sẽ hạn chế truy cập mạng và trì hoãn các tác vụ, đồng bộ. Trong các khoảng thời gian 202bảo trì ngắn, các ứng dụng sẽ được phép truy cập mạng và mọi tác vụ/đồng bộ 203bị trì hoãn sẽ được thực thi. Bật màn hình hoặc cắm sạc vào thiết bị sẽ đưa 204thiết bị thoát khỏi Chế độ Ngủ sâu.</p> 205 206<p>Khi để thiết bị nằm một chỗ lần nữa với màn hình được tắt và chạy bằng pin trong một 207khoảng thời gian thì Chế độ Ngủ sâu sẽ áp dụng toàn bộ các hạn chế CPU và mạng đối với {@link 208android.os.PowerManager.WakeLock}, báo thức {@link android.app.AlarmManager} và quét 209GPS/Wi-Fi.</p> 210 211<p>Bạn có thể áp dụng các thực hành tốt nhất tương tự để điều chỉnh ứng dụng của mình cho Chế độ Ngủ sâu cho dù 212thiết bị có đang di chuyển hay đứng yên. Do đó, nếu bạn đã cập nhật ứng dụng để xử lý 213Chế độ Ngủ sâu một cách tinh tế thì bạn hoàn toàn yên tâm. Nếu không, hãy tiến hành <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">làm cho 214 ứng dụng thích ứng với Chế độ Ngủ sâu</a> ngay.</p> 215 216<h2 id="background_optimizations">Dự án Svelte: Tối ưu hóa chạy ngầm</h2> 217 218<p>Dự án Svelte là một nỗ lực liên tục nhằm tối giảm sử dụng RAM của hệ thống và các ứng dụng 219trên khắp hệ sinh thái các thiết bị Android. Trong Android N, dự án 220Svelte tập trung vào việc tối ưu hóa cách thức các ứng dụng chạy ngầm. </p> 221 222<p>Xử lý chạy ngầm là một phần quan trọng của hầu hết các ứng dụng. Khi sử dụng đúng cách, nó 223có thể giúp cho trải nghiệm người dùng của bạn trở nên tuyệt vời — tức thì, nhanh chóng và nhận biết được bối cảnh. 224Khi không sử dụng đúng cách, xử lý chạy ngầm có thể tiêu tốn RAM (và 225pin) một cách không cần thiết cũng như ảnh hưởng đến hiệu năng hệ thống cho các ứng dụng khác. </p> 226 227<p>Kể từ Android 5.0, {@link android.app.job.JobScheduler} đã trở thành 228cách thức được ưu tiên để thực hiện công việc chạy ngầm thích hợp 229cho người dùng. Ứng dụng có thể lên lịch cho các tác vụ trong khi cho phép hệ thống tối ưu hóa dựa trên 230các điều kiện về bộ nhớ, nguồn điện và kết nối. JobScheduler đem lại khả năng kiểm soát và 231sự đơn giản, và chúng tôi muốn mọi ứng dụng đều sử dụng nó. </p> 232 233<p> 234 Một giải pháp hiệu quả khác là <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager"> 235 <code>GCMNetworkManager</code></a>, thuộc một phần của Dịch vụ Google Play, cho phép 236 lên lịch tác vụ tương tự với khả năng tương thích trên các phiên bản Android 237 cũ. 238</p> 239 240<p>Chúng tôi đang tiếp tục kế thừa <code>JobScheduler</code> và 241<code>GCMNetworkManager</code> để đáp ứng nhiều hơn 242các trường hợp sử dụng của bạn — ví dụ như trong Android N giờ đây bạn đã có thể lên lịch cho công việc 243chạy ngầm dựa vào những thay đổi trong các Trình cung cấp Nội dung. Đồng thời, chúng tôi đang tiến hành 244loại bỏ một số mẫu cũ có thể làm giảm hiệu năng hệ thống, 245đặc biệt trên các thiết bị ít bộ nhớ.</p> 246 247<p>Trong Android N, chúng tôi sẽ loại bỏ ba truyền phát không biểu thị được sử dụng phổ biến — 248{@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link 249 android.hardware.Camera#ACTION_NEW_PICTURE} và {@link 250 android.hardware.Camera#ACTION_NEW_VIDEO} — bởi vì các truyền phát này có thể đánh thức 251các tiến trình chạy ngầm của nhiều ứng dụng cùng lúc và sử dụng quá mức bộ nhớ và pin. Nếu 252ứng dụng của bạn đang nhận các truyền phát này thì hãy tận dụng N Developer Preview để 253 chuyển sang <code>JobScheduler</code> và các API liên quan khác thay thế. </p> 254 255<p> 256 Hãy xem tài liệu <a href="{@docRoot}preview/features/background-optimization.html">Tối ưu hóa 257 Chạy ngầm</a> để biết thêm chi tiết. 258</p> 259 260 261<h2 id="data_saver">Tiết kiệm dữ liệu</h2> 262 263<div class="col-5of12" style="margin-right:1.5em;"> 264<img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd"> 265 266<p class="img-caption" style="padding-right:2em;"> 267 <strong>Hình 4.</strong> Tính năng Tiết kiệm dữ liệu trong mục Settings. 268</p> 269 </div> 270 271<p>Trong vòng đời của một thiết bị di động thì chi phí gói cước dữ liệu di động về cơ bản 272sẽ cao hơn giá thành của chính thiết bị đó. Đối với nhiều người dùng, dữ liệu di động là một 273tài nguyên đắt đỏ họ muốn sử dụng tiết kiệm. </p> 274 275<p>Android N đã đưa vào chế độ Tiết kiệm dữ liệu, một dịch vụ hệ thống mới giúp giảm 276sử dụng dữ liệu di động, cho dù là chuyển vùng, gần đến kỳ thanh toán cước, 277hoặc trên một gói dữ liệu trả trước khiêm tốn. Tiết kiệm dữ liệu cho người dùng kiểm soát cách thức ứng dụng 278sử dụng dữ liệu di động và cho phép nhà phát triển cung cấp dịch vụ hiệu quả hơn khi Tiết kiệm 279dữ liệu được bật. </p> 280 281<p>Khi người dùng bật Tiết kiệm dữ liệu trong <strong>Settings</strong> và thiết bị đang 282sử dụng một mạng có đo lưu lượng thì hệ thống sẽ chặn việc sử dụng dữ liệu chạy ngầm và truyền tín hiệu cho ứng dụng 283để sử dụng ít dữ liệu hơn ở tiền cảnh bất cứ khi nào có thể — chẳng hạn như bằng cách giới hạn 284bit rate để truyền phát, giảm chất lượng hình ảnh, trì hoãn tạo trước bộ đệm để tối ưu, 285v.v. Người dùng có thể lập danh sách các ứng dụng cụ thể được phép sử dụng 286dữ liệu có tính lưu lượng được chạy ngầm ngay cả khi Tiết kiệm dữ liệu được bật.</p> 287 288<p>Android N mở rộng lớp {@link android.net.ConnectivityManager} để cung cấp cho các ứng dụng một 289cách thức <a href="{@docRoot}preview/features/data-saver.html#status">truy xuất 290các tùy chọn Tiết kiệm dữ liệu của người dùng</a> và <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">theo dõi 291các thay đổi của tùy chọn</a>. Mọi ứng dụng cần kiểm tra xem người dùng đó đã bật Tiết kiệm 292Dữ liệu hay chưa và cố gắng giới hạn sử dụng dữ liệu chạy ở tiền cảnh và chạy ngầm.</p> 293 294 295<h2 id="tile_api">API cho ô Cài đặt nhanh</h2> 296 297 298<div style="float:right;max-width:320px"> 299<img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;"> 300 301<p class="img-caption" style="padding-left:2em;"> 302 <strong>Hình 5.</strong> Các ô Cài đặt nhanh trong vùng hiển thị thông báo. 303</p> 304 305 306 </div><p>Cài đặt nhanh là một cách phổ biến và đơn giản để hiển thị các cài đặt và hành động quan trọng, 307trực tiếp từ khu vực thông báo. Trong Android N, chúng tôi đã mở rộng phạm vi của 308Cài đặt nhanh để khiến nó trở nên hữu ích và thuận tiện hơn nữa. </p> 309 310<p>Chúng tôi đã thêm không gian cho các ô Cài đặt nhanh mà người dùng có thể 311truy cập trên toàn bộ một vùng hiển thị được phân trang bằng cách vuốt sang trái hoặc phải. Chúng tôi cũng 312cho người dùng kiểm soát những ô Cài đặt nhanh nào sẽ xuất hiện và vị trí xuất hiện 313của chúng — người dùng chỉ cần kéo và thả để thêm hoặc di chuyển các ô. </p> 314 315<p>Đối với nhà phát triển, Android N cũng bổ sung một API mới cho phép định nghĩa các ô 316 Cài đặt nhanh của riêng bạn giúp người dùng dễ dàng truy cập tới các điều khiển và hành động quan trọng trong ứng dụng của bạn.</p> 317 318<p> 319 Các ô Cài đặt nhanh được dành riêng cho các điều khiển hoặc hành động 320 khẩn cấp hoặc thường xuyên được sử dụng, không nên dùng làm lối tắt để 321 khởi chạy một ứng dụng. 322</p> 323 324<p> 325 Một khi đã định nghĩa các ô của mình bạn có thể làm nổi chúng lên trước người dùng để họ có thể thêm 326 các ô này vào Cài đặt nhanh bằng cách chỉ cần kéo và thả. 327</p> 328 329<p> 330 Để biết thêm thông tin về việc tạo một ô ứng dụng, hãy xem 331 <code>android.service.quicksettings.Tile</code> trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> có thể tải xuống. 332</p> 333 334 335 336<h2 id="number-blocking">Chặn số</h2> 337 338<p>Android N đã hỗ trợ chặn số điện thoại trong nền tảng này và cung cấp một 339 API khuôn khổ cho phép các nhà cung cấp dịch vụ duy trì một danh sách số bị chặn. 340Ứng dụng SMS mặc định, ứng dụng gọi điện mặc định và các ứng dụng của nhà cung cấp có thể đọc và 341ghi vào danh sách số bị chặn. Các ứng dụng khác không thể truy cập vào danh sách này.</p> 342 343<p>Thông qua việc đưa chặn số thành một tính năng tiêu chuẩn của nền tảng, Android sẽ cung cấp 344cách thức thống nhất để các ứng dụng hỗ trợ chặn số trên một loạt các 345thiết bị. Những lợi ích mà ứng dụng có thể tận dụng gồm:</p> 346 347<ul> 348 <li> Số bị chặn cuộc gọi cũng sẽ bị chặn tin nhắn văn bản 349 <li> Số bị chặn có thể được duy trì qua các lần thiết lập lại và qua nhiều thiết bị thông qua tính năng Sao lưu & 350Khôi phục 351 <li> Nhiều ứng dụng có thể sử dụng cùng một danh sách số bị chặn 352</ul> 353 354<p>Ngoài ra, việc tích hợp ứng dụng của nhà mạng thông qua Android cũng đồng nghĩa là các nhà mạng có thể 355đọc danh sách số bị chặn trên thiết bị và thực hiện chặn số từ phía nhà cung cấp dịch vụ 356cho người dùng để ngăn các cuộc gọi và tin nhắn văn bản không mong muốn tiếp cận người dùng 357thông qua bất kỳ phương tiện nào, ví dụ như điểm cuối VOIP hoặc điện thoại chuyển cuộc gọi.</p> 358 359<p> 360 Để biết thêm thông tin, hãy xem <code>android.provider.BlockedNumberContract</code> 361 trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo 362 API</a> có thể tải xuống. 363</p> 364 365<h2 id="call_screening">Sàng lọc cuộc gọi</h2> 366 367<p> 368 Android N cho phép ứng dụng gọi điện mặc định sàng lọc các cuộc gọi đến. Ứng dụng 369 gọi điện thực hiện điều này bằng cách thực thi <code>CallScreeningService</code> mới, 370 cho phép ứng dụng gọi điện thực hiện một số hành động dựa trên 371 {@link android.telecom.Call.Details Call.Details} của cuộc gọi đến như: 372</p> 373 374<ul> 375 <li> Từ chối cuộc gọi đến 376 <li> Không cho phép cuộc gọi lưu trong nhật ký cuộc gọi 377 <li> Không hiển thị thông báo về cuộc gọi cho người dùng 378</ul> 379 380<p> 381 Để biết thêm thông tin, hãy xem <code>android.telecom.CallScreeningService</code> 382 trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo 383 API</a> có thể tải xuống. 384</p> 385 386 387<h2 id="multi-locale_languages">Hỗ trợ đa bản địa, thêm nhiều ngôn ngữ</h2> 388 389 390<p>Android N cho phép người dùng chọn <strong>đa bản địa</strong> trong Settings, 391để hỗ trợ tốt hơn cho các trường hợp song ngữ. Các ứng dụng có thể sử dụng 392một API mới để truy xuất các bản địa được chọn của người dùng và sau đó mang đến 393trải nghiệm người dùng tinh tế hơn cho người dùng đa bản địa — như hiển thị các kết quả tìm kiếm bằng 394nhiều ngôn ngữ và không yêu cầu dịch các trang web sang ngôn ngữ mà 395người dùng đã biết.</p> 396 397<p>Ngoài hỗ trợ đa bản địa, Android N cũng mở rộng danh sách các ngôn ngữ 398khả dụng đối với người dùng. Nền tảng này cung cấp hơn 25 biến thể cho các ngôn ngữ 399được sử dụng phổ biến như Tiếng Anh, Tây Ban Nha, Pháp và Ả-rập. Nó cũng bổ sung hỗ trợ 400một phần cho hơn 100 ngôn ngữ mới.</p> 401 402<p>Các ứng dụng có thể truy xuất danh sách bộ bản địa theo người dùng bằng cách gọi <code>LocaleList.GetDefault()</code>. Để hỗ trợ số lượng bản địa mở rộng, Android N đang thay đổi cách thức 403phân giải tài nguyên. Hãy đảm bảo bạn kiểm tra và xác minh rằng ứng dụng của mình 404đang hoạt động như mong muốn theo lô-gic phân giải tài nguyên mới này.</p> 405 406<p>Để tìm hiểu về hành vi phân giải tài nguyên mới và các thực hành tốt nhất bạn nên 407thực hiện theo, hãy xem mục <a href="{@docRoot}preview/features/multilingual-support.html">Hỗ trợ đa ngôn ngữ</a>.</p> 408 409<h2 id="icu4">API ICU4J trong Android</h2> 410 411<p> 412 Android N đã cung cấp một tập nhỏ các API <a href="http://site.icu-project.org/">ICU4J</a> trong khuôn khổ Android thuộc 413 gói <code>android.icu</code>. Việc chuyển nhập sang rất dễ dàng và hầu hết chỉ liên quan đến 414 việc đổi từ không gian tên <code>com.java.icu</code> thành 415 <code>android.icu</code>. Nếu bạn đang sử dụng gói ICU4J trong ứng dụng 416 của mình thì việc chuyển đổi sang các API <code>android.icu</code> được cung cấp trong khuôn khổ 417 Android có thể giúp làm giảm đáng kể kích thước của tệp APK. 418</p> 419 420<p> 421 Để tìm hiểu thêm về API ICU4J trên Android, hãy xem <a href="{@docRoot}preview/features/icu4j-framework.html">Hỗ trợ ICU4J</a>. 422</p> 423 424 425 426<h2 id="gles_32">API OpenGL™ ES 3.2</h2> 427 428<p>Android N bổ sung các giao diện khuôn khổ và hỗ trợ nền tảng cho OpenGL ES 3.2, bao gồm:</p> 429 430<ul> 431 <li> Mọi phần mở rộng trong <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">Gói Tiện ích mở rộng Android</a></a> (AEP) ngoại trừ <code>EXT_texture_sRGB_decode</code> 432 <li> Bộ đệm khung hình dấu chấm động cho HDR và tạo bóng trì hoãn. 433 <li> Các lệnh vẽ BaseVertex cho phép chia gói và truyền phát hiệu quả hơn. 434 <li> Kiểm soát truy cập bộ đệm mạnh mẽ để giảm phí tổn quản lý của WebGL. 435</ul> 436 437<p>API khuôn khổ cho OpenGL ES 3.2 trên Android N được cung cấp với lớp 438<code>GLES32</code>. Khi sử dụng OpenGL ES 3.2, hãy đảm bảo khai báo 439yêu cầu trong tệp bản kê khai của bạn bằng thẻ <code><uses-feature></code> và 440thuộc tính <code>android:glEsVersion</code>. </p> 441 442<p>Để biết thông tin về sử dụng OpenGL ES, bao gồm cách kiểm tra phiên bản 443 OpenGL ES được hỗ trợ của thiết bị tại thời gian chạy, hãy xem mục <a href="{@docRoot}guide/topics/graphics/opengl.html">Hướng dẫn API OpenGL ES</a>.</p> 444 445 446<h2 id="android_tv_recording">Ghi lại trên Android TV</h2> 447 448<p>Android N bổ sung khả năng ghi và phát lại nội dung từ các dịch vụ 449nguồn vào của Android TV thông qua các API ghi lại. Được xây dựng dựa trên các API 450chuyển dịch thời gian sẵn có, các dịch vụ nguồn vào TV có thể kiểm soát dữ liệu của kênh nào được phép ghi lại, cách thức 451lưu trữ các phiên được ghi lại cũng như quản lý tương tác của người dùng với nội dung ghi lại. </p> 452 453<p>Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/tv-recording-api.html">API ghi lại của Android TV</a>.</p> 454 455 456<h2 id="android_for_work">Android cho Công việc</h2> 457 458<p>Android cho Công việc bổ sung nhiều tính năng mới và các API cho thiết bị chạy Android N. 459Dưới đây là một số điểm nổi bật — để xem danh sách đầy đủ các cập nhật của Android N 460liên quan đến Android cho Công việc, vui lòng xem Các thay đổi của Android cho Công việc.</p> 461 462<h3 id="work_profile_security_challenge">Thử thách bảo mật cấu hình công việc </h3> 463 464<p> 465 Người sở hữu cấu hình có thể chỉ định một thử thách bảo mật riêng cho các ứng dụng đang chạy trong 466 cấu hình công việc. Thử thách công việc được hiển thị khi người dùng cố gắng mở 467 bất kỳ ứng dụng công việc nào. Hoàn tất thành công thử thách bảo mật sẽ mở khóa 468 cấu hình công việc và giải mã nó nếu cần. Đối với người sở hữu cấu hình, 469 <code>ACTION_SET_NEW_PASSWORD</code> sẽ yêu cầu người dùng đặt một thử thách 470 công việc và <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> sẽ yêu cầu 471 người dùng đặt khóa thiết bị. 472</p> 473 474<p> 475 Người sở hữu cấu hình có thể đặt các chính sách mật khẩu riêng biệt cho thử thách công việc 476 (như độ dài mã PIN cần thiết hoặc có thể sử dụng dấu vân tay 477 để mở khóa cấu hình hay không) bằng <code>setPasswordQuality()</code>, 478 <code>setPasswordMinimumLength()</code> và các phương thức liên quan. Người sở hữu 479 cấu hình cũng có thể cài khóa thiết bị bằng thực thể <code>DevicePolicyManager</code> 480 được trả về bởi phương thức <code>getParentProfileInstance()</code> mới. 481 Ngoài ra, người sở hữu cấu hình có thể tùy chỉnh màn hình xác thực thông tin cho 482 thử thách công việc bằng các phương thức <code>setOrganizationColor()</code> và 483 <code>setOrganizationName()</code> mới. 484</p> 485<h3 id="turn_off_work">Tắt công việc </h3> 486 487<p>Trên một thiết bị có cấu hình công việc, người dùng có thể bật hoặc tắt chế độ công việc. Khi chế độ công việc được 488tắt người dùng được quản lý sẽ tạm thời bị tắt, khiến vô hiệu hóa các ứng dụng 489cấu hình công việc, đồng bộ chạy ngầm và các thông báo. Điều này bao gồm cả ứng dụng 490của người sở hữu cấu hình. Khi chế độ công việc bị tắt, hệ thống sẽ hiển thị biểu tượng 491trạng thái liên tục để nhắc người dùng đó rằng họ không thể khởi chạy các ứng dụng công việc. Trình khởi chạy 492sẽ chỉ báo rằng các ứng dụng và widget công việc không khả dụng. </p> 493 494<h3 id="always_on_vpn">VPN luôn bật </h3> 495 496<p>Người sở hữu thiết bị và người sở hữu cấu hình có thể đảm bảo rằng những ứng dụng công việc luôn kết nối 497thông qua một VPN chỉ định. Hệ thống sẽ tự động khởi động VPN đó sau khi 498thiết bị khởi động.</p> 499 500<p> 501 Các phương thức <code>DevicePolicyManager</code> mới gồm 502 <code>setAlwaysOnVpnPackage()</code> và 503 <code>getAlwaysOnVpnPackage()</code>. 504</p> 505 506<p>Do các dịch vụ VPN có thể được gắn kết trực tiếp bởi hệ thống mà không cần tương tác 507của ứng dụng, các máy khách VPN cần xử lý các điểm bắt đầu cho VPN luôn bật. Giống 508trước đây, các dịch vụ được chỉ định tới hệ thống bằng một bộ lọc ý định phù hợp với 509hành động <code>android.net.VpnService</code>. </p> 510 511<p> 512 Người dùng cũng có thể đặt thủ công các máy khách VPN luôn bật có cài đặt các phương thức 513 <code>VPNService</code> trong người dùng chính bằng 514 <strong>Settings>More>Vpn</strong>. 515</p> 516 517<h2 id="accessibility_enhancements">Cải tiến trợ năng</h2> 518 519<p>Android N nay đã hỗ trợ Cài đặt Khả năng nhìn trực tiếp trên màn hình Chào mừng khi thiết lập 520thiết bị mới. Điều này giúp người dùng rất dễ dàng khám phá và cấu hình 521các tính năng trợ năng trên thiết bị của họ, bao gồm cử chỉ phóng đại, cỡ 522phông chữ, kích thước hiển thị và TalkBack. </p> 523 524<p>Với các tính năng trợ năng được bố trí ngày càng dễ thấy hơn, khi được bật 525khả năng người dùng sẽ thử ứng dụng của bạn sẽ cao hơn. Hãy đảm bảo bạn kiểm thử ứng dụng của mình 526trước với các cài đặt này được bật. Bạn có thể bật chúng trong Settings > 527Accessibility.</p> 528 529<p>Ngoài ra, trong Android N, các dịch vụ trợ năng đã có thể trợ giúp người dùng bị các tổn thương 530vận động chạm vào màn hình. API mới cho phép xây dựng các dịch vụ với những 531tính năng như theo dõi chuyển động của khuôn mặt, theo dõi chuyển động của mắt, quét điểm, v.v. nhằm 532đáp ứng nhu cầu những người dùng này.</p> 533 534<p>Để biết thêm thông tin, hãy xem <code>android.accessibilityservice.GestureDescription</code> 535 trong tài liệu <a href="{@docRoot}preview/setup-sdk.html#docs-dl">Tham khảo API</a> có thể tải xuống.</p> 536 537 538<h2 id="direct_boot">Khởi động Trực tiếp</h2> 539 540<p>Khởi động Trực tiếp cải thiện thời gian khởi động của thiết bị và cho phép các ứng dụng 541đã đăng ký có chức năng hạn chế ngay cả sau khi khởi động lại ngoài dự kiến. 542Ví dụ, nếu một thiết bị được mã hóa khởi động lại khi người dùng đang ngủ thì 543báo thức, tin nhắn và các cuộc gọi đến đã đăng ký có thể tiếp tục thông báo 544cho người dùng như thường lệ. Điều này cũng có nghĩa là các dịch vụ trợ năng cũng sẽ 545 khả dụng ngay sau khi khởi động xong.</p> 546 547<p>Khởi động Trực tiếp sử dụng mã hóa theo tệp trong Android N 548để bật các chính sách mã hóa chi tiết cho cả dữ liệu của hệ thống và ứng dụng. 549Hệ thống sẽ sử dụng một bộ lưu trữ mã hóa thiết bị cho dữ liệu hệ thống được chọn và dữ liệu ứng dụng 550đã đăng ký công khai. Theo mặc định, một bộ lưu trữ mã hóa thông tin xác thực sẽ được sử dụng cho mọi 551 dữ liệu hệ thống, dữ liệu người dùng, ứng dụng và dữ liệu của ứng dụng khác. </p> 552 553<p>Trong quá trình khởi động, hệ thống sẽ khởi động vào chế độ hạn chế và chỉ có quyền truy cập tới 554dữ liệu mã hóa thiết bị mà thôi, và không có quyền truy cập thông thường tới ứng dụng hoặc dữ liệu. 555Nếu bạn có các thành phần muốn chạy trong chế độ này thì bạn có thể đăng ký 556chúng bằng cách đặt cờ trong bản kê khai. Sau khi khởi động, hệ thống sẽ kích hoạt 557các thành phần đã đăng ký bằng cách truyền phát ý định <code>LOCKED_BOOT_COMPLETED</code> 558. Hệ thống sẽ đảm bảo cho dữ liệu mã hóa thiết bị đã đăng ký sẽ khả dụng 559trước khi mở khóa. Mọi dữ liệu khác sẽ không khả dụng cho tới khi Người dùng xác nhận thông tin xác thực trên màn hình khóa 560 của họ để giải mã nó. </p> 561 562Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/direct-boot.html">Khởi động Trực tiếp</a>.</p> 563</p> 564 565 566<h2 id="key_attestation">Chứng thực khóa</h2> 567 568<p>Các bộ lưu trữ khóa dựa trên phần cứng cung cấp một phương thức an toàn hơn rất nhiều để tạo, lưu trữ, 569và sử dụng các khóa mật mã trên thiết bị Android. Chúng bảo vệ các khóa trước 570nhân Linux, trước các lỗ hổng bảo mật tiềm tàng của Android và trước việc trích xuất 571từ các máy bị giành quyền điều khiển và bị can thiệp vào các tệp hệ thống (máy bị root).</p> 572 573<p>Android N đã đưa ra tính năng Chứng thực khóa để sử dụng các bộ lưu trữ khóa dựa trên phần cứng một cách 574 dễ dàng và bảo mật hơn. Các ứng dụng và dịch vụ không thuộc thiết bị có thể sử dụng Chứng thực 575khóa để xác định chắc chắn xem một cặp khóa RSA hoặc EC có 576dựa trên phần cứng hay không, các đặc điểm của cặp khóa đó là gì và 577 các ràng buộc nào được áp dụng cho việc sử dụng và tính hợp lệ của cặp khóa đó. </p> 578 579<p>Các ứng dụng và dịch vụ không thuộc thiết bị có thể yêu cầu thông tin về một cặp khóa 580thông qua chứng chỉ chứng thực X.509. Chứng chỉ này phải được ký bởi một khóa 581chứng thực hợp lệ. Khóa chứng thực là một khóa ký ECDSA, được 582đưa vào bộ lưu trữ khóa dựa trên phần cứng của thiết bị tại nhà máy. 583Do đó, một chứng chỉ chứng thực được ký bởi khóa 584chứng thực hợp lệ sẽ xác nhận sự tồn tại của bộ lưu trữ khóa dựa trên phần cứng, kèm theo 585 chi tiết về các cặp khóa trong bộ lưu trữ khóa đó.</p> 586 587<p>Để chắc chắn thiết bị đang sử dụng ảnh 588Android bảo mật, chính thức từ nhà máy, Chứng thực khóa yêu cầu <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements">bootloader</a> 589 của thiết bị cung cấp thông tin sau cho <a class="external-link" href="https://source.android.com/security/trusty/index.html">Môi trường Thực thi 590 An toàn (TEE)</a>:</p> 591 592<ul> 593<li>Phiên bản HĐH và cấp vá lỗi được cài đặt trên thiết bị</li> 594<li>Khóa công khai <a href="https://source.android.com/security/verifiedboot/index.html" class="external-link">Khởi động được xác thực</a> và trạng thái khóa</li> 595 </ul> 596 597<p>Để biết thêm thông tin về tính năng bộ lưu trữ khóa dựa trên phần cứng, 598hãy xem hướng dẫn <a href="https://source.android.com/security/keystore/" class="external-link">Bộ lưu trữ khóa dựa trên phần cứng</a>.</p> 599 600<p>Ngoài Chứng thực khóa, Android N cũng giới thiệu 601 các khóa dựa vào vân tay mà không được thu hồi khi đăng ký vân tay.</p> 602 603<h2 id="network_security_config">Cấu hình Bảo mật mạng</h2> 604 605<p>Trong Android N, các ứng dụng có thể tùy biến hành vi của các kết nối 606bảo mật (HTTPS, TLS) của chúng một cách an toàn mà không cần chỉnh sửa mã nhờ sử dụng khai báo 607<em>Cấu hình Bảo mật mạng</em> thay vì sử dụng các API lập trình truyền thống 608dễ xảy ra lỗi (vd: X509TrustManager).</p> 609 610 <p>Các tính năng được hỗ trợ:</p> 611<ul> 612<li><b>Nguồn tin cậy tùy chỉnh.</b> Cho phép một ứng dụng tùy chỉnh 613Nhà cung cấp chứng chỉ (CA) nào sẽ được tin cậy cho các kết nối bảo mật của ứng dụng. Ví 614dụ, tin cậy các chứng chỉ tự ký cụ thể hoặc một bộ giới hạn các CA công khai. 615</li> 616<li><b>Chỉ khống chế khi gỡ lỗi.</b> Cho phép nhà phát triển ứng dụng an toàn gỡ lỗi 617các kết nối bảo mật của ứng dụng mà không tạo thêm rủi ro cho phần cơ sở 618đã cài đặt. 619</li> 620<li><b>Không sử dụng truyền gửi văn bản chưa mã hóa.</b> Cho phép một ứng dụng tự bảo vệ mình khỏi việc 621vô tình sử dụng truyền gửi văn bản chưa mã hóa cleartext.</li> 622<li><b>Ghim chứng chỉ.</b> Một tính năng nâng cao cho phép một ứng dụng 623 giới hạn các khóa máy chủ nào là an toàn đối với các kết nối bảo mật.</li> 624</ul> 625 626<p>Để biết thêm thông tin, hãy xem <a href="{@docRoot}preview/features/security-config.html">Cấu hình Bảo mật 627 mạng</a>.</p> 628 629<h2 id="default_trusted_ca">Nhà cung cấp Chứng chỉ An toàn mặc định</h2> 630 631<p>Theo mặc định, các ứng dụng nhắm mục tiêu Android N chỉ tin cậy các chứng chỉ do hệ thống cấp 632và không còn tin cậy các Nhà cung cấp chứng chỉ (CA) do người dùng thêm vào. Các ứng dụng nhắm mục tiêu Android 633N muốn tin cậy các CA do người dùng thêm vào nên sử dụng 634<a href="{@docRoot}preview/features/security-config.html">Cấu hình Bảo mật mạng</a> để 635chỉ định cách thức tin cậy các CA của người dùng.</p> 636 637<h2 id="apk_signature_v2">Lược đồ chữ ký số v2 cho tệp APK</h2> 638 639<p>Lớp PackageManager nay đã hỗ trợ xác thực ứng dụng bằng Lược đồ chữ ký số v2 640APK. Lược đồ chữ ký số v2 APK là một lược đồ chữ ký số trên toàn bộ tệp 641làm tăng đáng kể tốc độ xác thực và tăng cường sự bảo đảm 642 toàn vẹn bằng cách phát hiện các thay đổi trái phép đối với các tệp APK.</p> 643 644<p>Để bảo đảm tương thích ngược, một tệp APK phải được ký bằng lược đồ 645chữ ký số v1 (Lược đồ chữ ký số JAR) trước khi được ký bằng lược đồ chữ ký số v2. 646Với lược đồ chữ ký số v2, quá trình xác thực sẽ thất bại nếu bạn ký tệp APK bằng một 647 chứng chỉ khác sau khi ký bằng lược đồ v2. </p> 648 649<p>Hỗ trợ cho lược đồ chữ ký số v2 cho tệp AKP sẽ có sau trong N Developer 650Preview.</p> 651 652<h2 id="scoped_directory_access">Truy cập thư mục theo phạm vi</h2> 653 654<p>Trong Android N, ứng dụng có thể sử dụng các API mới để yêu cầu truy cập vào các thư mục <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal">bộ nhớ lưu trữ 655ngoài</a> riêng, bao gồm các thư mục trên phương tiện có thể tháo ra như thẻ 656SD. Các API mới đã tối giản cách thức ứng dụng của bạn truy cập các thư mục lưu trữ ngoài 657tiêu chuẩn như thư mục <code>Pictures</code>. Các ứng dụng 658như ứng dụng quản lý ảnh có thể sử dụng các API này thay vì sử dụng 659<code>READ_EXTERNAL_STORAGE</code> để cấp quyền truy cập tới mọi thư mục 660lưu trữ, hoặc Khuôn khổ Truy cập Lưu trữ để giúp người dùng di chuyển tới 661thư mục đó.</p> 662 663<p>Ngoài ra, các API mới này cũng đơn giản hóa các bước mà người dùng thực hiện để cấp quyền truy cập 664bộ nhớ lưu trữ ngoài cho ứng dụng của bạn. Khi bạn sử dụng các API mới, hệ thống sẽ sử dụng một UI cấp quyền 665đơn giản cung cấp các thông tin chi tiết rõ ràng về thư mục nào ứng dụng đang 666yêu cầu quyền truy cập.</p> 667 668<p>Để biết thêm thông tin, hãy xem tài liệu cho nhà phát triển 669<a href="{@docRoot}preview/features/scoped-folder-access.html">Truy cập 670Thư mục theo Phạm vi</a>.</p> 671 672 673 674 675 676 677