• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2010 The Android Open Source Project
3   *
4   * Licensed under the Apache License, Version 2.0 (the "License");
5   * you may not use this file except in compliance with the License.
6   * You may obtain a copy of the License at
7   *
8   *      http://www.apache.org/licenses/LICENSE-2.0
9   *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  #ifndef ANDROID_CONFIGURATION_H
18  #define ANDROID_CONFIGURATION_H
19  
20  #include <android/asset_manager.h>
21  
22  #ifdef __cplusplus
23  extern "C" {
24  #endif
25  
26  struct AConfiguration;
27  typedef struct AConfiguration AConfiguration;
28  
29  enum {
30      ACONFIGURATION_ORIENTATION_ANY  = 0x0000,
31      ACONFIGURATION_ORIENTATION_PORT = 0x0001,
32      ACONFIGURATION_ORIENTATION_LAND = 0x0002,
33      ACONFIGURATION_ORIENTATION_SQUARE = 0x0003,
34  
35      ACONFIGURATION_TOUCHSCREEN_ANY  = 0x0000,
36      ACONFIGURATION_TOUCHSCREEN_NOTOUCH  = 0x0001,
37      ACONFIGURATION_TOUCHSCREEN_STYLUS  = 0x0002,
38      ACONFIGURATION_TOUCHSCREEN_FINGER  = 0x0003,
39  
40      ACONFIGURATION_DENSITY_DEFAULT = 0,
41      ACONFIGURATION_DENSITY_LOW = 120,
42      ACONFIGURATION_DENSITY_MEDIUM = 160,
43      ACONFIGURATION_DENSITY_TV = 213,
44      ACONFIGURATION_DENSITY_HIGH = 240,
45      ACONFIGURATION_DENSITY_NONE = 0xffff,
46  
47      ACONFIGURATION_KEYBOARD_ANY  = 0x0000,
48      ACONFIGURATION_KEYBOARD_NOKEYS  = 0x0001,
49      ACONFIGURATION_KEYBOARD_QWERTY  = 0x0002,
50      ACONFIGURATION_KEYBOARD_12KEY  = 0x0003,
51  
52      ACONFIGURATION_NAVIGATION_ANY  = 0x0000,
53      ACONFIGURATION_NAVIGATION_NONAV  = 0x0001,
54      ACONFIGURATION_NAVIGATION_DPAD  = 0x0002,
55      ACONFIGURATION_NAVIGATION_TRACKBALL  = 0x0003,
56      ACONFIGURATION_NAVIGATION_WHEEL  = 0x0004,
57  
58      ACONFIGURATION_KEYSHIDDEN_ANY = 0x0000,
59      ACONFIGURATION_KEYSHIDDEN_NO = 0x0001,
60      ACONFIGURATION_KEYSHIDDEN_YES = 0x0002,
61      ACONFIGURATION_KEYSHIDDEN_SOFT = 0x0003,
62  
63      ACONFIGURATION_NAVHIDDEN_ANY = 0x0000,
64      ACONFIGURATION_NAVHIDDEN_NO = 0x0001,
65      ACONFIGURATION_NAVHIDDEN_YES = 0x0002,
66  
67      ACONFIGURATION_SCREENSIZE_ANY  = 0x00,
68      ACONFIGURATION_SCREENSIZE_SMALL = 0x01,
69      ACONFIGURATION_SCREENSIZE_NORMAL = 0x02,
70      ACONFIGURATION_SCREENSIZE_LARGE = 0x03,
71      ACONFIGURATION_SCREENSIZE_XLARGE = 0x04,
72  
73      ACONFIGURATION_SCREENLONG_ANY = 0x00,
74      ACONFIGURATION_SCREENLONG_NO = 0x1,
75      ACONFIGURATION_SCREENLONG_YES = 0x2,
76  
77      ACONFIGURATION_UI_MODE_TYPE_ANY = 0x00,
78      ACONFIGURATION_UI_MODE_TYPE_NORMAL = 0x01,
79      ACONFIGURATION_UI_MODE_TYPE_DESK = 0x02,
80      ACONFIGURATION_UI_MODE_TYPE_CAR = 0x03,
81      ACONFIGURATION_UI_MODE_TYPE_TELEVISION = 0x04,
82  
83      ACONFIGURATION_UI_MODE_NIGHT_ANY = 0x00,
84      ACONFIGURATION_UI_MODE_NIGHT_NO = 0x1,
85      ACONFIGURATION_UI_MODE_NIGHT_YES = 0x2,
86  
87      ACONFIGURATION_SCREEN_WIDTH_DP_ANY = 0x0000,
88  
89      ACONFIGURATION_SCREEN_HEIGHT_DP_ANY = 0x0000,
90  
91      ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY = 0x0000,
92  
93      ACONFIGURATION_MCC = 0x0001,
94      ACONFIGURATION_MNC = 0x0002,
95      ACONFIGURATION_LOCALE = 0x0004,
96      ACONFIGURATION_TOUCHSCREEN = 0x0008,
97      ACONFIGURATION_KEYBOARD = 0x0010,
98      ACONFIGURATION_KEYBOARD_HIDDEN = 0x0020,
99      ACONFIGURATION_NAVIGATION = 0x0040,
100      ACONFIGURATION_ORIENTATION = 0x0080,
101      ACONFIGURATION_DENSITY = 0x0100,
102      ACONFIGURATION_SCREEN_SIZE = 0x0200,
103      ACONFIGURATION_VERSION = 0x0400,
104      ACONFIGURATION_SCREEN_LAYOUT = 0x0800,
105      ACONFIGURATION_UI_MODE = 0x1000,
106      ACONFIGURATION_SMALLEST_SCREEN_SIZE = 0x2000,
107  };
108  
109  /**
110   * Create a new AConfiguration, initialized with no values set.
111   */
112  AConfiguration* AConfiguration_new();
113  
114  /**
115   * Free an AConfiguration that was previously created with
116   * AConfiguration_new().
117   */
118  void AConfiguration_delete(AConfiguration* config);
119  
120  /**
121   * Create and return a new AConfiguration based on the current configuration in
122   * use in the given AssetManager.
123   */
124  void AConfiguration_fromAssetManager(AConfiguration* out, AAssetManager* am);
125  
126  /**
127   * Copy the contents of 'src' to 'dest'.
128   */
129  void AConfiguration_copy(AConfiguration* dest, AConfiguration* src);
130  
131  /**
132   * Return the current MCC set in the configuration.  0 if not set.
133   */
134  int32_t AConfiguration_getMcc(AConfiguration* config);
135  
136  /**
137   * Set the current MCC in the configuration.  0 to clear.
138   */
139  void AConfiguration_setMcc(AConfiguration* config, int32_t mcc);
140  
141  /**
142   * Return the current MNC set in the configuration.  0 if not set.
143   */
144  int32_t AConfiguration_getMnc(AConfiguration* config);
145  
146  /**
147   * Set the current MNC in the configuration.  0 to clear.
148   */
149  void AConfiguration_setMnc(AConfiguration* config, int32_t mnc);
150  
151  /**
152   * Return the current language code set in the configuration.  The output will
153   * be filled with an array of two characters.  They are not 0-terminated.  If
154   * a language is not set, they will be 0.
155   */
156  void AConfiguration_getLanguage(AConfiguration* config, char* outLanguage);
157  
158  /**
159   * Set the current language code in the configuration, from the first two
160   * characters in the string.
161   */
162  void AConfiguration_setLanguage(AConfiguration* config, const char* language);
163  
164  /**
165   * Return the current country code set in the configuration.  The output will
166   * be filled with an array of two characters.  They are not 0-terminated.  If
167   * a country is not set, they will be 0.
168   */
169  void AConfiguration_getCountry(AConfiguration* config, char* outCountry);
170  
171  /**
172   * Set the current country code in the configuration, from the first two
173   * characters in the string.
174   */
175  void AConfiguration_setCountry(AConfiguration* config, const char* country);
176  
177  /**
178   * Return the current ACONFIGURATION_ORIENTATION_* set in the configuration.
179   */
180  int32_t AConfiguration_getOrientation(AConfiguration* config);
181  
182  /**
183   * Set the current orientation in the configuration.
184   */
185  void AConfiguration_setOrientation(AConfiguration* config, int32_t orientation);
186  
187  /**
188   * Return the current ACONFIGURATION_TOUCHSCREEN_* set in the configuration.
189   */
190  int32_t AConfiguration_getTouchscreen(AConfiguration* config);
191  
192  /**
193   * Set the current touchscreen in the configuration.
194   */
195  void AConfiguration_setTouchscreen(AConfiguration* config, int32_t touchscreen);
196  
197  /**
198   * Return the current ACONFIGURATION_DENSITY_* set in the configuration.
199   */
200  int32_t AConfiguration_getDensity(AConfiguration* config);
201  
202  /**
203   * Set the current density in the configuration.
204   */
205  void AConfiguration_setDensity(AConfiguration* config, int32_t density);
206  
207  /**
208   * Return the current ACONFIGURATION_KEYBOARD_* set in the configuration.
209   */
210  int32_t AConfiguration_getKeyboard(AConfiguration* config);
211  
212  /**
213   * Set the current keyboard in the configuration.
214   */
215  void AConfiguration_setKeyboard(AConfiguration* config, int32_t keyboard);
216  
217  /**
218   * Return the current ACONFIGURATION_NAVIGATION_* set in the configuration.
219   */
220  int32_t AConfiguration_getNavigation(AConfiguration* config);
221  
222  /**
223   * Set the current navigation in the configuration.
224   */
225  void AConfiguration_setNavigation(AConfiguration* config, int32_t navigation);
226  
227  /**
228   * Return the current ACONFIGURATION_KEYSHIDDEN_* set in the configuration.
229   */
230  int32_t AConfiguration_getKeysHidden(AConfiguration* config);
231  
232  /**
233   * Set the current keys hidden in the configuration.
234   */
235  void AConfiguration_setKeysHidden(AConfiguration* config, int32_t keysHidden);
236  
237  /**
238   * Return the current ACONFIGURATION_NAVHIDDEN_* set in the configuration.
239   */
240  int32_t AConfiguration_getNavHidden(AConfiguration* config);
241  
242  /**
243   * Set the current nav hidden in the configuration.
244   */
245  void AConfiguration_setNavHidden(AConfiguration* config, int32_t navHidden);
246  
247  /**
248   * Return the current SDK (API) version set in the configuration.
249   */
250  int32_t AConfiguration_getSdkVersion(AConfiguration* config);
251  
252  /**
253   * Set the current SDK version in the configuration.
254   */
255  void AConfiguration_setSdkVersion(AConfiguration* config, int32_t sdkVersion);
256  
257  /**
258   * Return the current ACONFIGURATION_SCREENSIZE_* set in the configuration.
259   */
260  int32_t AConfiguration_getScreenSize(AConfiguration* config);
261  
262  /**
263   * Set the current screen size in the configuration.
264   */
265  void AConfiguration_setScreenSize(AConfiguration* config, int32_t screenSize);
266  
267  /**
268   * Return the current ACONFIGURATION_SCREENLONG_* set in the configuration.
269   */
270  int32_t AConfiguration_getScreenLong(AConfiguration* config);
271  
272  /**
273   * Set the current screen long in the configuration.
274   */
275  void AConfiguration_setScreenLong(AConfiguration* config, int32_t screenLong);
276  
277  /**
278   * Return the current ACONFIGURATION_UI_MODE_TYPE_* set in the configuration.
279   */
280  int32_t AConfiguration_getUiModeType(AConfiguration* config);
281  
282  /**
283   * Set the current UI mode type in the configuration.
284   */
285  void AConfiguration_setUiModeType(AConfiguration* config, int32_t uiModeType);
286  
287  /**
288   * Return the current ACONFIGURATION_UI_MODE_NIGHT_* set in the configuration.
289   */
290  int32_t AConfiguration_getUiModeNight(AConfiguration* config);
291  
292  /**
293   * Set the current UI mode night in the configuration.
294   */
295  void AConfiguration_setUiModeNight(AConfiguration* config, int32_t uiModeNight);
296  
297  /**
298   * Return the current configuration screen width in dp units, or
299   * ACONFIGURATION_SCREEN_WIDTH_DP_ANY if not set.
300   */
301  int32_t AConfiguration_getScreenWidthDp(AConfiguration* config);
302  
303  /**
304   * Set the configuration's current screen width in dp units.
305   */
306  void AConfiguration_setScreenWidthDp(AConfiguration* config, int32_t value);
307  
308  /**
309   * Return the current configuration screen height in dp units, or
310   * ACONFIGURATION_SCREEN_HEIGHT_DP_ANY if not set.
311   */
312  int32_t AConfiguration_getScreenHeightDp(AConfiguration* config);
313  
314  /**
315   * Set the configuration's current screen width in dp units.
316   */
317  void AConfiguration_setScreenHeightDp(AConfiguration* config, int32_t value);
318  
319  /**
320   * Return the configuration's smallest screen width in dp units, or
321   * ACONFIGURATION_SMALLEST_SCREEN_WIDTH_DP_ANY if not set.
322   */
323  int32_t AConfiguration_getSmallestScreenWidthDp(AConfiguration* config);
324  
325  /**
326   * Set the configuration's smallest screen width in dp units.
327   */
328  void AConfiguration_setSmallestScreenWidthDp(AConfiguration* config, int32_t value);
329  
330  /**
331   * Perform a diff between two configurations.  Returns a bit mask of
332   * ACONFIGURATION_* constants, each bit set meaning that configuration element
333   * is different between them.
334   */
335  int32_t AConfiguration_diff(AConfiguration* config1, AConfiguration* config2);
336  
337  /**
338   * Determine whether 'base' is a valid configuration for use within the
339   * environment 'requested'.  Returns 0 if there are any values in 'base'
340   * that conflict with 'requested'.  Returns 1 if it does not conflict.
341   */
342  int32_t AConfiguration_match(AConfiguration* base, AConfiguration* requested);
343  
344  /**
345   * Determine whether the configuration in 'test' is better than the existing
346   * configuration in 'base'.  If 'requested' is non-NULL, this decision is based
347   * on the overall configuration given there.  If it is NULL, this decision is
348   * simply based on which configuration is more specific.  Returns non-0 if
349   * 'test' is better than 'base'.
350   *
351   * This assumes you have already filtered the configurations with
352   * AConfiguration_match().
353   */
354  int32_t AConfiguration_isBetterThan(AConfiguration* base, AConfiguration* test,
355          AConfiguration* requested);
356  
357  #ifdef __cplusplus
358  };
359  #endif
360  
361  #endif // ANDROID_CONFIGURATION_H
362