Home | History | Annotate | Download | only in nougat
      1 page.title=Android N for Developers
      2 meta.tags="preview", "androidn"
      3 page.tags="preview", "developer preview"
      4 page.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>  </h2>
     13   <ol>
     14       <ul style="list-style-type:none;">
     15         <li><a href="#multi-window_support">  </a></li>
     16         <li><a href="#notification_enhancements"></a></li>
     17         <li><a href="#jit_aot">JIT/AOT </a></li>
     18         <li><a href="#quick_path_to_app_install">    </a></li>
     19         <li><a href="#doze_on_the_go">   </a></li>
     20         <li><a href="#background_optimizations"> </a></li>
     21         <li><a href="#data_saver">Data Saver</a></li>
     22         <li><a href="#vulkan">Vulkan API</a></li>
     23         <li><a href="#tile_api">Quick Settings  API</a></li>
     24         <li><a href="#number-blocking"> </a></li>
     25         <li><a href="#call_screening"> </a></li>
     26         <li><a href="#multi-locale_languages">  </a></li>
     27         <li><a href="#emoji"> </a></li>
     28         <li><a href="#icu4">Android ICU4J API</a></li>
     29         <li><a href="#gles_32">OpenGL ES 3.2 API</a></li>
     30         <li><a href="#android_tv_recording">Android TV </a></li>
     31         <li><a href="#android_for_work">Android for Work</a></li>
     32         <li><a href="#accessibility_enhancements"></a></li>
     33         <li><a href="#direct_boot"> </a></li>
     34         <li><a href="#key_attestation">Key Attestation</a></li>
     35         <li><a href="#network_security_config">  </a></li>
     36         <li><a href="#default_trusted_ca">    CA</a></li>
     37         <li><a href="#apk_signature_v2">APK Signature Scheme v2</a></li>
     38         <li><a href="#scoped_directory_access">   </a></li>
     39         <li><a href="#keyboard_shortcuts_helper">Keyboard Shortcuts Helper</a></li>
     40         <li><a href="#sustained_performance_api">  API</a></li>
     41         <li><a href="#vr">VR </a></li>
     42         <li><a href="#print_svc">   </a></li>
     43         <li><a href="#virtual_files"> </a></li>
     44         <li><a href="#framemetrics_api">FrameMetricsListener API</a></li>
     45       </ol>
     46 </div>
     47 </div>
     48 
     49 
     50 
     51 <p>Android N    , N Developer Preview
     52   Android N     .  
     53        . </p>
     54 
     55 <p>
     56           
     57   <a href="{@docRoot}preview/behavior-changes.html">  </a> ,
     58         ,  API  
     59   <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> .
     60 </p>
     61 
     62 <h2 id="multi-window_support">  </h2>
     63 
     64 
     65 <p>Android N     
     66       . </p>
     67 
     68   <p>         . </p>
     69   <ul>
     70   <li>Android N 
     71         
     72      .        
     73   . </li>
     74 
     75 <li>Android TV ,  <a href="{@docRoot}preview/features/picture-in-picture.html">PIP(Picture-In-Picture)
     76 </a>   ,    
     77          .</li>
     78   </ul>
     79 
     80 <div class="col-4of10">
     81 <img src="{@docRoot}images/android-7.0/mw-portrait.png" alt="" style="height:460px;padding-left:1em;" id="img-split-screen" />
     82 <p class="img-caption">
     83   <strong> 1.</strong>     .
     84 </p>
     85 
     86   </div>
     87 
     88 <p>       
     89        . ,      
     90      
     91  ,    . </p>
     92 
     93 <p>        
     94    .  , 
     95         
     96   . ,        
     97         .</p>
     98 
     99 <p>
    100     <a href="{@docRoot}preview/features/multi-window.html">  </a>
    101    .
    102 </p>
    103 
    104 <h2 id="notification_enhancements"> </h2>
    105 
    106 <p>Android N       
    107  .      .</p>
    108 
    109 <ul>
    110   <li>
    111     <strong> </strong>:    
    112       .  
    113        .
    114   </li>
    115 
    116   <li>
    117     <strong>   </strong>: <code>MessageStyle</code>  
    118        
    119    . ,  ,  
    120    .
    121   </li>
    122 
    123   <li>
    124     <strong> </strong>:   
    125  (:   )     . 
    126             . Android
    127  Wear         
    128  .
    129   </li>
    130 
    131   <li>
    132     <strong> </strong>:     Android 
    133    ,   
    134    SMS       .
    135   </li>
    136 
    137   <li>
    138     <strong>  </strong>:    API   
    139       (:    )
    140    .
    141   </li>
    142 </ul>
    143 
    144 <div class="col-4of12">
    145   <img src="{@docRoot}images/android-7.0/notifications-1.png" alt="" style="padding:.5em;max-width:226px">
    146 </div>
    147 
    148 <div class="col-4of12">
    149   <img src="{@docRoot}images/android-7.0/notifications-3.png" alt="" style="padding:.5em;max-width:226px">
    150 </div>
    151 
    152 <div class="col-4of12">
    153   <img src="{@docRoot}images/android-7.0/notifications-2.png" alt="" style="padding:.5em;max-width:226px">
    154 </div>
    155 
    156 
    157 <p class="img-caption">
    158   <strong> 2.</strong>     .
    159 </p>
    160 
    161 <p>     
    162  <a href="{@docRoot}preview/features/notification-updates.html"></a>
    163  .</p>
    164 
    165 
    166 
    167 <h2 id="jit_aot">   JIT/AOT </h2>
    168 
    169 <p>Android N    
    170 JIT(Just in Time)  ART .   ART Android   
    171      . JIT  ART  AOT(Ahead of Time)  
    172   ,   ,  
    173     .</p>
    174 
    175 <p>     ART   
    176     AOT/JIT    .  , ART         
    177      
    178   .     
    179      .</p>
    180 
    181 <p>  
    182        ,
    183      RAM     .       .</p>
    184 
    185 <p>ART      
    186     . ART         ,
    187       .</p>
    188 
    189 <h2 id="quick_path_to_app_install">    </h2>
    190 
    191 <p>ART JIT        
    192        . Android 6.0   
    193            
    194 . ,          . </p>
    195 
    196 <h2 id="doze_on_the_go">   ...</h2>
    197 
    198 <p>Android 6.0       
    199        CPU     
    200      . </p>
    201 
    202 <p> Android N       
    203  .        
    204       CPU     .
    205 ,       
    206   .</p>
    207 
    208 
    209 <img src="/preview/images/doze-diagram-1.png" alt="" id="figure1" />
    210 <p class="img-caption">
    211   <strong> 3.</strong>       
    212       .
    213 </p>
    214 
    215 
    216 <p>        
    217        .      
    218    
    219  / .         
    220 .</p>
    221 
    222 <p>         
    223   ,   {@link
    224 android.os.PowerManager.WakeLock}, {@link android.app.AlarmManager}  
    225 GPS/Wi-Fi    CPU    .</p>
    226 
    227 <p>        
    228   .     
    229       .     <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app">   
    230 </a> .</p>
    231 
    232 <h2 id="background_optimizations">Project Svelte:  </h2>
    233 
    234 <p>Project Svelte    Android    
    235   RAM     . Android N Project
    236 Svelte         . </p>
    237 
    238 <p>     .   
    239           , 
    240     RAM   
    241       . </p>
    242 
    243 <p>Android 5.0 ,
    244    
    245   {@link android.app.job.JobScheduler}.  ,       
    246    . JobScheduler    
    247 ,      . </p>
    248 
    249 <p>
    250        <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager">
    251 <code>GCMNetworkManager</code></a>.  Google Play
    252   ,  Android  
    253      .
    254 </p>
    255 
    256 <p>Google       <code>JobScheduler</code> 
    257 <code>GCMNetworkManager</code> 
    258  .  ,  Android N    
    259      .  , Google 
    260       
    261      .</p>
    262 
    263 <p>Android N       
    264  {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}, {@link
    265  android.hardware.Camera#ACTION_NEW_PICTURE}  {@link
    266  android.hardware.Camera#ACTION_NEW_VIDEO}
    267  .               . 
    268   , N Developer Preview
    269    <code>JobScheduler</code>   API . </p>
    270 
    271 <p>
    272     <a href="{@docRoot}preview/features/background-optimization.html">
    273  </a>  .
    274 </p>
    275 
    276 
    277 <h2 id="data_saver">Data Saver</h2>
    278 
    279 <div class="col-5of12" style="margin-right:1.5em;">
    280 <img src="{@docRoot}images/android-7.0/datasaver.png" style="border:2px solid #ddd">
    281 
    282 <p class="img-caption" style="padding-right:2em;">
    283   <strong> 4.</strong> Settings Data Saver.
    284 </p>
    285   </div>
    286 
    287 <p>    ,     
    288      .    
    289     . </p>
    290 
    291 <p>Android N    Data Saver
    292  , Data Saver      
    293              . Data Saver   
    294       , Data Saver       
    295   . </p>
    296 
    297 <p> <strong>Settings</strong> Data Saver 
    298       ,  
    299   ,  
    300        
    301           .  Data Saver        
    302       .</p>
    303 
    304 <p>Android N {@link android.net.ConnectivityManager}  <a href="{@docRoot}preview/features/data-saver.html#status">
    305 Data Saver   </a> <a href="{@docRoot}preview/features/data-saver.html#monitor-changes">
    306   </a> 
    307  .    Data Saver    
    308        .</p>
    309 
    310 
    311 <h2 id="vulkan">Vulkan API</h2>
    312 
    313 <p>
    314   Android N  3D  API <a href="http://www.khronos.org/vulkan" class="external-link">Vulkan</a>  .
    315 <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL
    316  ES</a> , Vulkan Khronos Group   3D    
    317   .
    318 </p>
    319 
    320 <p>
    321   Vulkan   CPU   ,
    322   GPU       . , Vulkan
    323       
    324        .
    325 </p>
    326 
    327 <p>
    328   Vulkan    Android NDK ,   
    329   .
    330 </p>
    331 
    332 <ul>
    333   <li>
    334   </li>
    335 
    336   <li>  ( )
    337   </li>
    338 
    339   <li>SPIR-V  
    340   </li>
    341 
    342   <li>SPIR-V    
    343   </li>
    344 </ul>
    345 
    346 <p>
    347   Vulkan Nexus 5X, Nexus 6P  Nexus Player  Vulkan    
    348     . Google
    349    Vulkan         .
    350 </p>
    351 
    352 <p>
    353     <a href="{@docRoot}ndk/guides/graphics/index.html">API </a> .
    354 </p>
    355 
    356 <h2 id="tile_api">Quick Settings  API</h2>
    357 
    358 
    359 <div style="float:right;max-width:320px">
    360 <img src="{@docRoot}images/android-7.0/quicksettings.png" style="padding-left:1.5em;">
    361 
    362 <p class="img-caption" style="padding-left:2em;">
    363   <strong> 5.</strong>   Quick Settings .
    364 </p>
    365 
    366 
    367   </div><p>Quick Settings        
    368     .    
    369   Android N Quick Settings   . </p>
    370 
    371 <p>Google Quick Settings     ,
    372             . ,  Quick Settings 
    373       .      
    374     . </p>
    375 
    376 <p>, Android N    API 
    377     Quick Settings    ,          .</p>
    378 
    379 <p>
    380           
    381    ,    
    382   .
    383 </p>
    384 
    385 <p>
    386           , 
    387        Quick Settings   .
    388 </p>
    389 
    390 <p>
    391        
    392   <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.service.quicksettings.Tile</code>   .
    393 </p>
    394 
    395 
    396 
    397 <h2 id="number-blocking"> </h2>
    398 
    399 <p> Android N    ,
    400           API . 
    401 SMS ,      
    402      .       .</p>
    403 
    404 <p>Android      ,
    405        
    406 .        .</p>
    407 
    408 <ul>
    409   <li>     .
    410   <li>         
    411    .
    412   <li>         .
    413 </ul>
    414 
    415 <p> Android      
    416          ,
    417       
    418  (: VOIP    )       .</p>
    419 
    420 <p>
    421    
    422    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
    423  </a> <code>android.provider.BlockedNumberContract</code> .
    424 </p>
    425 
    426 <h2 id="call_screening"> </h2>
    427 
    428 <p>
    429   Android N       .  
    430    <code>CallScreeningService</code> ,    
    431   {@link android.telecom.Call.Details Call.Details} 
    432       .
    433 </p>
    434 
    435 <ul>
    436   <li>   
    437   <li>     
    438   <li>     
    439 </ul>
    440 
    441 <p>
    442    
    443    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API
    444  </a> <code>android.telecom.CallScreeningService</code> .
    445 </p>
    446 
    447 
    448 <h2 id="multi-locale_languages">  ,     </h2>
    449 
    450 
    451 <p>        
    452 Android N  Settings <strong> </strong>   .  
    453 API    
    454 ,         
    455          
    456    .</p>
    457 
    458 <p>    Android N  
    459       . , , ,
    460        25   , 100     
    461  .</p>
    462 
    463 <p>
    464 <code>LocaleList.GetDefault()</code>        .        Android N   
    465   .    
    466      .</p>
    467 
    468 <p>        
    469 , <a href="{@docRoot}preview/features/multilingual-support.html"> </a> .</p>
    470 
    471 
    472 <h2 id="emoji"> </h2>
    473 
    474 <p>
    475   Android N       
    476        
    477   .     
    478            .
    479 </p>
    480 
    481 <ul>
    482   <li>
    483     <strong>          .</strong>
    484         
    485   {@link android.graphics.Paint#hasGlyph(String)}  .
    486   </li>
    487   <li>
    488     <strong>     .</strong>
    489          
    490     .
    491            . 
    492           .
    493             .
    494         
    495 <a class="external-link" href="http://www.unicode.org/Public/9.0.0/ucd/StandardizedVariants-9.0.0d1.txt">
    496   </a> <em>   </em> 
    497 .
    498   </li>
    499   <li>
    500     <strong>     .</strong> Android N     
    501        .       
    502      ,     
    503  .     
    504    {@link android.graphics.Paint#hasGlyph(String)}
    505  .
    506 <a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">
    507  </a>         .
    508   </li>
    509 </ul>
    510 
    511 
    512 <h2 id="icu4">Android ICU4J API</h2>
    513 
    514 <p>
    515    Android N <code>android.icu</code>   Android   <a href="http://site.icu-project.org/">ICU4J</a> API  
    516  . 
    517  ,  <code>com.java.icu</code> 
    518  <code>android.icu</code>   .  ICU4J 
    519     , Android   <code>android.icu</code>
    520  API  APK     .
    521 </p>
    522 
    523 <p>
    524   Android ICU4J API    <a href="{@docRoot}preview/features/icu4j-framework.html">ICU4J </a> .
    525 </p>
    526 
    527 
    528 
    529 <h2 id="gles_32">OpenGL&trade; ES 3.2 API</h2>
    530 
    531 <p>Android N   OpenGL ES 3.2     .</p>
    532 
    533 <ul>
    534   <li> <code>EXT_texture_sRGB_decode</code>  <a class="external-link" href="https://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">
    535 Android   </a></a>(AEP)   .
    536   <li> HDR        .
    537   <li>      BaseVertex  .
    538   <li> WebGL      .
    539 </ul>
    540 
    541 <p>Android N  OpenGL ES 3.2  API
    542 <code>GLES32</code>  . OpenGL ES 3.2  
    543   <code>&lt;uses-feature&gt;</code>  <code>android:glEsVersion</code>
    544       . </p>
    545 
    546 <p>  OpenGL ES   
    547  , OpenGL ES     <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API </a> .</p>
    548 
    549 
    550 <h2 id="android_tv_recording">Android TV </h2>
    551 
    552 <p>Android N   API  Android TV 
    553      .     API   TV 
    554            ,
    555        . </p>
    556 
    557 <p>  <a href="{@docRoot}preview/features/tv-recording-api.html">Android TV Recording API</a> .</p>
    558 
    559 
    560 <h2 id="android_for_work">Android for Work</h2>
    561 
    562 <p>Android for Work Android N  
    563      API .      ,    
    564 <a href="{@docRoot}preview/features/afw.html">Android for Work </a> .</p>
    565 
    566 <h3 id="work_profile_security_challenge">     </h3>
    567 
    568 <p>
    569   N SDK
    570         
    571       .           
    572 .          
    573    .   ,
    574 <code>ACTION_SET_NEW_PASSWORD</code>
    575         , <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 
    576     .
    577 </p>
    578 
    579 <p>
    580     <code>setPasswordQuality()</code>, <code>setPasswordMinimumLength()</code>    
    581      
    582     
    583 (: PIN              ).  
    584  <code>getParentProfileInstance()</code>    <code>DevicePolicyManager</code>
    585       .
    586    ,  
    587  <code>setOrganizationColor()</code>  <code>setOrganizationName()</code>           
    588    .
    589 </p>
    590 <h3 id="turn_off_work">  </h3>
    591 
    592 <p>          .  
    593     ,    
    594 ,     .    
    595 .         
    596       . 
    597       . </p>
    598 
    599 <h3 id="always_on_vpn">  VPN </h3>
    600 
    601 <p>       VPN   
    602    .   
    603   VPN  .</p>
    604 
    605 <p>
    606    <code>DevicePolicyManager</code> 
    607  <code>setAlwaysOnVpnPackage()</code> 
    608  <code>getAlwaysOnVpnPackage()</code>.
    609 </p>
    610 
    611 <p>     
    612 VPN     , VPN    VPN     . 
    613 ,  <code>android.net.VpnService</code>    
    614   . </p>
    615 
    616 <p>
    617   , <strong>Settings&gt;More&gt;Vpn</strong>    
    618  <code>VPNService</code> 
    619     VPN     .
    620 </p>
    621 
    622 <h3 id="custom_provisioning">  </h3>
    623 
    624 <p>
    625            
    626      .
    627 <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code>  
    628  , <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>
    629     .
    630 </p>
    631 
    632 <h2 id="accessibility_enhancements"> </h2>
    633 
    634 <p> Android N     Welcome 
    635 Vision Settings  .    
    636   ,  ,
    637    TalkBack           . </p>
    638 
    639 <p>      ,  
    640       .     
    641  . Settings &gt;
    642 Accessibility    .</p>
    643 
    644 <p>Android N ,    
    645        .   API   ,  ,
    646        
    647    .</p>
    648 
    649 <p> 
    650    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.accessibilityservice.GestureDescription</code> .</p>
    651 
    652 
    653 <h2 id="direct_boot"> </h2>
    654 
    655 <p>     ,   
    656       .  ,
    657       ,
    658    ,      
    659  . ,    
    660     .</p>
    661 
    662 <p>  Android N     
    663        .  
    664      
    665      . ,  
    666   ,  ,          . </p>
    667 
    668 <p>     ,  
    669        
    670 .      ,
    671        .    <code>LOCKED_BOOT_COMPLETED</code>
    672  
    673    .   ,   
    674       .      
    675          . </p>
    676 
    677   <a href="{@docRoot}preview/features/direct-boot.html"> </a> .</p>
    678 </p>
    679 
    680 
    681 <h2 id="key_attestation">Key Attestation</h2>
    682 
    683 <p>    Android   
    684        . 
    685   Linux ,  Android ,  
    686    .</p>
    687 
    688 <p>       
    689 Android N Key Attestation . Key Attestation  
    690  - RSA  EC       
    691 ,          
    692       . </p>
    693 
    694 <p>  -  X.509      
    695          
    696 .      
    697    ECDSA  .     
    698          
    699        
    700 .</p>
    701 
    702 <p>  Android     
    703  , Key Attestation
    704  <a class="external-link" href="https://source.android.com/security/verifiedboot/verified-boot.html#bootloader_requirements"></a>   <a class="external-link" href="https://source.android.com/security/trusty/index.html">TEE(Trusted Execution Environment)</a>
    705  .</p>
    706 
    707 <ul>
    708 <li>  OS    </li>
    709 <li><a href="https://source.android.com/security/verifiedboot/index.html" class="external-link"> </a>     </li>
    710   </ul>
    711 
    712 <p>      
    713  <a href="https://source.android.com/security/keystore/" class="external-link">   </a>  .</p>
    714 
    715 <p>Key Attestation  Android N  
    716       .</p>
    717 
    718 <h2 id="network_security_config">  </h2>
    719 
    720 <p>Android N       
    721 API(: X509TrustManager)   
    722 <em>  </em>  (HTTPS, TLS)   
    723       .</p>
    724 
    725   <p> :</p>
    726 <ul>
    727 <li><b>   .</b>    
    728   (CA)        .  ,
    729        CA      .
    730 </li>
    731 <li><b>  .</b>      
    732     
    733    .
    734 </li>
    735 <li><b>   .</b>      
    736      .</li>
    737 <li><b> .</b>       
    738      .</li>
    739 </ul>
    740 
    741 <p>  <a href="{@docRoot}preview/features/security-config.html">  </a>
    742 .</p>
    743 
    744 <h2 id="default_trusted_ca">     </h2>
    745 
    746 <p>, Android N    
    747       (CA)    . Android N    
    748  CA  
    749 <a href="{@docRoot}preview/features/security-config.html">  </a> 
    750  CA     .</p>
    751 
    752 <h2 id="apk_signature_v2">APK Signature Scheme v2</h2>
    753 
    754 <p>
    755   Android N      
    756 APK      
    757      APK Signature Scheme v2 . , Android Studio 2.2  Android
    758  Plugin for Gradle 2.2 APK Signature Scheme v2   JAR      
    759    .
    760 </p>
    761 
    762 <p>
    763    APK Signature Scheme v2   ,  
    764       . APK
    765  Signature Scheme v2             .  
    766  Android Studio 2.2  Android Plugin for Gradle 2.2    
    767  .  
    768    <code>build.gradle</code>   ,  
    769  <code>v2SigningEnabled false</code> 
    770 .
    771 </p>
    772 
    773 <pre>
    774   android {
    775     ...
    776     defaultConfig { ... }
    777     signingConfigs {
    778       release {
    779         storeFile file("myreleasekey.keystore")
    780         storePassword "password"
    781         keyAlias "MyReleaseKey"
    782         keyPassword "password"
    783         <strong>v2SigningEnabled false</strong>
    784       }
    785     }
    786   }
    787 </pre>
    788 
    789 <p class="caution"><strong>: </strong> APK
    790  Signature Scheme v2         
    791  .  <code>zipalign</code>
    792    APK Signature Scheme v2         .
    793 </p>
    794 
    795 <p>
    796     Android Studio
    797 <a href="{@docRoot}studio/publish/app-signing.html#release-mode">
    798 </a>   Android Plugin for Gradle  <a href="{@docRoot}studio/build/build-variants.html#signing">
    799      </a>    Android Studio  .
    800 </p>
    801 
    802 <h2 id="scoped_directory_access">   </h2>
    803 
    804 <p>Android N   API  
    805 <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal"> </a> (SD      )
    806     .  API 
    807    (: <code>Pictures</code> )    . 
    808          
    809 <code>READ_EXTERNAL_STORAGE</code>          (SAF)
    810    API
    811   .</p>
    812 
    813 <p>,  API     
    814    .  API   
    815      
    816      UI .</p>
    817 
    818 <p> 
    819 <a href="{@docRoot}preview/features/scoped-folder-access.html"> 
    820  </a>   .</p>
    821 
    822 <h2 id="keyboard_shortcuts_helper">Keyboard Shortcuts Helper</h2>
    823 
    824 <p>
    825 Android N  "Alt + /"   <em>Keyboard Shortcuts</em>
    826    ,          
    827   .       (  ),
    828         
    829   .    
    830 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a>   
    831 <code>Activity.onProvideKeyboardShortcuts()</code>    .
    832 </p>
    833 
    834 <p>
    835    Keyboard Shortcuts Helper    
    836 {@code Activity.requestKeyboardShortcutsHelper()} .
    837 </p>
    838 
    839 <h2 id="sustained_performance_api">  API</h2>
    840 
    841 <p>
    842       
    843  (system-on-chip)  ,      
    844  .         
    845      .
    846 </p>
    847 
    848 <p>
    849    , Android N
    850 <em>  </em> ,    OEM   
    851       .  
    852     
    853               .
    854 </p>
    855 
    856 <p>
    857   N Developer Preview  
    858  API Nexus 6P     .   
    859      
    860     .
    861 {@code Window.setSustainedPerformanceMode()}     .      
    862    .
    863 </p>
    864 
    865 <h2 id="vr">VR </h2>
    866 
    867 <p>
    868      VR    , Android N
    869  VR      . VR   CPU    
    870     .
    871   
    872 VR         .   ,    
    873  Android N  . Android N VR     
    874 <a href="https://developers.google.com/vr/android/">Android Google VR SDK</a> .
    875 </p>
    876 
    877 
    878 <h2 id="print_svc">   </h2>
    879 
    880 <p>
    881    Android N       
    882      .
    883 </p>
    884 
    885 <p>
    886      ,        
    887    .
    888 </p>
    889 
    890 <ul>
    891   <li><code>PrinterInfo.Builder.setResourceIconId()</code>   ID
    892    .
    893   </li>
    894 
    895   <li><code>PrinterInfo.Builder.setHasCustomPrinterIcon()</code> ,
    896 <code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code>      
    897   
    898   .
    899   </li>
    900 </ul>
    901 
    902 <p>
    903   , <code>PrinterInfo.Builder.setInfoIntent()</code>    
    904     .
    905 </p>
    906 
    907 <p>
    908   <code>android.printservice.PrintJob.setProgress()</code> 
    909 <code>android.printservice.PrintJob.setStatus()</code>  
    910     
    911     .
    912 </p>
    913 
    914 <p>
    915          <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> .
    916 </p>
    917 
    918 <h2 id="framemetrics_api">FrameMetricsListener API</h2>
    919 
    920 <p>
    921  FrameMetricsListener API  UI 
    922    .      API      
    923    Pub/Sub API .  
    924 <code><a href="{@docRoot}tools/help/shell.html#shellcommands">adb shell</a>
    925 dumpsys gfxinfo framestats</code>   ,  120   .
    926 </p>
    927 
    928 <p>
    929 FrameMetricsListener  USB    
    930    UI    .  API
    931 
    932 {@code adb shell dumpsys gfxinfo}       .      
    933      ,     . 
    934       
    935     .   
    936       UI 
    937        .
    938 </p>
    939 
    940 <p>
    941   <code>FrameMetricsListener.onMetricsAvailable()</code>
    942      .    
    943 <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> {@code FrameMetricsListener}  
    944 .
    945 </p>
    946 
    947 <p>
    948  API {@code FrameMetrics}             
    949   .
    950   {@code UNKNOWN_DELAY_DURATION},
    951 {@code INPUT_HANDLING_DURATION}, {@code ANIMATION_DURATION},
    952 {@code LAYOUT_MEASURE_DURATION}, {@code DRAW_DURATION}, {@code SYNC_DURATION},
    953 {@code COMMAND_ISSUE_DURATION}, {@code SWAP_BUFFERS_DURATION},
    954 {@code TOTAL_DURATION}, {@code FIRST_DRAW_FRAME}.
    955 </p>
    956 
    957 
    958 <h2 id="virtual_files"> </h2>
    959 
    960 <p>
    961     Android 
    962 Google          ,    
    963   .     
    964     ,    
    965  .
    966 </p>
    967 
    968 <p>
    969   Android N <em> </em>   
    970   .    ,
    971 {@link android.content.Intent#ACTION_VIEW}     
    972  URI       URI {@link android.provider.DocumentsProvider}  
    973 .  Android N    ,   
    974     .
    975 </p>
    976 
    977 <p>
    978      URI  
    979 {@link android.content.Intent}    UI .  {@link android.content.ContentResolver#openInputStream(Uri) openInputStream()}
    980   
    981   
    982    ,
    983 {@link android.content.Intent#CATEGORY_OPENABLE}         .
    984 </p>
    985 
    986 <p>
    987     , 
    988 {@link android.app.Activity#onActivityResult onActivityResult()}  .
    989        ,    URI 
    990     .
    991 </p>
    992 
    993 <pre>
    994   // Other Activity code ...
    995 
    996   final static private int REQUEST_CODE = 64;
    997 
    998   // We listen to the OnActivityResult event to respond to the user's selection.
    999   &#64;Override
   1000   public void onActivityResult(int requestCode, int resultCode,
   1001     Intent resultData) {
   1002       try {
   1003         if (requestCode == REQUEST_CODE &amp;&amp;
   1004             resultCode == Activity.RESULT_OK) {
   1005 
   1006             Uri uri = null;
   1007 
   1008             if (resultData != null) {
   1009                 uri = resultData.getData();
   1010 
   1011                 ContentResolver resolver = getContentResolver();
   1012 
   1013                 // Before attempting to coerce a file into a MIME type,
   1014                 // check to see what alternative MIME types are available to
   1015                 // coerce this file into.
   1016                 String[] streamTypes =
   1017                   resolver.getStreamTypes(uri, "*/*");
   1018 
   1019                 AssetFileDescriptor descriptor =
   1020                     resolver.openTypedAssetFileDescriptor(
   1021                         uri,
   1022                         streamTypes[0],
   1023                         null);
   1024 
   1025                 // Retrieve a stream to the virtual file.
   1026                 InputStream inputStream = descriptor.createInputStream();
   1027             }
   1028         }
   1029       } catch (Exception ex) {
   1030         Log.e("EXCEPTION", "ERROR: ", ex);
   1031       }
   1032   }
   1033 </pre>
   1034 
   1035 <p>
   1036        
   1037 <a href="{@docRoot}guide/topics/providers/document-provider.html">
   1038   </a> .
   1039 </p>
   1040