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"> Doze</a></li>
     20         <li><a href="#background_optimizations"></a></li>
     21         <li><a href="#data_saver"></a></li>
     22         <li><a href="#vulkan">Vulkan API</a></li>
     23         <li><a href="#tile_api"> 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"></a></li>
     35         <li><a href="#network_security_config"> </a></li>
     36         <li><a href="#default_trusted_ca"></a></li>
     37         <li><a href="#apk_signature_v2">APK  v2</a></li>
     38         <li><a href="#scoped_directory_access"></a></li>
     39         <li><a href="#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  Android N 
     52 
     53  </p>
     54 
     55 <p>
     56   <a href="{@docRoot}preview/behavior-changes.html"></a> <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> API 
     57 
     58 
     59 
     60 </p>
     61 
     62 <h2 id="multi-window_support"> </h2>
     63 
     64 
     65 <p>Android N  
     66  </p>
     67 
     68   <p> 2  </p>
     69   <ul>
     70   <li>Android N  2 
     71 
     72 2 
     73  </li>
     74 
     75 <li>Android TV <a href="{@docRoot}preview/features/picture-in-picture.html">   </a>
     76 
     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 Wear 
    127 
    128 
    129   </li>
    130 
    131   <li>
    132     <strong> </strong>:Android   SMS  
    133 
    134 
    135   </li>
    136 
    137   <li>
    138     <strong></strong>:2  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><a href="{@docRoot}preview/features/notification-updates.html"></a>
    162 
    163 </p>
    164 
    165 
    166 
    167 <h2 id="jit_aot"> JIT / AOT </h2>
    168 
    169 <p>Android N   Just in TimeJIT ART Android 
    170 
    171 JIT ART  Ahead of TimeAOT  
    172 
    173 </p>
    174 
    175 <p>ART  AOT / JIT 
    176 ART  
    177 
    178 
    179 </p>
    180 
    181 <p> RAM 
    182 
    183 </p>
    184 
    185 <p>ART 
    186 
    187 </p>
    188 
    189 <h2 id="quick_path_to_app_install"></h2>
    190 
    191 <p>ART  JIT  1  
    192 Android 6.0 
    193 
    194   </p>
    195 
    196 <h2 id="doze_on_the_go"> Doze</h2>
    197 
    198 <p>Android 6.0  Doze  CPU 
    199 
    200  </p>
    201 
    202 <p>Android N  Doze Doze  CPU 
    203 
    204 
    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> Doze 
    212 
    213 </p>
    214 
    215 
    216 <p>Doze  
    217  
    218 
    219  Doze 
    220 </p>
    221 
    222 <p>Doze  CPU  {@link
    223 android.os.PowerManager.WakeLock}{@link android.app.AlarmManager} GPS / Wi-Fi 
    224 
    225 </p>
    226 
    227 <p> Doze  Doze 
    228 
    229 <a href="{@docRoot}training/monitoring-device-state/doze-standby.html#assessing_your_app"> Doze </a>
    230 </p>
    231 
    232 <h2 id="background_optimizations">Project Svelte:</h2>
    233 
    234 <p>Project Svelte Android  RAM 
    235 Android N  Project Svelte 
    236  </p>
    237 
    238 <p> RAM 
    239 
    240 
    241  </p>
    242 
    243 <p>Android 5.0  {@link android.app.job.JobScheduler} 
    244 
    245 
    246 JobScheduler  JobScheduler 
    247  </p>
    248 
    249 <p>
    250    1 Google Play  <a href="https://developers.google.com/android/reference/com/google/android/gms/gcm/GcmNetworkManager"><code>GCMNetworkManager</code></a>   Android 
    251 
    252 
    253 
    254 </p>
    255 
    256 <p><code>JobScheduler</code>  <code>GCMNetworkManager</code> Android N  
    257 
    258 
    259  
    260 
    261 </p>
    262 
    263 <p>
    264 {@link android.net.ConnectivityManager#CONNECTIVITY_ACTION}{@link
    265   android.hardware.Camera#ACTION_NEW_PICTURE}{@link
    266   android.hardware.Camera#ACTION_NEW_VIDEO} Android N  3 
    267 N Developer Preview <code>JobScheduler</code>  API 
    268 
    269  </p>
    270 
    271 <p>
    272   <a href="{@docRoot}preview/features/background-optimization.html"></a>
    273 
    274 </p>
    275 
    276 
    277 <h2 id="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] 
    284 </p>
    285   </div>
    286 
    287 <p>
    288 
    289  </p>
    290 
    291 <p>Android N   
    292 
    293 
    294 
    295  </p>
    296 
    297 <p> [<strong>Settings</strong>] 
    298 
    299 
    300 
    301 
    302 </p>
    303 
    304 <p>Android N  {@link android.net.ConnectivityManager} <a href="{@docRoot}preview/features/data-saver.html#status"></a><a href="{@docRoot}preview/features/data-saver.html#monitor-changes"></a>
    305 
    306 
    307 
    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> <a href="https://www.khronos.org/opengles/" class="external-link">OpenGL ES</a> Vulkan  Khronos  3D  
    315 
    316 
    317 
    318 </p>
    319 
    320 <p>
    321   Vulkan  CPU  GPU 
    322 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 5XNexus 6PNexus Player  Vulkan 
    348 Vulkan 
    349 
    350 </p>
    351 
    352 <p>
    353   <a href="{@docRoot}ndk/guides/graphics/index.html">API </a>
    354 </p>
    355 
    356 <h2 id="tile_api"> 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> 
    364 </p>
    365 
    366 
    367   </div><p>
    368 Android N 
    369  </p>
    370 
    371 <p>
    372   
    373 
    374  </p>
    375 
    376 <p>Android N  API  API 
    377 </p>
    378 
    379 <p>
    380   
    381 
    382 
    383 </p>
    384 
    385 <p>
    386     
    387 
    388 </p>
    389 
    390 <p>
    391    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.service.quicksettings.Tile</code> 
    392 
    393 </p>
    394 
    395 
    396 
    397 <h2 id="number-blocking"></h2>
    398 
    399 <p>Android N   API 
    400  SMS 
    401 
    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  VOIP 
    416 
    417 
    418 </p>
    419 
    420 <p>
    421    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.provider.BlockedNumberContract</code> 
    422 
    423 
    424 </p>
    425 
    426 <h2 id="call_screening"></h2>
    427 
    428 <p>
    429   Android N  <code>CallScreeningService</code>  {@link android.telecom.Call.Details Call.Details} 
    430 
    431 
    432 
    433 </p>
    434 
    435 <ul>
    436   <li> 
    437   <li> 
    438   <li> 
    439 </ul>
    440 
    441 <p>
    442    <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.telecom.CallScreeningService</code> 
    443 
    444 
    445 </p>
    446 
    447 
    448 <h2 id="multi-locale_languages"></h2>
    449 
    450 
    451 <p>Android N [Settings] <strong></strong>
    452  API  
    453 
    454 
    455 
    456 </p>
    457 
    458 <p>Android N 
    459  25 
    460 100 
    461 </p>
    462 
    463 <p><code>LocaleList.GetDefault()</code> 
    464 Android N 
    465 
    466 </p>
    467 
    468 <p> <a href="{@docRoot}preview/features/multilingual-support.html"></a>
    469 </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      {@link android.graphics.Paint#hasGlyph(String)} 
    485 
    486   </li>
    487   <li>
    488     <strong></strong>
    489     
    490 
    491      
    492 
    493     
    494     <a class="external-link" href="http://www.unicode.org/Public/9.0.0/ucd/StandardizedVariants-9.0.0d1.txt"> Unicode </a><em></em> 
    495 
    496 
    497 
    498   </li>
    499   <li>
    500     <strong></strong>Android N 
    501  
    502 
    503 {@link android.graphics.Paint#hasGlyph(String)} 
    504 
    505 <a class="external-link" href="http://unicode.org/emoji/charts/full-emoji-list.html">Unicode </a>
    506 
    507 
    508   </li>
    509 </ul>
    510 
    511 
    512 <h2 id="icu4">Android  ICU4J API</h2>
    513 
    514 <p>
    515   Android N Android  <a href="http://site.icu-project.org/">ICU4J</a> API <code>android.icu</code> 
    516  <code>com.java.icu</code>  <code>android.icu</code> 
    517 
    518  ICU4J Android  <code>android.icu</code> API APK 
    519 
    520 
    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">Android  </a></a>AEP
    535 
    536   <li> HDR 
    537   <li>  BaseVertex 
    538   <li> WebGL   
    539 </ul>
    540 
    541 <p>Android N  OpenGL ES 3.2  API <code>GLES32</code> 
    542 OpenGL ES 3.2 <code>&lt;uses-feature&gt;</code>  <code>android:glEsVersion</code>  
    543 
    544  </p>
    545 
    546 <p> OpenGL ES OpenGL ES <a href="{@docRoot}guide/topics/graphics/opengl.html">OpenGL ES API </a>
    547 </p>
    548 
    549 
    550 <h2 id="android_tv_recording">Android TV </h2>
    551 
    552 <p>Android N  recording API  Android TV 
    553 TV   time-shifting API 
    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  API <a href="{@docRoot}preview/features/afw.html">Android for Work </a>
    563 
    564 </p>
    565 
    566 <h3 id="work_profile_security_challenge"> </h3>
    567 
    568 <p>
    569   N SDK  
    570 
    571 
    572 
    573  <code>ACTION_SET_NEW_PASSWORD</code> <code>ACTION_SET_NEW_PARENT_PROFILE_PASSWORD</code> 
    574 
    575 
    576 
    577 </p>
    578 
    579 <p>
    580    <code>setPasswordQuality()</code><code>setPasswordMinimumLength()</code> PIN 
    581 
    582 
    583  <code>getParentProfileInstance()</code>  <code>DevicePolicyManager</code> 
    584 
    585 
    586    <code>setOrganizationColor()</code>  <code>setOrganizationName()</code> 
    587 
    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">Always on VPN </h3>
    600 
    601 <p>   VPN 
    602  VPN 
    603 </p>
    604 
    605 <p>
    606   <code>setAlwaysOnVpnPackage()</code>  <code>getAlwaysOnVpnPackage()</code>  <code>DevicePolicyManager</code> 
    607 
    608 
    609 </p>
    610 
    611 <p> VPN Always on VPN  VPN 
    612    <code>android.net.VpnService</code> 
    613 
    614  </p>
    615 
    616 <p>
    617    <strong>[Settings] &gt; [More] &gt; [Vpn]</strong> <code>VPNService</code>  Always on VPN 
    618 
    619 
    620 </p>
    621 
    622 <h3 id="custom_provisioning"></h3>
    623 
    624 <p>
    625      <code>DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR</code> <code>DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI</code>  
    626 
    627 
    628 
    629 
    630 </p>
    631 
    632 <h2 id="accessibility_enhancements"></h2>
    633 
    634 <p>Android N  [Vision Settings] 
    635  TalkBack 
    636 
    637  </p>
    638 
    639 <p>
    640 
    641 [Settings] &gt; [Accessibility] 
    642 </p>
    643 
    644 <p>Android N 
    645  API  
    646 
    647 </p>
    648 
    649 <p> <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>android.accessibilityservice.GestureDescription</code> 
    650 </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"></h2>
    682 
    683 <p>Android 
    684 Linux Android 
    685 
    686 </p>
    687 
    688 <p>Android N 
    689  RSA  EC 
    690 
    691 
    692  </p>
    693 
    694 <p> X.509 
    695 
    696  ECDSA 
    697 
    698 
    699 
    700 </p>
    701 
    702 <p> Android  <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">Trusted Execution EnvironmentTEE</a>
    703 
    704 
    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><a href="https://source.android.com/security/keystore/" class="external-link"></a>
    713 </p>
    714 
    715 <p>Android N 
    716 </p>
    717 
    718 <h2 id="network_security_config"> </h2>
    719 
    720 <p>Android N  APIX509TrustManager  HTTPSTLS<em></em>
    721 
    722 
    723 </p>
    724 
    725   <p></p>
    726 <ul>
    727 <li><b>  </b>CA
    728  CA 
    729 
    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 CA
    747  CA  Android N <a href="{@docRoot}preview/features/security-config.html"> </a> CA 
    748 
    749 
    750 </p>
    751 
    752 <h2 id="apk_signature_v2">APK  v2</h2>
    753 
    754 <p>
    755   Android N APK  v2 APK 
    756 
    757 Android Studio 2.2  Gradle 2.2  Android  APK  v2 JAR 
    758 
    759 
    760 </p>
    761 
    762 <p>
    763   APK  v2 
    764 APK  v2 
    765 Android Studio 2.2  Gradle 2.2  Android 
    766 
    767   <code>build.gradle</code> <code>v2SigningEnabled false</code> 
    768 
    769 
    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  v2 
    790 
    791 APK  v2  <code>zipalign</code> 
    792 
    793 </p>
    794 
    795 <p>
    796   Android Studio <a href="{@docRoot}studio/publish/app-signing.html#release-mode"></a>Gradle  Android <a href="{@docRoot}studio/build/build-variants.html#signing"></a> Android Studio 
    797 
    798 
    799 
    800 </p>
    801 
    802 <h2 id="scoped_directory_access"></h2>
    803 
    804 <p>Android N  API SD  <a href="{@docRoot}guide/topics/data/data-storage.html#filesExternal"></a> 
    805 
    806  API  <code>Pictures</code>  
    807 <code>READ_EXTERNAL_STORAGE</code>  API    
    808 
    809 
    810 
    811 </p>
    812 
    813 <p> API 
    814  API  UI 
    815 
    816 </p>
    817 
    818 <p><a href="{@docRoot}preview/features/scoped-folder-access.html"></a>
    819 
    820 </p>
    821 
    822 <h2 id="keyboard_shortcuts_helper">  </h2>
    823 
    824 <p>
    825 Android N  Alt  + / <em> </em>
    826 
    827 
    828 
    829  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> <code>Activity.onProvideKeyboardShortcuts()</code> 
    830 
    831 
    832 </p>
    833 
    834 <p>
    835    {@code Activity.requestKeyboardShortcutsHelper()} 
    836 
    837 </p>
    838 
    839 <h2 id="sustained_performance_api"> API</h2>
    840 
    841 <p>
    842  
    843 
    844 
    845 
    846 </p>
    847 
    848 <p>
    849 Android N <em></em>OEM 
    850 
    851 
    852 
    853 
    854 </p>
    855 
    856 <p>
    857  N Developer Preview  API Nexus 6P 
    858  
    859 
    860  {@code Window.setSustainedPerformanceMode()} 
    861 
    862 
    863 </p>
    864 
    865 <h2 id="vr">VR </h2>
    866 
    867 <p>
    868 Android N  VR   VR 
    869 VR  CPU VR  
    870 
    871 
    872 Android N 
    873 Android N  VR <a href="https://developers.google.com/vr/android/">Google VR SDK for Android</a> 
    874 
    875 </p>
    876 
    877 
    878 <h2 id="print_svc"></h2>
    879 
    880 <p>
    881   Android N 
    882 
    883 </p>
    884 
    885 <p>
    886    2 
    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> <code>android.printservice.PrinterDiscoverySession.onRequestCustomPrinterIcon()</code> 
    896 
    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>  <code>android.printservice.PrintJob.setStatus()</code> 
    909 
    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   Pub / Sub API 
    923 <code><a href="{@docRoot}tools/help/shell.html#shellcommands">adb shell</a>
    924 dumpsys gfxinfo framestats</code>  120 
    925 
    926 </p>
    927 
    928 <p>
    929 FrameMetricsListener USB   UI 
    930  API {@code adb shell dumpsys gfxinfo} 
    931 
    932  
    933 
    934 
    935   UI 
    936 
    937 
    938 </p>
    939 
    940 <p>
    941 <code>FrameMetricsListener.onMetricsAvailable()</code>  
    942  <a href="{@docRoot}preview/setup-sdk.html#docs-dl">API </a> {@code FrameMetricsListener} 
    943 
    944 
    945 </p>
    946 
    947 <p>
    948  API  {@code FrameMetrics}    {@code UNKNOWN_DELAY_DURATION}{@code INPUT_HANDLING_DURATION}{@code ANIMATION_DURATION}{@code LAYOUT_MEASURE_DURATION}{@code DRAW_DURATION}{@code SYNC_DURATION}{@code COMMAND_ISSUE_DURATION}{@code SWAP_BUFFERS_DURATION}{@code TOTAL_DURATION}{@code FIRST_DRAW_FRAME} 
    949 
    950 
    951 
    952 
    953 
    954 
    955 </p>
    956 
    957 
    958 <h2 id="virtual_files"></h2>
    959 
    960 <p>
    961    Android    Google   
    962 
    963 
    964 
    965 
    966 </p>
    967 
    968 <p>
    969   Android N   <em></em>
    970 {@link android.content.Intent#ACTION_VIEW}  URI  {@link android.provider.DocumentsProvider} 
    971 
    972 
    973 Android N  
    974 
    975 </p>
    976 
    977 <p>
    978    URI {@link android.content.Intent}   UI 
    979  {@link android.content.ContentResolver#openInputStream(Uri) openInputStream()} {@link android.content.Intent#CATEGORY_OPENABLE} 
    980 
    981 
    982 
    983 
    984 </p>
    985 
    986 <p>
    987   {@link android.app.Activity#onActivityResult onActivityResult()} 
    988 
    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    <a href="{@docRoot}guide/topics/providers/document-provider.html">  </a>
   1037 
   1038 
   1039 </p>
   1040