1page.title=API de ICU4J en el framework de Android
2page.image=images/cards/card-nyc_2x.jpg
3
4@jd:body
5
6<div id="qv-wrapper">
7<div id="qv">
8<h2>En este documento:</h2>
9<ol>
10    <li><a href="#relation">Relación con ICU4J</a></li>
11    <li><a href="#migration">Migración hacia API de android.icu desde ICU4J</a></li>
12    <li><a href="#licence">Licencias</a></li>
13</ol>
14
15<h2>Consulta también</h2>
16<ol>
17  <li>
18    <a class="external-link" href="http://userguide.icu-project.org">Documentación para ICU4J</a>
19  </li>
20
21  <li>
22    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Últimos estándares compatibles
23 con ICU4J</a>
24  </li>
25</ol>
26</div>
27</div>
28
29<p>
30  ICU4J es un conjunto de bibliotecas de Java de código abierto y amplio uso que brinda soporte de Unicode
31 y de globalización para aplicaciones de software. Android N
32 expone un subconjunto de las API de ICU4J en el framework de Android para que los desarrolladores de aplicaciones
33 lo usen debajo del paquete {@code android.icu}. Estas API usan
34 datos de ubicación que están presentes en el dispositivo. Como resultado, puedes reducir la superficie de APK
35 evitando la compilación de las bibliotecas de ICU4J en APK. En lugar de esto, puedes
36 llamarlas en el framework. (En este caso, posiblemente debas brindar
37 <a href="{@docRoot}google/play/publishing/multiple-apks.html">versiones múltiples
38 del APK</a>, de modo que los usuarios que usan versiones de Android inferiores a Android N
39 puedan descargar una versión de la aplicación que incluya las bibliotecas de ICU4J).
40</p>
41
42<p>
43  Al principio de este documento, encontrarás información básica sobre el mínimo de niveles de Android API
44 necesarios para soportar estas bibliotecas. Más adelante, encontrarás explicaciones sobre qué
45 necesitas saber acerca de la implementación de ICU4J específica para Android. Por último,
46 encontrarás explicaciones sobre cómo usar las API de ICU4J en el framework de Android.
47</p>
48
49<h2 id="relation">Relación con ICU4J</h2>
50
51<p>
52  Android N expone un subconjunto de las API de ICU4J mediante el
53 paquete <code>android.icu</code>, en lugar de <code>com.ibm.icu</code>. El
54framework de Android puede elegir no
55 exponer las API de ICU4J por varias razones; por ejemplo, Android N no expone
56 algunas API obsoletas o algunas que el equipo de ICU aún no ha declarado como
57 estables. A medida que el equipo de ICU deje de usar API en el futuro, Android también las marcará
58 como obsoletas, pero las seguirá incluyendo.
59</p>
60
61<p class="table-caption"><strong>Tabla 1.</strong> Versiones de ICU y CLDR usadas
62 en Android N.</p>
63<table>
64<tr>
65<th>Nivel de Android API</th>
66<th>Versión de ICU</th>
67<th>Versión de CLDR</th>
68</tr>
69<tr>
70<td>Android N</td>
71<td>56</td>
72<td>28</td>
73</tr>
74</table>
75
76<p>Debes tener en cuenta lo siguiente:</p>
77
78<ul>
79<li>Las API de ICU4J del framework de Android no incluyen todas las API de ICU4J.</li>
80<li>Los desarrolladores de NDK deben saber que ICU4C de Android no es compatible.</li>
81<li>Las API del framework de Android no reemplazan la compatibilidad de Android para
82<a href="{@docRoot}guide/topics/resources/localization.html">localizar con
83recursos</a>.</li>
84</ul>
85
86<h2 id="migration">Migración hacia el paquete android.icu desde com.ibm.icu</h2>
87
88<p>
89  Si ya estás usando las API de ICU4J en tu aplicación y las
90 API de <code>android.icu</code> cumplen con tus requisitos, migrar hacia las
91 API del framework implicará que cambies tus importaciones de Java
92 de <code>com.ibm.icu</code> a <code>android.icu</code>. Luego, puedes
93 quitar tu propia copia de los archivos de ICU4J del APK.
94</p>
95
96<p class="note">
97  <b>Nota</b>: Las API del framework de ICU4J usan el espacio de nombres {@code android.icu}
98 en lugar de {@code com.ibm.icu}. El motivo de esto es evitar conflictos de espacio de nombres
99 en APK que contienen sus propias bibliotecas de {@code com.ibm.icu}.
100</p>
101
102<h3 id="migrate-from-android">
103  Migración hacia API de android.icu desde otras Android SDK API
104</h3>
105
106<p>
107  Algunas clases de los paquetes de <code>java</code> y de <code>android</code> son
108 equivalentes a las clases de ICU4J. Sin embargo, ICU4J a menudo brinda una compatibilidad
109 más amplia para estándares e idiomas.
110</p>
111<p>Aquí tienes algunos ejemplos para comenzar:</p>
112<table>
113<tr>
114<th>Clase</th>
115<th>Alternativa</th>
116</tr>
117<tr>
118<td><code>java.lang.Character</code> </td>
119<td><code>android.icu.lang.UCharacter</code> </td>
120</tr>
121<tr>
122<td><code>java.text.BreakIterator</code> </td>
123<td><code>android.icu.text.BreakIterator</code> </td>
124</tr>
125<tr>
126<td><code>java.text.DecimalFormat</code> </td>
127<td><code>android.icu.text.DecimalFormat</code> </td>
128</tr>
129<tr>
130<td><code>java.util.Calendar</code></td>
131<td>
132<code>android.icu.util.Calendar</code></td>
133</tr>
134<tr>
135<td><code>android.text.BidiFormatter</code>
136 </td>
137<td><code>android.icu.text.Bidi</code>
138 </td>
139</tr>
140<tr>
141<td><code>android.text.format.DateFormat</code>
142 </td>
143<td><code>android.icu.text.DateFormat</code>
144 </td>
145</tr>
146<tr>
147<td><code>android.text.format.DateUtils</code> </td>
148<td><code>android.icu.text.DateFormat</code>
149<code>android.icu.text.RelativeDateTimeFormatter</code>
150</td>
151</tr>
152</table>
153
154<h2 id="licence">Licencias</h2>
155
156<p>
157  ICU4J se presenta bajo la licencia de ICU. Para obtener información más detallada, consulta la <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Guía de usuario
158 de ICU.</a>
159</p>
160