gametel 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (907) hide show
  1. data/features/main_screen.feature +1 -1
  2. data/features/step_definitions/button_steps.rb +1 -1
  3. data/features/step_definitions/main_screen_steps.rb +1 -2
  4. data/features/support/env.rb +24 -1
  5. data/features/text.feature +0 -12
  6. data/features/view.feature +0 -1
  7. data/lib/gametel.rb +3 -4
  8. data/lib/gametel/accessors.rb +0 -1
  9. data/lib/gametel/platforms/brazenhead/basic.rb +17 -0
  10. data/lib/gametel/platforms/brazenhead/spinner.rb +17 -0
  11. data/lib/gametel/platforms/brazenhead/text.rb +39 -0
  12. data/lib/gametel/platforms/brazenhead/view.rb +24 -0
  13. data/lib/gametel/platforms/brazenhead_platform.rb +139 -0
  14. data/lib/gametel/version.rb +1 -1
  15. data/spec/lib/gametel/accessors_spec.rb +46 -31
  16. data/spec/lib/gametel_spec.rb +30 -12
  17. data/spec/spec_helper.rb +4 -2
  18. metadata +32 -897
  19. data/.calabash_settings +0 -1
  20. data/.gitignore +0 -26
  21. data/.irbrc +0 -16
  22. data/.rspec +0 -2
  23. data/.rvmrc +0 -1
  24. data/.travis.yml +0 -5
  25. data/ApiDemos/.classpath +0 -8
  26. data/ApiDemos/.project +0 -33
  27. data/ApiDemos/.settings/org.eclipse.jdt.core.prefs +0 -4
  28. data/ApiDemos/AndroidManifest.xml +0 -2715
  29. data/ApiDemos/README.txt +0 -19
  30. data/ApiDemos/assets/HelloActivity.apk +0 -0
  31. data/ApiDemos/assets/fonts/samplefont.ttf +0 -0
  32. data/ApiDemos/assets/read_asset.txt +0 -3
  33. data/ApiDemos/build.xml +0 -83
  34. data/ApiDemos/proguard-project.txt +0 -20
  35. data/ApiDemos/project.properties +0 -14
  36. data/ApiDemos/res/anim/animator.xml +0 -23
  37. data/ApiDemos/res/anim/animator_set.xml +0 -32
  38. data/ApiDemos/res/anim/color_animator.xml +0 -23
  39. data/ApiDemos/res/anim/cycle_7.xml +0 -17
  40. data/ApiDemos/res/anim/fade.xml +0 -20
  41. data/ApiDemos/res/anim/hold.xml +0 -20
  42. data/ApiDemos/res/anim/hyperspace_in.xml +0 -17
  43. data/ApiDemos/res/anim/hyperspace_out.xml +0 -61
  44. data/ApiDemos/res/anim/layout_animation_row_left_slide.xml +0 -19
  45. data/ApiDemos/res/anim/layout_animation_row_right_slide.xml +0 -20
  46. data/ApiDemos/res/anim/layout_animation_table.xml +0 -19
  47. data/ApiDemos/res/anim/layout_bottom_to_top_slide.xml +0 -20
  48. data/ApiDemos/res/anim/layout_grid_fade.xml +0 -20
  49. data/ApiDemos/res/anim/layout_grid_inverse_fade.xml +0 -21
  50. data/ApiDemos/res/anim/layout_random_fade.xml +0 -20
  51. data/ApiDemos/res/anim/layout_wave_scale.xml +0 -21
  52. data/ApiDemos/res/anim/object_animator.xml +0 -23
  53. data/ApiDemos/res/anim/push_left_in.xml +0 -20
  54. data/ApiDemos/res/anim/push_left_out.xml +0 -20
  55. data/ApiDemos/res/anim/push_up_in.xml +0 -20
  56. data/ApiDemos/res/anim/push_up_out.xml +0 -20
  57. data/ApiDemos/res/anim/shake.xml +0 -17
  58. data/ApiDemos/res/anim/slide_left.xml +0 -20
  59. data/ApiDemos/res/anim/slide_right.xml +0 -20
  60. data/ApiDemos/res/anim/slide_top_to_bottom.xml +0 -20
  61. data/ApiDemos/res/anim/wave_scale.xml +0 -33
  62. data/ApiDemos/res/anim/zoom_enter.xml +0 -28
  63. data/ApiDemos/res/anim/zoom_exit.xml +0 -33
  64. data/ApiDemos/res/animator/fragment_slide_left_enter.xml +0 -32
  65. data/ApiDemos/res/animator/fragment_slide_left_exit.xml +0 -32
  66. data/ApiDemos/res/animator/fragment_slide_right_enter.xml +0 -32
  67. data/ApiDemos/res/animator/fragment_slide_right_exit.xml +0 -32
  68. data/ApiDemos/res/drawable-hdpi/alert_dialog_icon.png +0 -0
  69. data/ApiDemos/res/drawable-hdpi/apidemo_androidlogo.png +0 -0
  70. data/ApiDemos/res/drawable-hdpi/app_sample_code.png +0 -0
  71. data/ApiDemos/res/drawable-hdpi/arrow_down_float.png +0 -0
  72. data/ApiDemos/res/drawable-hdpi/arrow_up_float.png +0 -0
  73. data/ApiDemos/res/drawable-hdpi/btn_check_off.png +0 -0
  74. data/ApiDemos/res/drawable-hdpi/btn_check_on.png +0 -0
  75. data/ApiDemos/res/drawable-hdpi/btn_circle_normal.png +0 -0
  76. data/ApiDemos/res/drawable-hdpi/btn_default_normal.9.png +0 -0
  77. data/ApiDemos/res/drawable-hdpi/button.9.png +0 -0
  78. data/ApiDemos/res/drawable-hdpi/ic_contact_picture.png +0 -0
  79. data/ApiDemos/res/drawable-hdpi/ic_launcher_settings.png +0 -0
  80. data/ApiDemos/res/drawable-hdpi/ic_popup_reminder.png +0 -0
  81. data/ApiDemos/res/drawable-hdpi/icon48x48_2.png +0 -0
  82. data/ApiDemos/res/drawable-hdpi/logo240dpi.png +0 -0
  83. data/ApiDemos/res/drawable-hdpi/npatch240dpi.9.png +0 -0
  84. data/ApiDemos/res/drawable-hdpi/progress_circular_background.png +0 -0
  85. data/ApiDemos/res/drawable-hdpi/progress_particle.png +0 -0
  86. data/ApiDemos/res/drawable-hdpi/reslogo240dpi.png +0 -0
  87. data/ApiDemos/res/drawable-hdpi/scrollbar_state2.png +0 -0
  88. data/ApiDemos/res/drawable-hdpi/smlnpatch240dpi.9.png +0 -0
  89. data/ApiDemos/res/drawable-hdpi/star_big_on.png +0 -0
  90. data/ApiDemos/res/drawable-hdpi/stat_happy.png +0 -0
  91. data/ApiDemos/res/drawable-hdpi/stat_neutral.png +0 -0
  92. data/ApiDemos/res/drawable-hdpi/stat_sad.png +0 -0
  93. data/ApiDemos/res/drawable-hdpi/stat_sample.png +0 -0
  94. data/ApiDemos/res/drawable-hdpi/stylogo240dpi.png +0 -0
  95. data/ApiDemos/res/drawable-ldpi/logo120dpi.png +0 -0
  96. data/ApiDemos/res/drawable-ldpi/npatch120dpi.9.png +0 -0
  97. data/ApiDemos/res/drawable-ldpi/reslogo120dpi.png +0 -0
  98. data/ApiDemos/res/drawable-ldpi/smlnpatch120dpi.9.png +0 -0
  99. data/ApiDemos/res/drawable-ldpi/stylogo120dpi.png +0 -0
  100. data/ApiDemos/res/drawable-mdpi/alert_dialog_icon.png +0 -0
  101. data/ApiDemos/res/drawable-mdpi/apidemo_androidlogo.png +0 -0
  102. data/ApiDemos/res/drawable-mdpi/app_sample_code.png +0 -0
  103. data/ApiDemos/res/drawable-mdpi/arrow_down_float.png +0 -0
  104. data/ApiDemos/res/drawable-mdpi/arrow_up_float.png +0 -0
  105. data/ApiDemos/res/drawable-mdpi/btn_check_off.png +0 -0
  106. data/ApiDemos/res/drawable-mdpi/btn_check_on.png +0 -0
  107. data/ApiDemos/res/drawable-mdpi/btn_circle_normal.png +0 -0
  108. data/ApiDemos/res/drawable-mdpi/btn_default_normal.9.png +0 -0
  109. data/ApiDemos/res/drawable-mdpi/button.9.png +0 -0
  110. data/ApiDemos/res/drawable-mdpi/ic_contact_picture.png +0 -0
  111. data/ApiDemos/res/drawable-mdpi/ic_launcher_settings.png +0 -0
  112. data/ApiDemos/res/drawable-mdpi/ic_popup_reminder.png +0 -0
  113. data/ApiDemos/res/drawable-mdpi/ic_settings_applications.png +0 -0
  114. data/ApiDemos/res/drawable-mdpi/ic_settings_display.png +0 -0
  115. data/ApiDemos/res/drawable-mdpi/icon48x48_2.png +0 -0
  116. data/ApiDemos/res/drawable-mdpi/progress_circular_background.png +0 -0
  117. data/ApiDemos/res/drawable-mdpi/progress_particle.png +0 -0
  118. data/ApiDemos/res/drawable-mdpi/scrollbar_state2.png +0 -0
  119. data/ApiDemos/res/drawable-mdpi/star_big_on.png +0 -0
  120. data/ApiDemos/res/drawable-mdpi/stat_happy.png +0 -0
  121. data/ApiDemos/res/drawable-mdpi/stat_neutral.png +0 -0
  122. data/ApiDemos/res/drawable-mdpi/stat_sad.png +0 -0
  123. data/ApiDemos/res/drawable-mdpi/stat_sample.png +0 -0
  124. data/ApiDemos/res/drawable-nodpi/frantic.jpg +0 -0
  125. data/ApiDemos/res/drawable-nodpi/logonodpi120.png +0 -0
  126. data/ApiDemos/res/drawable-nodpi/logonodpi160.png +0 -0
  127. data/ApiDemos/res/drawable-nodpi/logonodpi240.png +0 -0
  128. data/ApiDemos/res/drawable-xhdpi/ic_launcher_settings.png +0 -0
  129. data/ApiDemos/res/drawable/animated_gif.gif +0 -0
  130. data/ApiDemos/res/drawable/balloons.jpg +0 -0
  131. data/ApiDemos/res/drawable/beach.jpg +0 -0
  132. data/ApiDemos/res/drawable/black_box.xml +0 -21
  133. data/ApiDemos/res/drawable/black_opaque_box.xml +0 -21
  134. data/ApiDemos/res/drawable/box.xml +0 -24
  135. data/ApiDemos/res/drawable/circular_progress.xml +0 -29
  136. data/ApiDemos/res/drawable/filled_box.xml +0 -25
  137. data/ApiDemos/res/drawable/frog.gif +0 -0
  138. data/ApiDemos/res/drawable/gallery_background_1.xml +0 -20
  139. data/ApiDemos/res/drawable/gallery_photo_1.jpg +0 -0
  140. data/ApiDemos/res/drawable/gallery_photo_2.jpg +0 -0
  141. data/ApiDemos/res/drawable/gallery_photo_3.jpg +0 -0
  142. data/ApiDemos/res/drawable/gallery_photo_4.jpg +0 -0
  143. data/ApiDemos/res/drawable/gallery_photo_5.jpg +0 -0
  144. data/ApiDemos/res/drawable/gallery_photo_6.jpg +0 -0
  145. data/ApiDemos/res/drawable/gallery_photo_7.jpg +0 -0
  146. data/ApiDemos/res/drawable/gallery_photo_8.jpg +0 -0
  147. data/ApiDemos/res/drawable/hover_background.xml +0 -20
  148. data/ApiDemos/res/drawable/hover_background_active.xml +0 -23
  149. data/ApiDemos/res/drawable/hover_background_inactive.xml +0 -23
  150. data/ApiDemos/res/drawable/icon48x48_1.png +0 -0
  151. data/ApiDemos/res/drawable/line.xml +0 -21
  152. data/ApiDemos/res/drawable/logo160dpi.png +0 -0
  153. data/ApiDemos/res/drawable/magnifying_glass.png +0 -0
  154. data/ApiDemos/res/drawable/npatch160dpi.9.png +0 -0
  155. data/ApiDemos/res/drawable/photo1.jpg +0 -0
  156. data/ApiDemos/res/drawable/photo2.jpg +0 -0
  157. data/ApiDemos/res/drawable/photo3.jpg +0 -0
  158. data/ApiDemos/res/drawable/photo4.jpg +0 -0
  159. data/ApiDemos/res/drawable/photo5.jpg +0 -0
  160. data/ApiDemos/res/drawable/photo6.jpg +0 -0
  161. data/ApiDemos/res/drawable/picture_frame.png +0 -0
  162. data/ApiDemos/res/drawable/reslogo160dpi.png +0 -0
  163. data/ApiDemos/res/drawable/sample_0.jpg +0 -0
  164. data/ApiDemos/res/drawable/sample_1.jpg +0 -0
  165. data/ApiDemos/res/drawable/sample_2.jpg +0 -0
  166. data/ApiDemos/res/drawable/sample_3.jpg +0 -0
  167. data/ApiDemos/res/drawable/sample_4.jpg +0 -0
  168. data/ApiDemos/res/drawable/sample_5.jpg +0 -0
  169. data/ApiDemos/res/drawable/sample_6.jpg +0 -0
  170. data/ApiDemos/res/drawable/sample_7.jpg +0 -0
  171. data/ApiDemos/res/drawable/sample_thumb_0.jpg +0 -0
  172. data/ApiDemos/res/drawable/sample_thumb_1.jpg +0 -0
  173. data/ApiDemos/res/drawable/sample_thumb_2.jpg +0 -0
  174. data/ApiDemos/res/drawable/sample_thumb_3.jpg +0 -0
  175. data/ApiDemos/res/drawable/sample_thumb_4.jpg +0 -0
  176. data/ApiDemos/res/drawable/sample_thumb_5.jpg +0 -0
  177. data/ApiDemos/res/drawable/sample_thumb_6.jpg +0 -0
  178. data/ApiDemos/res/drawable/sample_thumb_7.jpg +0 -0
  179. data/ApiDemos/res/drawable/scrollbar_vertical_thumb.xml +0 -21
  180. data/ApiDemos/res/drawable/scrollbar_vertical_track.xml +0 -21
  181. data/ApiDemos/res/drawable/shape_1.xml +0 -22
  182. data/ApiDemos/res/drawable/shape_2.xml +0 -24
  183. data/ApiDemos/res/drawable/shape_3.xml +0 -24
  184. data/ApiDemos/res/drawable/shape_4.xml +0 -20
  185. data/ApiDemos/res/drawable/shape_5.xml +0 -23
  186. data/ApiDemos/res/drawable/smlnpatch160dpi.9.png +0 -0
  187. data/ApiDemos/res/drawable/stylogo160dpi.png +0 -0
  188. data/ApiDemos/res/layout-h550dp/resources_height.xml +0 -53
  189. data/ApiDemos/res/layout-h670dp/resources_height.xml +0 -63
  190. data/ApiDemos/res/layout-h974dp/resources_height.xml +0 -83
  191. data/ApiDemos/res/layout-land/fragment_arguments.xml +0 -57
  192. data/ApiDemos/res/layout-land/fragment_layout.xml +0 -34
  193. data/ApiDemos/res/layout-sw480dp/resources_smallest_width_inner.xml +0 -43
  194. data/ApiDemos/res/layout-sw480dp/resources_smallest_width_row.xml +0 -43
  195. data/ApiDemos/res/layout-sw600dp/resources_smallest_width_inner.xml +0 -53
  196. data/ApiDemos/res/layout-sw600dp/resources_smallest_width_row.xml +0 -53
  197. data/ApiDemos/res/layout-sw720dp/resources_smallest_width_inner.xml +0 -63
  198. data/ApiDemos/res/layout-sw720dp/resources_smallest_width_row.xml +0 -63
  199. data/ApiDemos/res/layout-w1024dp/resources_width.xml +0 -83
  200. data/ApiDemos/res/layout-w600dp/resources_width.xml +0 -53
  201. data/ApiDemos/res/layout-w720dp/resources_width.xml +0 -63
  202. data/ApiDemos/res/layout/accessibility_service.xml +0 -36
  203. data/ApiDemos/res/layout/action_bar_display_options.xml +0 -48
  204. data/ApiDemos/res/layout/action_bar_display_options_custom.xml +0 -17
  205. data/ApiDemos/res/layout/action_bar_settings_action_provider.xml +0 -34
  206. data/ApiDemos/res/layout/action_bar_tab_content.xml +0 -19
  207. data/ApiDemos/res/layout/action_bar_tabs.xml +0 -49
  208. data/ApiDemos/res/layout/activity_animation.xml +0 -42
  209. data/ApiDemos/res/layout/activity_recreate.xml +0 -37
  210. data/ApiDemos/res/layout/alarm_controller.xml +0 -45
  211. data/ApiDemos/res/layout/alarm_service.xml +0 -41
  212. data/ApiDemos/res/layout/alert_dialog.xml +0 -60
  213. data/ApiDemos/res/layout/alert_dialog_text_entry.xml +0 -67
  214. data/ApiDemos/res/layout/animation_1.xml +0 -44
  215. data/ApiDemos/res/layout/animation_2.xml +0 -67
  216. data/ApiDemos/res/layout/animation_3.xml +0 -44
  217. data/ApiDemos/res/layout/animation_cloning.xml +0 -28
  218. data/ApiDemos/res/layout/animation_custom_evaluator.xml +0 -28
  219. data/ApiDemos/res/layout/animation_loading.xml +0 -28
  220. data/ApiDemos/res/layout/animation_multi_property.xml +0 -28
  221. data/ApiDemos/res/layout/animation_reversing.xml +0 -40
  222. data/ApiDemos/res/layout/animation_seeking.xml +0 -40
  223. data/ApiDemos/res/layout/animations_main_screen.xml +0 -36
  224. data/ApiDemos/res/layout/animator_custom_evaluator.xml +0 -34
  225. data/ApiDemos/res/layout/animator_events.xml +0 -122
  226. data/ApiDemos/res/layout/appwidget_configure.xml +0 -42
  227. data/ApiDemos/res/layout/appwidget_provider.xml +0 -24
  228. data/ApiDemos/res/layout/autocomplete_1.xml +0 -48
  229. data/ApiDemos/res/layout/autocomplete_2.xml +0 -44
  230. data/ApiDemos/res/layout/autocomplete_3.xml +0 -165
  231. data/ApiDemos/res/layout/autocomplete_4.xml +0 -49
  232. data/ApiDemos/res/layout/autocomplete_5.xml +0 -45
  233. data/ApiDemos/res/layout/autocomplete_6.xml +0 -48
  234. data/ApiDemos/res/layout/baseline_1.xml +0 -40
  235. data/ApiDemos/res/layout/baseline_2.xml +0 -43
  236. data/ApiDemos/res/layout/baseline_3.xml +0 -56
  237. data/ApiDemos/res/layout/baseline_4.xml +0 -55
  238. data/ApiDemos/res/layout/baseline_6.xml +0 -34
  239. data/ApiDemos/res/layout/baseline_7.xml +0 -36
  240. data/ApiDemos/res/layout/baseline_nested_1.xml +0 -85
  241. data/ApiDemos/res/layout/baseline_nested_2.xml +0 -85
  242. data/ApiDemos/res/layout/baseline_nested_3.xml +0 -96
  243. data/ApiDemos/res/layout/bouncing_balls.xml +0 -22
  244. data/ApiDemos/res/layout/buttons_1.xml +0 -53
  245. data/ApiDemos/res/layout/chronometer.xml +0 -64
  246. data/ApiDemos/res/layout/clipboard.xml +0 -107
  247. data/ApiDemos/res/layout/contacts_filter.xml +0 -37
  248. data/ApiDemos/res/layout/controls_1.xml +0 -154
  249. data/ApiDemos/res/layout/custom_dialog_activity.xml +0 -24
  250. data/ApiDemos/res/layout/custom_title.xml +0 -57
  251. data/ApiDemos/res/layout/custom_title_1.xml +0 -33
  252. data/ApiDemos/res/layout/custom_view_1.xml +0 -44
  253. data/ApiDemos/res/layout/custom_view_accessibility.xml +0 -44
  254. data/ApiDemos/res/layout/date_widgets_example_1.xml +0 -40
  255. data/ApiDemos/res/layout/date_widgets_example_2.xml +0 -33
  256. data/ApiDemos/res/layout/density_image_views.xml +0 -37
  257. data/ApiDemos/res/layout/density_styled_image_views.xml +0 -26
  258. data/ApiDemos/res/layout/dialog_activity.xml +0 -53
  259. data/ApiDemos/res/layout/drag_layout.xml +0 -93
  260. data/ApiDemos/res/layout/external_storage.xml +0 -27
  261. data/ApiDemos/res/layout/external_storage_item.xml +0 -58
  262. data/ApiDemos/res/layout/focus_1.xml +0 -42
  263. data/ApiDemos/res/layout/focus_2.xml +0 -41
  264. data/ApiDemos/res/layout/focus_3.xml +0 -64
  265. data/ApiDemos/res/layout/focus_5.xml +0 -60
  266. data/ApiDemos/res/layout/foreground_dispatch.xml +0 -23
  267. data/ApiDemos/res/layout/foreground_service_controller.xml +0 -49
  268. data/ApiDemos/res/layout/forward_target.xml +0 -30
  269. data/ApiDemos/res/layout/forwarding.xml +0 -37
  270. data/ApiDemos/res/layout/fragment_arguments.xml +0 -54
  271. data/ApiDemos/res/layout/fragment_context_menu.xml +0 -38
  272. data/ApiDemos/res/layout/fragment_dialog.xml +0 -40
  273. data/ApiDemos/res/layout/fragment_dialog_or_activity.xml +0 -64
  274. data/ApiDemos/res/layout/fragment_hide_show.xml +0 -57
  275. data/ApiDemos/res/layout/fragment_layout.xml +0 -27
  276. data/ApiDemos/res/layout/fragment_menu.xml +0 -46
  277. data/ApiDemos/res/layout/fragment_pager_support.xml +0 -44
  278. data/ApiDemos/res/layout/fragment_pager_support_list.xml +0 -52
  279. data/ApiDemos/res/layout/fragment_retain_instance.xml +0 -46
  280. data/ApiDemos/res/layout/fragment_stack.xml +0 -38
  281. data/ApiDemos/res/layout/gallery_1.xml +0 -32
  282. data/ApiDemos/res/layout/gallery_2.xml +0 -38
  283. data/ApiDemos/res/layout/game_controller_input.xml +0 -52
  284. data/ApiDemos/res/layout/game_controller_input_heading.xml +0 -21
  285. data/ApiDemos/res/layout/game_controller_input_text_column.xml +0 -34
  286. data/ApiDemos/res/layout/google_login.xml +0 -60
  287. data/ApiDemos/res/layout/grid_1.xml +0 -29
  288. data/ApiDemos/res/layout/grid_2.xml +0 -30
  289. data/ApiDemos/res/layout/grid_layout_1.xml +0 -87
  290. data/ApiDemos/res/layout/hello_world.xml +0 -26
  291. data/ApiDemos/res/layout/horizontal_scroll_view1.xml +0 -26
  292. data/ApiDemos/res/layout/hover.xml +0 -64
  293. data/ApiDemos/res/layout/image_button_1.xml +0 -36
  294. data/ApiDemos/res/layout/image_switcher_1.xml +0 -40
  295. data/ApiDemos/res/layout/image_view_1.xml +0 -144
  296. data/ApiDemos/res/layout/incoming_message.xml +0 -50
  297. data/ApiDemos/res/layout/incoming_message_info.xml +0 -38
  298. data/ApiDemos/res/layout/incoming_message_interstitial.xml +0 -37
  299. data/ApiDemos/res/layout/incoming_message_panel.xml +0 -42
  300. data/ApiDemos/res/layout/incoming_message_view.xml +0 -80
  301. data/ApiDemos/res/layout/install_apk.xml +0 -56
  302. data/ApiDemos/res/layout/intent_activity_flags.xml +0 -43
  303. data/ApiDemos/res/layout/intents.xml +0 -37
  304. data/ApiDemos/res/layout/labeled_text_edit.xml +0 -38
  305. data/ApiDemos/res/layout/launcher_shortcuts.xml +0 -40
  306. data/ApiDemos/res/layout/layout_animation_1.xml +0 -30
  307. data/ApiDemos/res/layout/layout_animation_3.xml +0 -21
  308. data/ApiDemos/res/layout/layout_animation_4.xml +0 -30
  309. data/ApiDemos/res/layout/layout_animation_5.xml +0 -30
  310. data/ApiDemos/res/layout/layout_animation_6.xml +0 -29
  311. data/ApiDemos/res/layout/layout_animation_7.xml +0 -57
  312. data/ApiDemos/res/layout/layout_animations.xml +0 -80
  313. data/ApiDemos/res/layout/layout_animations_by_default.xml +0 -34
  314. data/ApiDemos/res/layout/layout_animations_hideshow.xml +0 -52
  315. data/ApiDemos/res/layout/linear_layout_1.xml +0 -46
  316. data/ApiDemos/res/layout/linear_layout_10.xml +0 -122
  317. data/ApiDemos/res/layout/linear_layout_2.xml +0 -47
  318. data/ApiDemos/res/layout/linear_layout_3.xml +0 -51
  319. data/ApiDemos/res/layout/linear_layout_4.xml +0 -50
  320. data/ApiDemos/res/layout/linear_layout_5.xml +0 -76
  321. data/ApiDemos/res/layout/linear_layout_6.xml +0 -53
  322. data/ApiDemos/res/layout/linear_layout_7.xml +0 -54
  323. data/ApiDemos/res/layout/linear_layout_8.xml +0 -53
  324. data/ApiDemos/res/layout/linear_layout_9.xml +0 -38
  325. data/ApiDemos/res/layout/link.xml +0 -68
  326. data/ApiDemos/res/layout/list_12.xml +0 -35
  327. data/ApiDemos/res/layout/list_13.xml +0 -34
  328. data/ApiDemos/res/layout/list_7.xml +0 -35
  329. data/ApiDemos/res/layout/list_8.xml +0 -61
  330. data/ApiDemos/res/layout/list_item_checkbox.xml +0 -22
  331. data/ApiDemos/res/layout/list_item_icon_text.xml +0 -32
  332. data/ApiDemos/res/layout/list_position.xml +0 -25
  333. data/ApiDemos/res/layout/local_sample.xml +0 -37
  334. data/ApiDemos/res/layout/local_service_binding.xml +0 -42
  335. data/ApiDemos/res/layout/local_service_controller.xml +0 -42
  336. data/ApiDemos/res/layout/log_text_box_1.xml +0 -42
  337. data/ApiDemos/res/layout/mapview.xml +0 -31
  338. data/ApiDemos/res/layout/marquee.xml +0 -46
  339. data/ApiDemos/res/layout/mediaplayer_1.xml +0 -31
  340. data/ApiDemos/res/layout/mediaplayer_2.xml +0 -13
  341. data/ApiDemos/res/layout/messenger_service_binding.xml +0 -47
  342. data/ApiDemos/res/layout/morse_code.xml +0 -37
  343. data/ApiDemos/res/layout/notify_with_text.xml +0 -34
  344. data/ApiDemos/res/layout/notifying_controller.xml +0 -41
  345. data/ApiDemos/res/layout/overscan.xml +0 -79
  346. data/ApiDemos/res/layout/pick_contact.xml +0 -48
  347. data/ApiDemos/res/layout/popup_menu_1.xml +0 -25
  348. data/ApiDemos/res/layout/preference_widget_mypreference.xml +0 -25
  349. data/ApiDemos/res/layout/progressbar_1.xml +0 -74
  350. data/ApiDemos/res/layout/progressbar_2.xml +0 -41
  351. data/ApiDemos/res/layout/progressbar_3.xml +0 -32
  352. data/ApiDemos/res/layout/progressbar_4.xml +0 -27
  353. data/ApiDemos/res/layout/quick_contacts.xml +0 -47
  354. data/ApiDemos/res/layout/radio_group_1.xml +0 -49
  355. data/ApiDemos/res/layout/ratingbar_1.xml +0 -60
  356. data/ApiDemos/res/layout/read_asset.xml +0 -29
  357. data/ApiDemos/res/layout/receive_result.xml +0 -50
  358. data/ApiDemos/res/layout/redirect_enter.xml +0 -36
  359. data/ApiDemos/res/layout/redirect_getter.xml +0 -42
  360. data/ApiDemos/res/layout/redirect_main.xml +0 -47
  361. data/ApiDemos/res/layout/relative_layout_1.xml +0 -54
  362. data/ApiDemos/res/layout/relative_layout_2.xml +0 -78
  363. data/ApiDemos/res/layout/remote_binding_options.xml +0 -82
  364. data/ApiDemos/res/layout/remote_service_binding.xml +0 -52
  365. data/ApiDemos/res/layout/remote_service_controller.xml +0 -42
  366. data/ApiDemos/res/layout/reorder_four.xml +0 -38
  367. data/ApiDemos/res/layout/reorder_on_launch.xml +0 -38
  368. data/ApiDemos/res/layout/reorder_three.xml +0 -38
  369. data/ApiDemos/res/layout/reorder_two.xml +0 -38
  370. data/ApiDemos/res/layout/resources.xml +0 -55
  371. data/ApiDemos/res/layout/resources_height.xml +0 -33
  372. data/ApiDemos/res/layout/resources_layout_reference.xml +0 -35
  373. data/ApiDemos/res/layout/resources_layout_reference_tablet.xml +0 -35
  374. data/ApiDemos/res/layout/resources_smallest_width.xml +0 -35
  375. data/ApiDemos/res/layout/resources_smallest_width_inner.xml +0 -33
  376. data/ApiDemos/res/layout/resources_smallest_width_row.xml +0 -33
  377. data/ApiDemos/res/layout/resources_width.xml +0 -33
  378. data/ApiDemos/res/layout/resources_width_and_height.xml +0 -35
  379. data/ApiDemos/res/layout/rotating_list.xml +0 -37
  380. data/ApiDemos/res/layout/rotating_view.xml +0 -160
  381. data/ApiDemos/res/layout/save_restore_state.xml +0 -58
  382. data/ApiDemos/res/layout/screen_orientation.xml +0 -37
  383. data/ApiDemos/res/layout/scroll_view_1.xml +0 -90
  384. data/ApiDemos/res/layout/scroll_view_2.xml +0 -41
  385. data/ApiDemos/res/layout/scrollbar1.xml +0 -169
  386. data/ApiDemos/res/layout/scrollbar2.xml +0 -172
  387. data/ApiDemos/res/layout/scrollbar3.xml +0 -136
  388. data/ApiDemos/res/layout/search_invoke.xml +0 -96
  389. data/ApiDemos/res/layout/search_query_results.xml +0 -76
  390. data/ApiDemos/res/layout/search_view.xml +0 -19
  391. data/ApiDemos/res/layout/searchview_actionbar.xml +0 -28
  392. data/ApiDemos/res/layout/searchview_filter.xml +0 -31
  393. data/ApiDemos/res/layout/secure_view.xml +0 -112
  394. data/ApiDemos/res/layout/secure_view_overlay.xml +0 -50
  395. data/ApiDemos/res/layout/seekbar_1.xml +0 -36
  396. data/ApiDemos/res/layout/select_dialog.xml +0 -29
  397. data/ApiDemos/res/layout/send_result.xml +0 -45
  398. data/ApiDemos/res/layout/service_start_arguments_controller.xml +0 -57
  399. data/ApiDemos/res/layout/shape_drawable_1.xml +0 -73
  400. data/ApiDemos/res/layout/simple_list_item_checkable_1.xml +0 -29
  401. data/ApiDemos/res/layout/sms_demo.xml +0 -67
  402. data/ApiDemos/res/layout/soft_input_modes.xml +0 -64
  403. data/ApiDemos/res/layout/spinner_1.xml +0 -51
  404. data/ApiDemos/res/layout/split_touch_view.xml +0 -42
  405. data/ApiDemos/res/layout/status_bar_balloon.xml +0 -32
  406. data/ApiDemos/res/layout/status_bar_notifications.xml +0 -157
  407. data/ApiDemos/res/layout/styled_text.xml +0 -52
  408. data/ApiDemos/res/layout/surface_view_overlay.xml +0 -84
  409. data/ApiDemos/res/layout/switches.xml +0 -82
  410. data/ApiDemos/res/layout/table_layout_1.xml +0 -56
  411. data/ApiDemos/res/layout/table_layout_10.xml +0 -58
  412. data/ApiDemos/res/layout/table_layout_11.xml +0 -93
  413. data/ApiDemos/res/layout/table_layout_12.xml +0 -85
  414. data/ApiDemos/res/layout/table_layout_2.xml +0 -40
  415. data/ApiDemos/res/layout/table_layout_3.xml +0 -62
  416. data/ApiDemos/res/layout/table_layout_4.xml +0 -42
  417. data/ApiDemos/res/layout/table_layout_5.xml +0 -82
  418. data/ApiDemos/res/layout/table_layout_6.xml +0 -92
  419. data/ApiDemos/res/layout/table_layout_7.xml +0 -106
  420. data/ApiDemos/res/layout/table_layout_8.xml +0 -87
  421. data/ApiDemos/res/layout/table_layout_9.xml +0 -92
  422. data/ApiDemos/res/layout/tabs1.xml +0 -39
  423. data/ApiDemos/res/layout/tabs_right_gravity.xml +0 -37
  424. data/ApiDemos/res/layout/tabs_scroll.xml +0 -41
  425. data/ApiDemos/res/layout/tasklist_main.xml +0 -47
  426. data/ApiDemos/res/layout/tasklist_row.xml +0 -38
  427. data/ApiDemos/res/layout/text_switcher_1.xml +0 -31
  428. data/ApiDemos/res/layout/text_to_speech.xml +0 -26
  429. data/ApiDemos/res/layout/translucent_background.xml +0 -24
  430. data/ApiDemos/res/layout/videoview.xml +0 -14
  431. data/ApiDemos/res/layout/visibility_1.xml +0 -71
  432. data/ApiDemos/res/layout/voice_recognition.xml +0 -61
  433. data/ApiDemos/res/layout/wallpaper_2.xml +0 -27
  434. data/ApiDemos/res/layout/webview_1.xml +0 -79
  435. data/ApiDemos/res/menu/action_bar_settings_action_provider.xml +0 -28
  436. data/ApiDemos/res/menu/action_bar_share_action_provider.xml +0 -28
  437. data/ApiDemos/res/menu/actions.xml +0 -48
  438. data/ApiDemos/res/menu/camera_menu.xml +0 -5
  439. data/ApiDemos/res/menu/category_order.xml +0 -57
  440. data/ApiDemos/res/menu/checkable.xml +0 -91
  441. data/ApiDemos/res/menu/disabled.xml +0 -55
  442. data/ApiDemos/res/menu/display_options_actions.xml +0 -19
  443. data/ApiDemos/res/menu/groups.xml +0 -45
  444. data/ApiDemos/res/menu/list_select_menu.xml +0 -22
  445. data/ApiDemos/res/menu/order.xml +0 -38
  446. data/ApiDemos/res/menu/popup.xml +0 -32
  447. data/ApiDemos/res/menu/searchview_in_menu.xml +0 -22
  448. data/ApiDemos/res/menu/shortcuts.xml +0 -60
  449. data/ApiDemos/res/menu/submenu.xml +0 -44
  450. data/ApiDemos/res/menu/title_icon.xml +0 -31
  451. data/ApiDemos/res/menu/title_only.xml +0 -25
  452. data/ApiDemos/res/menu/visible.xml +0 -37
  453. data/ApiDemos/res/raw/androids.pkm +0 -0
  454. data/ApiDemos/res/raw/robot.png +0 -0
  455. data/ApiDemos/res/raw/skycubemap0.jpg +0 -0
  456. data/ApiDemos/res/raw/skycubemap1.jpg +0 -0
  457. data/ApiDemos/res/raw/skycubemap2.jpg +0 -0
  458. data/ApiDemos/res/raw/skycubemap3.jpg +0 -0
  459. data/ApiDemos/res/raw/skycubemap4.jpg +0 -0
  460. data/ApiDemos/res/raw/skycubemap5.jpg +0 -0
  461. data/ApiDemos/res/raw/sound_ringer_normal.ogg +0 -0
  462. data/ApiDemos/res/raw/sound_ringer_silent.ogg +0 -0
  463. data/ApiDemos/res/raw/sound_ringer_vibrate.ogg +0 -0
  464. data/ApiDemos/res/raw/sound_screen_off.ogg +0 -0
  465. data/ApiDemos/res/raw/sound_screen_on.ogg +0 -0
  466. data/ApiDemos/res/raw/sound_view_clicked.ogg +0 -0
  467. data/ApiDemos/res/raw/sound_view_focused_or_selected.ogg +0 -0
  468. data/ApiDemos/res/raw/sound_view_hover_enter.ogg +0 -0
  469. data/ApiDemos/res/raw/sound_window_state_changed.ogg +0 -0
  470. data/ApiDemos/res/raw/test_cbr.mp3 +0 -0
  471. data/ApiDemos/res/values-hdpi/strings.xml +0 -19
  472. data/ApiDemos/res/values-ldpi/strings.xml +0 -19
  473. data/ApiDemos/res/values-mdpi/strings.xml +0 -19
  474. data/ApiDemos/res/values-sw600dp/layout.xml +0 -22
  475. data/ApiDemos/res/values-v11/bools.xml +0 -20
  476. data/ApiDemos/res/values-v11/styles.xml +0 -29
  477. data/ApiDemos/res/values-v13/bools.xml +0 -20
  478. data/ApiDemos/res/values-v14/bools.xml +0 -20
  479. data/ApiDemos/res/values-xhdpi/strings.xml +0 -19
  480. data/ApiDemos/res/values-xlarge/layout.xml +0 -22
  481. data/ApiDemos/res/values/arrays.xml +0 -149
  482. data/ApiDemos/res/values/attrs.xml +0 -55
  483. data/ApiDemos/res/values/bools.xml +0 -32
  484. data/ApiDemos/res/values/colors.xml +0 -32
  485. data/ApiDemos/res/values/ids.xml +0 -19
  486. data/ApiDemos/res/values/strings.xml +0 -1343
  487. data/ApiDemos/res/values/styles.xml +0 -124
  488. data/ApiDemos/res/xml/advanced_preferences.xml +0 -38
  489. data/ApiDemos/res/xml/appwidget_provider.xml +0 -28
  490. data/ApiDemos/res/xml/default_values.xml +0 -44
  491. data/ApiDemos/res/xml/device_admin_encryption.xml +0 -34
  492. data/ApiDemos/res/xml/device_admin_expiration.xml +0 -53
  493. data/ApiDemos/res/xml/device_admin_general.xml +0 -40
  494. data/ApiDemos/res/xml/device_admin_headers.xml +0 -41
  495. data/ApiDemos/res/xml/device_admin_lock_wipe.xml +0 -50
  496. data/ApiDemos/res/xml/device_admin_quality.xml +0 -79
  497. data/ApiDemos/res/xml/device_admin_sample.xml +0 -30
  498. data/ApiDemos/res/xml/filter_nfc.xml +0 -28
  499. data/ApiDemos/res/xml/fragmented_preferences.xml +0 -97
  500. data/ApiDemos/res/xml/fragmented_preferences_inner.xml +0 -26
  501. data/ApiDemos/res/xml/preference_dependencies.xml +0 -35
  502. data/ApiDemos/res/xml/preference_headers.xml +0 -44
  503. data/ApiDemos/res/xml/preference_switch +0 -46
  504. data/ApiDemos/res/xml/preferences.xml +0 -101
  505. data/ApiDemos/res/xml/searchable.xml +0 -30
  506. data/ApiDemos/res/xml/taskbackconfig.xml +0 -24
  507. data/ApiDemos/src/com/example/android/apis/ApiDemos.java +0 -149
  508. data/ApiDemos/src/com/example/android/apis/ApiDemosApplication.java +0 -36
  509. data/ApiDemos/src/com/example/android/apis/Shakespeare.java +0 -223
  510. data/ApiDemos/src/com/example/android/apis/accessibility/ClockBackActivity.java +0 -54
  511. data/ApiDemos/src/com/example/android/apis/accessibility/ClockBackService.java +0 -575
  512. data/ApiDemos/src/com/example/android/apis/accessibility/CustomViewAccessibilityActivity.java +0 -280
  513. data/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.java +0 -190
  514. data/ApiDemos/src/com/example/android/apis/accessibility/TaskListActivity.java +0 -58
  515. data/ApiDemos/src/com/example/android/apis/accessibility/TaskListView.java +0 -115
  516. data/ApiDemos/src/com/example/android/apis/animation/AnimationCloning.java +0 -148
  517. data/ApiDemos/src/com/example/android/apis/animation/AnimationLoading.java +0 -165
  518. data/ApiDemos/src/com/example/android/apis/animation/AnimationSeeking.java +0 -173
  519. data/ApiDemos/src/com/example/android/apis/animation/AnimatorEvents.java +0 -237
  520. data/ApiDemos/src/com/example/android/apis/animation/BouncingBalls.java +0 -184
  521. data/ApiDemos/src/com/example/android/apis/animation/CustomEvaluator.java +0 -174
  522. data/ApiDemos/src/com/example/android/apis/animation/FixedGridLayout.java +0 -108
  523. data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimations.java +0 -210
  524. data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsByDefault.java +0 -61
  525. data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsHideShow.java +0 -178
  526. data/ApiDemos/src/com/example/android/apis/animation/ListFlipper.java +0 -126
  527. data/ApiDemos/src/com/example/android/apis/animation/MultiPropertyAnimation.java +0 -178
  528. data/ApiDemos/src/com/example/android/apis/animation/ReversingAnimation.java +0 -135
  529. data/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.java +0 -92
  530. data/ApiDemos/src/com/example/android/apis/animation/ShapeHolder.java +0 -100
  531. data/ApiDemos/src/com/example/android/apis/animation/Transition3d.java +0 -175
  532. data/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java +0 -124
  533. data/ApiDemos/src/com/example/android/apis/app/ActionBarMechanics.java +0 -73
  534. data/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java +0 -111
  535. data/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.java +0 -125
  536. data/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java +0 -131
  537. data/ApiDemos/src/com/example/android/apis/app/ActionBarUsage.java +0 -93
  538. data/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java +0 -73
  539. data/ApiDemos/src/com/example/android/apis/app/AlarmController.java +0 -168
  540. data/ApiDemos/src/com/example/android/apis/app/AlarmService.java +0 -89
  541. data/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java +0 -131
  542. data/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.java +0 -423
  543. data/ApiDemos/src/com/example/android/apis/app/Animation.java +0 -74
  544. data/ApiDemos/src/com/example/android/apis/app/AppUpdateReceiver.java +0 -34
  545. data/ApiDemos/src/com/example/android/apis/app/ContactsFilter.java +0 -53
  546. data/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.java +0 -73
  547. data/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.java +0 -86
  548. data/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.java +0 -48
  549. data/ApiDemos/src/com/example/android/apis/app/CustomTitle.java +0 -85
  550. data/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +0 -934
  551. data/ApiDemos/src/com/example/android/apis/app/DialogActivity.java +0 -86
  552. data/ApiDemos/src/com/example/android/apis/app/ForegroundService.java +0 -240
  553. data/ApiDemos/src/com/example/android/apis/app/ForwardTarget.java +0 -41
  554. data/ApiDemos/src/com/example/android/apis/app/Forwarding.java +0 -85
  555. data/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java +0 -109
  556. data/ApiDemos/src/com/example/android/apis/app/FragmentArguments.java +0 -108
  557. data/ApiDemos/src/com/example/android/apis/app/FragmentContextMenu.java +0 -77
  558. data/ApiDemos/src/com/example/android/apis/app/FragmentCustomAnimations.java +0 -131
  559. data/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java +0 -168
  560. data/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java +0 -82
  561. data/ApiDemos/src/com/example/android/apis/app/FragmentHideShow.java +0 -113
  562. data/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java +0 -220
  563. data/ApiDemos/src/com/example/android/apis/app/FragmentListArray.java +0 -60
  564. data/ApiDemos/src/com/example/android/apis/app/FragmentMenu.java +0 -132
  565. data/ApiDemos/src/com/example/android/apis/app/FragmentReceiveResult.java +0 -133
  566. data/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java +0 -232
  567. data/ApiDemos/src/com/example/android/apis/app/FragmentStack.java +0 -124
  568. data/ApiDemos/src/com/example/android/apis/app/FragmentTabs.java +0 -118
  569. data/ApiDemos/src/com/example/android/apis/app/HelloWorld.java +0 -66
  570. data/ApiDemos/src/com/example/android/apis/app/IRemoteService.aidl +0 -37
  571. data/ApiDemos/src/com/example/android/apis/app/IRemoteServiceCallback.aidl +0 -29
  572. data/ApiDemos/src/com/example/android/apis/app/ISecondary.aidl +0 -36
  573. data/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java +0 -197
  574. data/ApiDemos/src/com/example/android/apis/app/IncomingMessageInterstitial.java +0 -64
  575. data/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java +0 -59
  576. data/ApiDemos/src/com/example/android/apis/app/IntentActivityFlags.java +0 -86
  577. data/ApiDemos/src/com/example/android/apis/app/Intents.java +0 -47
  578. data/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.java +0 -141
  579. data/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java +0 -177
  580. data/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java +0 -481
  581. data/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.java +0 -512
  582. data/ApiDemos/src/com/example/android/apis/app/LocalSample.java +0 -53
  583. data/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.java +0 -92
  584. data/ApiDemos/src/com/example/android/apis/app/LocalService.java +0 -120
  585. data/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.java +0 -171
  586. data/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java +0 -174
  587. data/ApiDemos/src/com/example/android/apis/app/MessengerService.java +0 -169
  588. data/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.java +0 -178
  589. data/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.java +0 -82
  590. data/ApiDemos/src/com/example/android/apis/app/NotifyWithText.java +0 -80
  591. data/ApiDemos/src/com/example/android/apis/app/NotifyingController.java +0 -61
  592. data/ApiDemos/src/com/example/android/apis/app/NotifyingService.java +0 -128
  593. data/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.java +0 -42
  594. data/ApiDemos/src/com/example/android/apis/app/PersistentState.java +0 -128
  595. data/ApiDemos/src/com/example/android/apis/app/QuickContactsDemo.java +0 -104
  596. data/ApiDemos/src/com/example/android/apis/app/ReceiveResult.java +0 -153
  597. data/ApiDemos/src/com/example/android/apis/app/RedirectEnter.java +0 -59
  598. data/ApiDemos/src/com/example/android/apis/app/RedirectGetter.java +0 -87
  599. data/ApiDemos/src/com/example/android/apis/app/RedirectMain.java +0 -122
  600. data/ApiDemos/src/com/example/android/apis/app/RemoteService.java +0 -652
  601. data/ApiDemos/src/com/example/android/apis/app/ReorderFour.java +0 -46
  602. data/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.java +0 -44
  603. data/ApiDemos/src/com/example/android/apis/app/ReorderThree.java +0 -44
  604. data/ApiDemos/src/com/example/android/apis/app/ReorderTwo.java +0 -44
  605. data/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.java +0 -40
  606. data/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.java +0 -98
  607. data/ApiDemos/src/com/example/android/apis/app/ScreenOrientation.java +0 -73
  608. data/ApiDemos/src/com/example/android/apis/app/SearchInvoke.java +0 -241
  609. data/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.java +0 -118
  610. data/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.java +0 -50
  611. data/ApiDemos/src/com/example/android/apis/app/SendResult.java +0 -81
  612. data/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java +0 -272
  613. data/ApiDemos/src/com/example/android/apis/app/SetWallpaperActivity.java +0 -89
  614. data/ApiDemos/src/com/example/android/apis/app/SoftInputModes.java +0 -67
  615. data/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java +0 -270
  616. data/ApiDemos/src/com/example/android/apis/app/TextToSpeechActivity.java +0 -136
  617. data/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.java +0 -48
  618. data/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.java +0 -55
  619. data/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java +0 -226
  620. data/ApiDemos/src/com/example/android/apis/app/WallpaperActivity.java +0 -48
  621. data/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.java +0 -134
  622. data/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.java +0 -122
  623. data/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.java +0 -56
  624. data/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java +0 -144
  625. data/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java +0 -376
  626. data/ApiDemos/src/com/example/android/apis/content/FileProvider.java +0 -114
  627. data/ApiDemos/src/com/example/android/apis/content/InstallApk.java +0 -179
  628. data/ApiDemos/src/com/example/android/apis/content/PickContact.java +0 -114
  629. data/ApiDemos/src/com/example/android/apis/content/ReadAsset.java +0 -73
  630. data/ApiDemos/src/com/example/android/apis/content/ResourcesLayoutReference.java +0 -33
  631. data/ApiDemos/src/com/example/android/apis/content/ResourcesSample.java +0 -90
  632. data/ApiDemos/src/com/example/android/apis/content/ResourcesSmallestWidth.java +0 -33
  633. data/ApiDemos/src/com/example/android/apis/content/ResourcesWidthAndHeight.java +0 -33
  634. data/ApiDemos/src/com/example/android/apis/content/StyledText.java +0 -51
  635. data/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.java +0 -91
  636. data/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.java +0 -72
  637. data/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.java +0 -67
  638. data/ApiDemos/src/com/example/android/apis/graphics/Arcs.java +0 -118
  639. data/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.java +0 -144
  640. data/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.java +0 -130
  641. data/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.java +0 -161
  642. data/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java +0 -311
  643. data/ApiDemos/src/com/example/android/apis/graphics/Clipping.java +0 -111
  644. data/ApiDemos/src/com/example/android/apis/graphics/ColorFilters.java +0 -180
  645. data/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.java +0 -122
  646. data/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.java +0 -233
  647. data/ApiDemos/src/com/example/android/apis/graphics/Compass.java +0 -130
  648. data/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.java +0 -157
  649. data/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.java +0 -126
  650. data/ApiDemos/src/com/example/android/apis/graphics/Cube.java +0 -100
  651. data/ApiDemos/src/com/example/android/apis/graphics/CubeMapActivity.java +0 -416
  652. data/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.java +0 -108
  653. data/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.java +0 -220
  654. data/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.java +0 -79
  655. data/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.java +0 -208
  656. data/ApiDemos/src/com/example/android/apis/graphics/FrameBufferObjectActivity.java +0 -282
  657. data/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.java +0 -72
  658. data/ApiDemos/src/com/example/android/apis/graphics/GLES20TriangleRenderer.java +0 -255
  659. data/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.java +0 -56
  660. data/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.java +0 -31
  661. data/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.java +0 -43
  662. data/ApiDemos/src/com/example/android/apis/graphics/Layers.java +0 -65
  663. data/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteActivity.java +0 -52
  664. data/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteRenderer.java +0 -408
  665. data/ApiDemos/src/com/example/android/apis/graphics/MeasureText.java +0 -112
  666. data/ApiDemos/src/com/example/android/apis/graphics/PathEffects.java +0 -121
  667. data/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.java +0 -77
  668. data/ApiDemos/src/com/example/android/apis/graphics/Patterns.java +0 -125
  669. data/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.java +0 -161
  670. data/ApiDemos/src/com/example/android/apis/graphics/Pictures.java +0 -81
  671. data/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.java +0 -107
  672. data/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.java +0 -102
  673. data/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmap.java +0 -118
  674. data/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmapView.java +0 -116
  675. data/ApiDemos/src/com/example/android/apis/graphics/Regions.java +0 -126
  676. data/ApiDemos/src/com/example/android/apis/graphics/RoundRects.java +0 -113
  677. data/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.java +0 -121
  678. data/ApiDemos/src/com/example/android/apis/graphics/SensorTest.java +0 -213
  679. data/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.java +0 -136
  680. data/ApiDemos/src/com/example/android/apis/graphics/StaticTriangleRenderer.java +0 -274
  681. data/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.java +0 -116
  682. data/ApiDemos/src/com/example/android/apis/graphics/Sweep.java +0 -97
  683. data/ApiDemos/src/com/example/android/apis/graphics/TextAlign.java +0 -161
  684. data/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.java +0 -528
  685. data/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.java +0 -184
  686. data/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.java +0 -63
  687. data/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.java +0 -49
  688. data/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.java +0 -241
  689. data/ApiDemos/src/com/example/android/apis/graphics/Typefaces.java +0 -55
  690. data/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.java +0 -119
  691. data/ApiDemos/src/com/example/android/apis/graphics/Vertices.java +0 -103
  692. data/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java +0 -271
  693. data/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.java +0 -171
  694. data/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.java +0 -57
  695. data/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.java +0 -51
  696. data/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.java +0 -94
  697. data/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.java +0 -102
  698. data/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.java +0 -89
  699. data/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.java +0 -98
  700. data/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.java +0 -342
  701. data/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.java +0 -116
  702. data/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.java +0 -101
  703. data/ApiDemos/src/com/example/android/apis/graphics/kube/M4.java +0 -80
  704. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.java +0 -140
  705. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.java +0 -411
  706. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.java +0 -63
  707. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.java +0 -179
  708. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.java +0 -1086
  709. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.java +0 -99
  710. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.java +0 -84
  711. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.java +0 -52
  712. data/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.java +0 -354
  713. data/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.java +0 -252
  714. data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.java +0 -102
  715. data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.java +0 -102
  716. data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.java +0 -219
  717. data/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.java +0 -61
  718. data/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java +0 -93
  719. data/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java +0 -86
  720. data/ApiDemos/src/com/example/android/apis/nfc/TechFilter.java +0 -51
  721. data/ApiDemos/src/com/example/android/apis/os/MorseCode.java +0 -93
  722. data/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.java +0 -141
  723. data/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java +0 -216
  724. data/ApiDemos/src/com/example/android/apis/os/Sensors.java +0 -241
  725. data/ApiDemos/src/com/example/android/apis/os/SmsMessageReceiver.java +0 -78
  726. data/ApiDemos/src/com/example/android/apis/os/SmsMessagingDemo.java +0 -159
  727. data/ApiDemos/src/com/example/android/apis/os/SmsReceivedDialog.java +0 -115
  728. data/ApiDemos/src/com/example/android/apis/preference/AdvancedPreferences.java +0 -94
  729. data/ApiDemos/src/com/example/android/apis/preference/DefaultValues.java +0 -61
  730. data/ApiDemos/src/com/example/android/apis/preference/FragmentPreferences.java +0 -52
  731. data/ApiDemos/src/com/example/android/apis/preference/LaunchingPreferences.java +0 -100
  732. data/ApiDemos/src/com/example/android/apis/preference/MyPreference.java +0 -171
  733. data/ApiDemos/src/com/example/android/apis/preference/PreferenceDependencies.java +0 -33
  734. data/ApiDemos/src/com/example/android/apis/preference/PreferenceWithHeaders.java +0 -108
  735. data/ApiDemos/src/com/example/android/apis/preference/PreferencesFromCode.java +0 -151
  736. data/ApiDemos/src/com/example/android/apis/preference/PreferencesFromXml.java +0 -34
  737. data/ApiDemos/src/com/example/android/apis/preference/SwitchPreference.java +0 -38
  738. data/ApiDemos/src/com/example/android/apis/text/Link.java +0 -84
  739. data/ApiDemos/src/com/example/android/apis/text/LogTextBox.java +0 -64
  740. data/ApiDemos/src/com/example/android/apis/text/LogTextBox1.java +0 -50
  741. data/ApiDemos/src/com/example/android/apis/text/Marquee.java +0 -31
  742. data/ApiDemos/src/com/example/android/apis/view/Animation1.java +0 -45
  743. data/ApiDemos/src/com/example/android/apis/view/Animation2.java +0 -90
  744. data/ApiDemos/src/com/example/android/apis/view/Animation3.java +0 -101
  745. data/ApiDemos/src/com/example/android/apis/view/AutoComplete1.java +0 -82
  746. data/ApiDemos/src/com/example/android/apis/view/AutoComplete2.java +0 -41
  747. data/ApiDemos/src/com/example/android/apis/view/AutoComplete3.java +0 -43
  748. data/ApiDemos/src/com/example/android/apis/view/AutoComplete4.java +0 -103
  749. data/ApiDemos/src/com/example/android/apis/view/AutoComplete5.java +0 -44
  750. data/ApiDemos/src/com/example/android/apis/view/AutoComplete6.java +0 -83
  751. data/ApiDemos/src/com/example/android/apis/view/Baseline1.java +0 -35
  752. data/ApiDemos/src/com/example/android/apis/view/Baseline2.java +0 -35
  753. data/ApiDemos/src/com/example/android/apis/view/Baseline3.java +0 -36
  754. data/ApiDemos/src/com/example/android/apis/view/Baseline4.java +0 -35
  755. data/ApiDemos/src/com/example/android/apis/view/Baseline6.java +0 -35
  756. data/ApiDemos/src/com/example/android/apis/view/Baseline7.java +0 -35
  757. data/ApiDemos/src/com/example/android/apis/view/BaselineNested1.java +0 -36
  758. data/ApiDemos/src/com/example/android/apis/view/BaselineNested2.java +0 -36
  759. data/ApiDemos/src/com/example/android/apis/view/BaselineNested3.java +0 -36
  760. data/ApiDemos/src/com/example/android/apis/view/Buttons1.java +0 -36
  761. data/ApiDemos/src/com/example/android/apis/view/CheckableFrameLayout.java +0 -49
  762. data/ApiDemos/src/com/example/android/apis/view/Cheeses.java +0 -155
  763. data/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.java +0 -90
  764. data/ApiDemos/src/com/example/android/apis/view/Controls1.java +0 -54
  765. data/ApiDemos/src/com/example/android/apis/view/Controls2.java +0 -19
  766. data/ApiDemos/src/com/example/android/apis/view/Controls3.java +0 -19
  767. data/ApiDemos/src/com/example/android/apis/view/Controls4.java +0 -19
  768. data/ApiDemos/src/com/example/android/apis/view/Controls5.java +0 -19
  769. data/ApiDemos/src/com/example/android/apis/view/Controls6.java +0 -19
  770. data/ApiDemos/src/com/example/android/apis/view/CustomView1.java +0 -40
  771. data/ApiDemos/src/com/example/android/apis/view/DateWidgets1.java +0 -156
  772. data/ApiDemos/src/com/example/android/apis/view/DateWidgets2.java +0 -68
  773. data/ApiDemos/src/com/example/android/apis/view/DragAndDropDemo.java +0 -72
  774. data/ApiDemos/src/com/example/android/apis/view/DraggableDot.java +0 -261
  775. data/ApiDemos/src/com/example/android/apis/view/ExpandableList1.java +0 -160
  776. data/ApiDemos/src/com/example/android/apis/view/ExpandableList2.java +0 -138
  777. data/ApiDemos/src/com/example/android/apis/view/ExpandableList3.java +0 -76
  778. data/ApiDemos/src/com/example/android/apis/view/Focus1.java +0 -47
  779. data/ApiDemos/src/com/example/android/apis/view/Focus2.java +0 -32
  780. data/ApiDemos/src/com/example/android/apis/view/Focus3.java +0 -45
  781. data/ApiDemos/src/com/example/android/apis/view/Focus5.java +0 -31
  782. data/ApiDemos/src/com/example/android/apis/view/Gallery1.java +0 -139
  783. data/ApiDemos/src/com/example/android/apis/view/Gallery2.java +0 -61
  784. data/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java +0 -460
  785. data/ApiDemos/src/com/example/android/apis/view/GameView.java +0 -747
  786. data/ApiDemos/src/com/example/android/apis/view/Grid1.java +0 -95
  787. data/ApiDemos/src/com/example/android/apis/view/Grid2.java +0 -166
  788. data/ApiDemos/src/com/example/android/apis/view/Grid3.java +0 -164
  789. data/ApiDemos/src/com/example/android/apis/view/GridLayout0.java +0 -113
  790. data/ApiDemos/src/com/example/android/apis/view/GridLayout1.java +0 -32
  791. data/ApiDemos/src/com/example/android/apis/view/HorizontalScrollView1.java +0 -33
  792. data/ApiDemos/src/com/example/android/apis/view/Hover.java +0 -96
  793. data/ApiDemos/src/com/example/android/apis/view/HoverInterceptorView.java +0 -71
  794. data/ApiDemos/src/com/example/android/apis/view/ImageButton1.java +0 -33
  795. data/ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.java +0 -120
  796. data/ApiDemos/src/com/example/android/apis/view/ImageView1.java +0 -36
  797. data/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.java +0 -74
  798. data/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.java +0 -64
  799. data/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.java +0 -272
  800. data/ApiDemos/src/com/example/android/apis/view/LabelView.java +0 -194
  801. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.java +0 -81
  802. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.java +0 -64
  803. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.java +0 -44
  804. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation4.java +0 -81
  805. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation5.java +0 -81
  806. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation6.java +0 -81
  807. data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation7.java +0 -31
  808. data/ApiDemos/src/com/example/android/apis/view/LinearLayout1.java +0 -37
  809. data/ApiDemos/src/com/example/android/apis/view/LinearLayout10.java +0 -37
  810. data/ApiDemos/src/com/example/android/apis/view/LinearLayout2.java +0 -37
  811. data/ApiDemos/src/com/example/android/apis/view/LinearLayout3.java +0 -37
  812. data/ApiDemos/src/com/example/android/apis/view/LinearLayout4.java +0 -38
  813. data/ApiDemos/src/com/example/android/apis/view/LinearLayout5.java +0 -38
  814. data/ApiDemos/src/com/example/android/apis/view/LinearLayout6.java +0 -38
  815. data/ApiDemos/src/com/example/android/apis/view/LinearLayout7.java +0 -38
  816. data/ApiDemos/src/com/example/android/apis/view/LinearLayout8.java +0 -106
  817. data/ApiDemos/src/com/example/android/apis/view/LinearLayout9.java +0 -41
  818. data/ApiDemos/src/com/example/android/apis/view/List1.java +0 -42
  819. data/ApiDemos/src/com/example/android/apis/view/List10.java +0 -49
  820. data/ApiDemos/src/com/example/android/apis/view/List11.java +0 -49
  821. data/ApiDemos/src/com/example/android/apis/view/List12.java +0 -83
  822. data/ApiDemos/src/com/example/android/apis/view/List13.java +0 -341
  823. data/ApiDemos/src/com/example/android/apis/view/List14.java +0 -141
  824. data/ApiDemos/src/com/example/android/apis/view/List15.java +0 -104
  825. data/ApiDemos/src/com/example/android/apis/view/List16.java +0 -100
  826. data/ApiDemos/src/com/example/android/apis/view/List17.java +0 -57
  827. data/ApiDemos/src/com/example/android/apis/view/List2.java +0 -57
  828. data/ApiDemos/src/com/example/android/apis/view/List3.java +0 -84
  829. data/ApiDemos/src/com/example/android/apis/view/List4.java +0 -154
  830. data/ApiDemos/src/com/example/android/apis/view/List5.java +0 -118
  831. data/ApiDemos/src/com/example/android/apis/view/List6.java +0 -410
  832. data/ApiDemos/src/com/example/android/apis/view/List7.java +0 -99
  833. data/ApiDemos/src/com/example/android/apis/view/List8.java +0 -133
  834. data/ApiDemos/src/com/example/android/apis/view/List9.java +0 -144
  835. data/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java +0 -184
  836. data/ApiDemos/src/com/example/android/apis/view/PopupMenu1.java +0 -53
  837. data/ApiDemos/src/com/example/android/apis/view/ProgressBar1.java +0 -84
  838. data/ApiDemos/src/com/example/android/apis/view/ProgressBar2.java +0 -44
  839. data/ApiDemos/src/com/example/android/apis/view/ProgressBar3.java +0 -84
  840. data/ApiDemos/src/com/example/android/apis/view/ProgressBar4.java +0 -51
  841. data/ApiDemos/src/com/example/android/apis/view/RadioGroup1.java +0 -74
  842. data/ApiDemos/src/com/example/android/apis/view/RatingBar1.java +0 -74
  843. data/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.java +0 -37
  844. data/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.java +0 -38
  845. data/ApiDemos/src/com/example/android/apis/view/RotatingButton.java +0 -152
  846. data/ApiDemos/src/com/example/android/apis/view/ScrollBar1.java +0 -32
  847. data/ApiDemos/src/com/example/android/apis/view/ScrollBar2.java +0 -32
  848. data/ApiDemos/src/com/example/android/apis/view/ScrollBar3.java +0 -35
  849. data/ApiDemos/src/com/example/android/apis/view/ScrollView1.java +0 -37
  850. data/ApiDemos/src/com/example/android/apis/view/ScrollView2.java +0 -52
  851. data/ApiDemos/src/com/example/android/apis/view/SearchViewActionBar.java +0 -115
  852. data/ApiDemos/src/com/example/android/apis/view/SearchViewAlwaysVisible.java +0 -46
  853. data/ApiDemos/src/com/example/android/apis/view/SearchViewFilterMode.java +0 -78
  854. data/ApiDemos/src/com/example/android/apis/view/SecureView.java +0 -144
  855. data/ApiDemos/src/com/example/android/apis/view/SecureViewOverlay.java +0 -74
  856. data/ApiDemos/src/com/example/android/apis/view/SeekBar1.java +0 -60
  857. data/ApiDemos/src/com/example/android/apis/view/Spinner1.java +0 -78
  858. data/ApiDemos/src/com/example/android/apis/view/SplitTouchView.java +0 -66
  859. data/ApiDemos/src/com/example/android/apis/view/Switches.java +0 -47
  860. data/ApiDemos/src/com/example/android/apis/view/TableLayout1.java +0 -32
  861. data/ApiDemos/src/com/example/android/apis/view/TableLayout10.java +0 -31
  862. data/ApiDemos/src/com/example/android/apis/view/TableLayout11.java +0 -34
  863. data/ApiDemos/src/com/example/android/apis/view/TableLayout12.java +0 -34
  864. data/ApiDemos/src/com/example/android/apis/view/TableLayout2.java +0 -32
  865. data/ApiDemos/src/com/example/android/apis/view/TableLayout3.java +0 -32
  866. data/ApiDemos/src/com/example/android/apis/view/TableLayout4.java +0 -32
  867. data/ApiDemos/src/com/example/android/apis/view/TableLayout5.java +0 -32
  868. data/ApiDemos/src/com/example/android/apis/view/TableLayout6.java +0 -32
  869. data/ApiDemos/src/com/example/android/apis/view/TableLayout7.java +0 -80
  870. data/ApiDemos/src/com/example/android/apis/view/TableLayout8.java +0 -71
  871. data/ApiDemos/src/com/example/android/apis/view/TableLayout9.java +0 -48
  872. data/ApiDemos/src/com/example/android/apis/view/Tabs1.java +0 -50
  873. data/ApiDemos/src/com/example/android/apis/view/Tabs2.java +0 -57
  874. data/ApiDemos/src/com/example/android/apis/view/Tabs3.java +0 -50
  875. data/ApiDemos/src/com/example/android/apis/view/Tabs4.java +0 -23
  876. data/ApiDemos/src/com/example/android/apis/view/Tabs5.java +0 -54
  877. data/ApiDemos/src/com/example/android/apis/view/Tabs6.java +0 -55
  878. data/ApiDemos/src/com/example/android/apis/view/TextSwitcher1.java +0 -79
  879. data/ApiDemos/src/com/example/android/apis/view/Visibility1.java +0 -74
  880. data/ApiDemos/src/com/example/android/apis/view/WebView1.java +0 -71
  881. data/ApiDemos/tests/AndroidManifest.xml +0 -37
  882. data/ApiDemos/tests/ant.properties +0 -18
  883. data/ApiDemos/tests/build.xml +0 -83
  884. data/ApiDemos/tests/local.properties +0 -10
  885. data/ApiDemos/tests/proguard-project.txt +0 -20
  886. data/ApiDemos/tests/project.properties +0 -14
  887. data/ApiDemos/tests/src/com/example/android/apis/AllTests.java +0 -53
  888. data/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.java +0 -62
  889. data/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.java +0 -40
  890. data/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.java +0 -129
  891. data/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.java +0 -80
  892. data/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.java +0 -54
  893. data/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.java +0 -111
  894. data/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.java +0 -113
  895. data/ChangeLog +0 -16
  896. data/Gemfile +0 -12
  897. data/Guardfile +0 -17
  898. data/LICENSE +0 -22
  899. data/README.md +0 -72
  900. data/Rakefile +0 -24
  901. data/cucumber.yml +0 -14
  902. data/features/step_definitions/calabash_steps.rb +0 -1
  903. data/features/support/app_installation_hooks.rb +0 -23
  904. data/features/support/app_life_cycle_hooks.rb +0 -11
  905. data/gametel.gemspec +0 -23
  906. data/irb_android.sh +0 -2
  907. data/lib/gametel/platforms/calabash.rb +0 -155
@@ -1,34 +0,0 @@
1
- /*
2
- * Copyright (C) 2011 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
- package com.example.android.apis.app;
18
-
19
- import com.example.android.apis.R;
20
-
21
- import android.content.BroadcastReceiver;
22
- import android.content.Context;
23
- import android.content.Intent;
24
- import android.widget.Toast;
25
-
26
- /**
27
- * Executed when a new version of the application is is installed.
28
- */
29
- public class AppUpdateReceiver extends BroadcastReceiver {
30
- @Override
31
- public void onReceive(Context context, Intent intent) {
32
- Toast.makeText(context, R.string.app_update_received, Toast.LENGTH_SHORT).show();
33
- }
34
- }
@@ -1,53 +0,0 @@
1
- /*
2
- * Copyright (C) 2007 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
- package com.example.android.apis.app;
18
-
19
- // Need the following import to get access to the app resources, since this
20
- // class is in a sub-package.
21
- import android.app.Activity;
22
- import android.content.ComponentName;
23
- import android.os.Bundle;
24
- import android.view.View;
25
- import android.view.View.OnClickListener;
26
- import android.widget.Button;
27
-
28
- import com.example.android.apis.R;
29
-
30
- /**
31
- * Front-end for launching {@link ContactsFilterInstrumentation} example
32
- * instrumentation class.
33
- */
34
- public class ContactsFilter extends Activity {
35
- @Override
36
- protected void onCreate(Bundle savedInstanceState) {
37
- super.onCreate(savedInstanceState);
38
-
39
- setContentView(R.layout.contacts_filter);
40
-
41
- // Watch for button clicks.
42
- Button button = (Button)findViewById(R.id.go);
43
- button.setOnClickListener(mGoListener);
44
- }
45
-
46
- private OnClickListener mGoListener = new OnClickListener() {
47
- public void onClick(View v) {
48
- startInstrumentation(new ComponentName(ContactsFilter.this,
49
- ContactsFilterInstrumentation.class), null, null);
50
- }
51
- };
52
- }
53
-
@@ -1,73 +0,0 @@
1
- /*
2
- * Copyright (C) 2007 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
- package com.example.android.apis.app;
18
-
19
- import android.app.Activity;
20
- import android.app.Instrumentation;
21
- import android.content.Intent;
22
- import android.view.KeyEvent;
23
- import android.os.Bundle;
24
- import android.util.Log;
25
-
26
- /**
27
- * This is an example implementation of the {@link android.app.Instrumentation}
28
- * class, allowing you to run tests against application code. The
29
- * instrumentation implementation here is loaded into the application's
30
- * process, for controlling and monitoring what it does.
31
- */
32
- public class ContactsFilterInstrumentation extends Instrumentation {
33
- @Override
34
- public void onCreate(Bundle arguments) {
35
- super.onCreate(arguments);
36
-
37
- // When this instrumentation is created, we simply want to start
38
- // its test code off in a separate thread, which will call back
39
- // to us in onStart().
40
- start();
41
- }
42
-
43
- @Override
44
- public void onStart() {
45
- super.onStart();
46
- // First start the activity we are instrumenting -- the contacts
47
- // list.
48
- Intent intent = new Intent(Intent.ACTION_MAIN);
49
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
50
- intent.setClassName(getTargetContext(),
51
- "com.android.phone.Dialer");
52
- Activity activity = startActivitySync(intent);
53
-
54
- // This is the Activity object that was started, to do with as we want.
55
- Log.i("ContactsFilterInstrumentation", "Started: " + activity);
56
-
57
- // We are going to enqueue a couple key events to simulate the user
58
- // filtering the list. This is the low-level API so we must send both
59
- // down and up events.
60
- sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_M));
61
- sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_M));
62
- sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_A));
63
- sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_A));
64
-
65
- // Wait for the activity to finish all of its processing.
66
- waitForIdleSync();
67
-
68
- // And we are done!
69
- Log.i("ContactsFilterInstrumentation", "Done!");
70
- finish(Activity.RESULT_OK, null);
71
- }
72
- }
73
-
@@ -1,86 +0,0 @@
1
- /*
2
- * Copyright (C) 2007 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
- package com.example.android.apis.app;
18
-
19
- import android.app.Activity;
20
- import android.app.Instrumentation;
21
- import android.content.Intent;
22
- import android.content.IntentFilter;
23
- import android.view.KeyEvent;
24
- import android.provider.ContactsContract;
25
- import android.os.Bundle;
26
- import android.util.Log;
27
-
28
- /**
29
- * This is an example implementation of the {@link android.app.Instrumentation}
30
- * class, allowing you to run tests against application code. The
31
- * instrumentation implementation here is loaded into the application's
32
- * process, for controlling and monitoring what it does.
33
- */
34
- public class ContactsSelectInstrumentation extends Instrumentation {
35
- @Override
36
- public void onCreate(Bundle arguments) {
37
- super.onCreate(arguments);
38
-
39
- // When this instrumentation is created, we simply want to start
40
- // its test code off in a separate thread, which will call back
41
- // to us in onStart().
42
- start();
43
- }
44
-
45
- @Override
46
- public void onStart() {
47
- super.onStart();
48
- // First start the activity we are instrumenting -- the contacts
49
- // list.
50
- Intent intent = new Intent(Intent.ACTION_MAIN);
51
- intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
52
- intent.setClassName(getTargetContext(),
53
- "com.android.phone.Dialer");
54
- Activity activity = startActivitySync(intent);
55
-
56
- // This is the Activity object that was started, to do with as we want.
57
- Log.i("ContactsSelectInstrumentation", "Started: " + activity);
58
-
59
- // Monitor for the expected start activity call.
60
- ActivityMonitor am = addMonitor(IntentFilter.create(
61
- Intent.ACTION_VIEW, ContactsContract.Contacts.CONTENT_ITEM_TYPE), null, true);
62
-
63
- // We are going to enqueue a couple key events to simulate the user
64
- // selecting an item in the list.
65
- sendKeySync(new KeyEvent(
66
- KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_DOWN));
67
- sendKeySync(new KeyEvent(
68
- KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_DOWN));
69
- sendKeySync(new KeyEvent(
70
- KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_CENTER));
71
- sendKeySync(new KeyEvent(
72
- KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DPAD_CENTER));
73
-
74
- // Was the expected activity started?
75
- if (checkMonitorHit(am, 1)) {
76
- Log.i("ContactsSelectInstrumentation", "Activity started!");
77
- } else {
78
- Log.i("ContactsSelectInstrumentation", "*** ACTIVITY NOT STARTED!");
79
- }
80
-
81
- // And we are done!
82
- Log.i("ContactsSelectInstrumentation", "Done!");
83
- finish(Activity.RESULT_OK, null);
84
- }
85
- }
86
-
@@ -1,48 +0,0 @@
1
- /*
2
- * Copyright (C) 2008 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
- package com.example.android.apis.app;
18
-
19
- // Need the following import to get access to the app resources, since this
20
- // class is in a sub-package.
21
- import com.example.android.apis.R;
22
-
23
- import android.app.Activity;
24
- import android.os.Bundle;
25
-
26
- /**
27
- * <h3>Dialog Activity</h3>
28
- *
29
- * <p>This demonstrates the how to write an activity that looks like
30
- * a pop-up dialog with a custom theme using a different text color.</p>
31
- */
32
- public class CustomDialogActivity extends Activity {
33
- /**
34
- * Initialization of the Activity after it is first created. Must at least
35
- * call {@link android.app.Activity#setContentView setContentView()} to
36
- * describe what is to be displayed in the screen.
37
- */
38
- @Override
39
- protected void onCreate(Bundle savedInstanceState) {
40
- // Be sure to call the super class.
41
- super.onCreate(savedInstanceState);
42
-
43
- // See assets/res/any/layout/dialog_activity.xml for this
44
- // view layout definition, which is being set here as
45
- // the content of our screen.
46
- setContentView(R.layout.custom_dialog_activity);
47
- }
48
- }
@@ -1,85 +0,0 @@
1
- /*
2
- * Copyright (C) 2007 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
- package com.example.android.apis.app;
18
-
19
- import android.app.Activity;
20
- import android.os.Bundle;
21
- import android.view.View;
22
- import android.view.Window;
23
- import android.view.View.OnClickListener;
24
- import android.widget.Button;
25
- import android.widget.EditText;
26
- import android.widget.TextView;
27
-
28
- import com.example.android.apis.R;
29
-
30
-
31
- /**
32
- * Example of how to use a custom title {@link android.view.Window#FEATURE_CUSTOM_TITLE}.
33
- * <h3>CustomTitle</h3>
34
-
35
- <p>This demonstrates how a custom title can be used.</p>
36
-
37
- <h4>Demo</h4>
38
- App/Title/Custom Title
39
-
40
- <h4>Source files</h4>
41
- * <table class="LinkTable">
42
- * <tr>
43
- * <td >src/com.example.android.apis/app/CustomTitle.java</td>
44
- * <td >The Custom Title implementation</td>
45
- * </tr>
46
- * <tr>
47
- * <td >/res/any/layout/custom_title.xml</td>
48
- * <td >Defines contents of the screen</td>
49
- * </tr>
50
- * </table>
51
- */
52
- public class CustomTitle extends Activity {
53
-
54
- /**
55
- * Initialization of the Activity after it is first created. Must at least
56
- * call {@link android.app.Activity#setContentView(int)} to
57
- * describe what is to be displayed in the screen.
58
- */
59
- @Override
60
- protected void onCreate(Bundle savedInstanceState) {
61
- super.onCreate(savedInstanceState);
62
-
63
- requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
64
- setContentView(R.layout.custom_title);
65
- getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);
66
-
67
- final TextView leftText = (TextView) findViewById(R.id.left_text);
68
- final TextView rightText = (TextView) findViewById(R.id.right_text);
69
- final EditText leftTextEdit = (EditText) findViewById(R.id.left_text_edit);
70
- final EditText rightTextEdit = (EditText) findViewById(R.id.right_text_edit);
71
- Button leftButton = (Button) findViewById(R.id.left_text_button);
72
- Button rightButton = (Button) findViewById(R.id.right_text_button);
73
-
74
- leftButton.setOnClickListener(new OnClickListener() {
75
- public void onClick(View v) {
76
- leftText.setText(leftTextEdit.getText());
77
- }
78
- });
79
- rightButton.setOnClickListener(new OnClickListener() {
80
- public void onClick(View v) {
81
- rightText.setText(rightTextEdit.getText());
82
- }
83
- });
84
- }
85
- }
@@ -1,934 +0,0 @@
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
- package com.example.android.apis.app;
18
-
19
- import com.example.android.apis.R;
20
-
21
- import android.app.ActivityManager;
22
- import android.app.AlertDialog;
23
- import android.app.admin.DeviceAdminReceiver;
24
- import android.app.admin.DevicePolicyManager;
25
- import android.content.ComponentName;
26
- import android.content.Context;
27
- import android.content.DialogInterface;
28
- import android.content.Intent;
29
- import android.os.Bundle;
30
- import android.preference.CheckBoxPreference;
31
- import android.preference.EditTextPreference;
32
- import android.preference.ListPreference;
33
- import android.preference.Preference;
34
- import android.preference.Preference.OnPreferenceChangeListener;
35
- import android.preference.Preference.OnPreferenceClickListener;
36
- import android.preference.PreferenceActivity;
37
- import android.preference.PreferenceCategory;
38
- import android.preference.PreferenceFragment;
39
- import android.preference.PreferenceScreen;
40
- import android.text.TextUtils;
41
- import android.util.Log;
42
- import android.widget.Toast;
43
-
44
- import java.util.List;
45
-
46
- /**
47
- * This activity provides a comprehensive UI for exploring and operating the DevicePolicyManager
48
- * api. It consists of two primary modules:
49
- *
50
- * 1: A device policy controller, implemented here as a series of preference fragments. Each
51
- * one contains code to monitor and control a particular subset of device policies.
52
- *
53
- * 2: A DeviceAdminReceiver, to receive updates from the DevicePolicyManager when certain aspects
54
- * of the device security status have changed.
55
- */
56
- public class DeviceAdminSample extends PreferenceActivity {
57
-
58
- // Miscellaneous utilities and definitions
59
- private static final String TAG = "DeviceAdminSample";
60
-
61
- private static final int REQUEST_CODE_ENABLE_ADMIN = 1;
62
- private static final int REQUEST_CODE_START_ENCRYPTION = 2;
63
-
64
- private static final long MS_PER_MINUTE = 60 * 1000;
65
- private static final long MS_PER_HOUR = 60 * MS_PER_MINUTE;
66
- private static final long MS_PER_DAY = 24 * MS_PER_HOUR;
67
-
68
- // The following keys are used to find each preference item
69
- private static final String KEY_ENABLE_ADMIN = "key_enable_admin";
70
- private static final String KEY_DISABLE_CAMERA = "key_disable_camera";
71
-
72
- private static final String KEY_CATEGORY_QUALITY = "key_category_quality";
73
- private static final String KEY_SET_PASSWORD = "key_set_password";
74
- private static final String KEY_RESET_PASSWORD = "key_reset_password";
75
- private static final String KEY_QUALITY = "key_quality";
76
- private static final String KEY_MIN_LENGTH = "key_minimum_length";
77
- private static final String KEY_MIN_LETTERS = "key_minimum_letters";
78
- private static final String KEY_MIN_NUMERIC = "key_minimum_numeric";
79
- private static final String KEY_MIN_LOWER_CASE = "key_minimum_lower_case";
80
- private static final String KEY_MIN_UPPER_CASE = "key_minimum_upper_case";
81
- private static final String KEY_MIN_SYMBOLS = "key_minimum_symbols";
82
- private static final String KEY_MIN_NON_LETTER = "key_minimum_non_letter";
83
-
84
- private static final String KEY_CATEGORY_EXPIRATION = "key_category_expiration";
85
- private static final String KEY_HISTORY = "key_history";
86
- private static final String KEY_EXPIRATION_TIMEOUT = "key_expiration_timeout";
87
- private static final String KEY_EXPIRATION_STATUS = "key_expiration_status";
88
-
89
- private static final String KEY_CATEGORY_LOCK_WIPE = "key_category_lock_wipe";
90
- private static final String KEY_MAX_TIME_SCREEN_LOCK = "key_max_time_screen_lock";
91
- private static final String KEY_MAX_FAILS_BEFORE_WIPE = "key_max_fails_before_wipe";
92
- private static final String KEY_LOCK_SCREEN = "key_lock_screen";
93
- private static final String KEY_WIPE_DATA = "key_wipe_data";
94
- private static final String KEY_WIP_DATA_ALL = "key_wipe_data_all";
95
-
96
- private static final String KEY_CATEGORY_ENCRYPTION = "key_category_encryption";
97
- private static final String KEY_REQUIRE_ENCRYPTION = "key_require_encryption";
98
- private static final String KEY_ACTIVATE_ENCRYPTION = "key_activate_encryption";
99
-
100
- // Interaction with the DevicePolicyManager
101
- DevicePolicyManager mDPM;
102
- ComponentName mDeviceAdminSample;
103
-
104
- @Override
105
- protected void onCreate(Bundle savedInstanceState) {
106
- super.onCreate(savedInstanceState);
107
-
108
- // Prepare to work with the DPM
109
- mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
110
- mDeviceAdminSample = new ComponentName(this, DeviceAdminSampleReceiver.class);
111
- }
112
-
113
- /**
114
- * We override this method to provide PreferenceActivity with the top-level preference headers.
115
- */
116
- @Override
117
- public void onBuildHeaders(List<Header> target) {
118
- loadHeadersFromResource(R.xml.device_admin_headers, target);
119
- }
120
-
121
- /**
122
- * Helper to determine if we are an active admin
123
- */
124
- private boolean isActiveAdmin() {
125
- return mDPM.isAdminActive(mDeviceAdminSample);
126
- }
127
-
128
- /**
129
- * Common fragment code for DevicePolicyManager access. Provides two shared elements:
130
- *
131
- * 1. Provides instance variables to access activity/context, DevicePolicyManager, etc.
132
- * 2. Provides support for the "set password" button(s) shared by multiple fragments.
133
- */
134
- public static class AdminSampleFragment extends PreferenceFragment
135
- implements OnPreferenceChangeListener, OnPreferenceClickListener{
136
-
137
- // Useful instance variables
138
- protected DeviceAdminSample mActivity;
139
- protected DevicePolicyManager mDPM;
140
- protected ComponentName mDeviceAdminSample;
141
- protected boolean mAdminActive;
142
-
143
- // Optional shared UI
144
- private PreferenceScreen mSetPassword;
145
- private EditTextPreference mResetPassword;
146
-
147
- @Override
148
- public void onActivityCreated(Bundle savedInstanceState) {
149
- super.onActivityCreated(savedInstanceState);
150
-
151
- // Retrieve the useful instance variables
152
- mActivity = (DeviceAdminSample) getActivity();
153
- mDPM = mActivity.mDPM;
154
- mDeviceAdminSample = mActivity.mDeviceAdminSample;
155
- mAdminActive = mActivity.isActiveAdmin();
156
-
157
- // Configure the shared UI elements (if they exist)
158
- mResetPassword = (EditTextPreference) findPreference(KEY_RESET_PASSWORD);
159
- mSetPassword = (PreferenceScreen) findPreference(KEY_SET_PASSWORD);
160
-
161
- if (mResetPassword != null) {
162
- mResetPassword.setOnPreferenceChangeListener(this);
163
- }
164
- if (mSetPassword != null) {
165
- mSetPassword.setOnPreferenceClickListener(this);
166
- }
167
- }
168
-
169
- @Override
170
- public void onResume() {
171
- super.onResume();
172
- mAdminActive = mActivity.isActiveAdmin();
173
- reloadSummaries();
174
- // Resetting the password via API is available only to active admins
175
- if (mResetPassword != null) {
176
- mResetPassword.setEnabled(mAdminActive);
177
- }
178
- }
179
-
180
- /**
181
- * Called automatically at every onResume. Should also call explicitly any time a
182
- * policy changes that may affect other policy values.
183
- */
184
- protected void reloadSummaries() {
185
- if (mSetPassword != null) {
186
- if (mAdminActive) {
187
- // Show password-sufficient status under Set Password button
188
- boolean sufficient = mDPM.isActivePasswordSufficient();
189
- mSetPassword.setSummary(sufficient ?
190
- R.string.password_sufficient : R.string.password_insufficient);
191
- } else {
192
- mSetPassword.setSummary(null);
193
- }
194
- }
195
- }
196
-
197
- public boolean onPreferenceClick(Preference preference) {
198
- if (mSetPassword != null && preference == mSetPassword) {
199
- Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
200
- startActivity(intent);
201
- return true;
202
- }
203
- return false;
204
- }
205
-
206
- public boolean onPreferenceChange(Preference preference, Object newValue) {
207
- if (mResetPassword != null && preference == mResetPassword) {
208
- doResetPassword((String)newValue);
209
- return true;
210
- }
211
- return false;
212
- }
213
-
214
- /**
215
- * This is dangerous, so we prevent automated tests from doing it, and we
216
- * remind the user after we do it.
217
- */
218
- private void doResetPassword(String newPassword) {
219
- if (alertIfMonkey(mActivity, R.string.monkey_reset_password)) {
220
- return;
221
- }
222
- mDPM.resetPassword(newPassword, DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
223
- AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
224
- String message = mActivity.getString(R.string.reset_password_warning, newPassword);
225
- builder.setMessage(message);
226
- builder.setPositiveButton(R.string.reset_password_ok, null);
227
- builder.show();
228
- }
229
-
230
- /**
231
- * Simple helper for summaries showing local & global (aggregate) policy settings
232
- */
233
- protected String localGlobalSummary(Object local, Object global) {
234
- return getString(R.string.status_local_global, local, global);
235
- }
236
- }
237
-
238
- /**
239
- * PreferenceFragment for "general" preferences.
240
- */
241
- public static class GeneralFragment extends AdminSampleFragment
242
- implements OnPreferenceChangeListener {
243
- // UI elements
244
- private CheckBoxPreference mEnableCheckbox;
245
- private CheckBoxPreference mDisableCameraCheckbox;
246
-
247
- @Override
248
- public void onCreate(Bundle savedInstanceState) {
249
- super.onCreate(savedInstanceState);
250
- addPreferencesFromResource(R.xml.device_admin_general);
251
- mEnableCheckbox = (CheckBoxPreference) findPreference(KEY_ENABLE_ADMIN);
252
- mEnableCheckbox.setOnPreferenceChangeListener(this);
253
- mDisableCameraCheckbox = (CheckBoxPreference) findPreference(KEY_DISABLE_CAMERA);
254
- mDisableCameraCheckbox.setOnPreferenceChangeListener(this);
255
- }
256
-
257
- // At onResume time, reload UI with current values as required
258
- @Override
259
- public void onResume() {
260
- super.onResume();
261
- mEnableCheckbox.setChecked(mAdminActive);
262
- enableDeviceCapabilitiesArea(mAdminActive);
263
-
264
- if (mAdminActive) {
265
- mDPM.setCameraDisabled(mDeviceAdminSample, mDisableCameraCheckbox.isChecked());
266
- reloadSummaries();
267
- }
268
- }
269
-
270
- @Override
271
- public boolean onPreferenceChange(Preference preference, Object newValue) {
272
- if (super.onPreferenceChange(preference, newValue)) {
273
- return true;
274
- }
275
- boolean value = (Boolean) newValue;
276
- if (preference == mEnableCheckbox) {
277
- if (value != mAdminActive) {
278
- if (value) {
279
- // Launch the activity to have the user enable our admin.
280
- Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
281
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, mDeviceAdminSample);
282
- intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
283
- mActivity.getString(R.string.add_admin_extra_app_text));
284
- startActivityForResult(intent, REQUEST_CODE_ENABLE_ADMIN);
285
- // return false - don't update checkbox until we're really active
286
- return false;
287
- } else {
288
- mDPM.removeActiveAdmin(mDeviceAdminSample);
289
- enableDeviceCapabilitiesArea(false);
290
- mAdminActive = false;
291
- }
292
- }
293
- } else if (preference == mDisableCameraCheckbox) {
294
- mDPM.setCameraDisabled(mDeviceAdminSample, value);
295
- reloadSummaries();
296
- }
297
- return true;
298
- }
299
-
300
- @Override
301
- protected void reloadSummaries() {
302
- super.reloadSummaries();
303
- String cameraSummary = getString(mDPM.getCameraDisabled(mDeviceAdminSample)
304
- ? R.string.camera_disabled : R.string.camera_enabled);
305
- mDisableCameraCheckbox.setSummary(cameraSummary);
306
- }
307
-
308
- /** Updates the device capabilities area (dis/enabling) as the admin is (de)activated */
309
- private void enableDeviceCapabilitiesArea(boolean enabled) {
310
- mDisableCameraCheckbox.setEnabled(enabled);
311
- }
312
- }
313
-
314
- /**
315
- * PreferenceFragment for "password quality" preferences.
316
- */
317
- public static class QualityFragment extends AdminSampleFragment
318
- implements OnPreferenceChangeListener {
319
-
320
- // Password quality values
321
- // This list must match the list found in samples/ApiDemos/res/values/arrays.xml
322
- final static int[] mPasswordQualityValues = new int[] {
323
- DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,
324
- DevicePolicyManager.PASSWORD_QUALITY_SOMETHING,
325
- DevicePolicyManager.PASSWORD_QUALITY_NUMERIC,
326
- DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC,
327
- DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC,
328
- DevicePolicyManager.PASSWORD_QUALITY_COMPLEX
329
- };
330
-
331
- // Password quality values (as strings, for the ListPreference entryValues)
332
- // This list must match the list found in samples/ApiDemos/res/values/arrays.xml
333
- final static String[] mPasswordQualityValueStrings = new String[] {
334
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED),
335
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING),
336
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC),
337
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC),
338
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC),
339
- String.valueOf(DevicePolicyManager.PASSWORD_QUALITY_COMPLEX)
340
- };
341
-
342
- // UI elements
343
- private PreferenceCategory mQualityCategory;
344
- private ListPreference mPasswordQuality;
345
- private EditTextPreference mMinLength;
346
- private EditTextPreference mMinLetters;
347
- private EditTextPreference mMinNumeric;
348
- private EditTextPreference mMinLowerCase;
349
- private EditTextPreference mMinUpperCase;
350
- private EditTextPreference mMinSymbols;
351
- private EditTextPreference mMinNonLetter;
352
-
353
- @Override
354
- public void onCreate(Bundle savedInstanceState) {
355
- super.onCreate(savedInstanceState);
356
- addPreferencesFromResource(R.xml.device_admin_quality);
357
-
358
- mQualityCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_QUALITY);
359
- mPasswordQuality = (ListPreference) findPreference(KEY_QUALITY);
360
- mMinLength = (EditTextPreference) findPreference(KEY_MIN_LENGTH);
361
- mMinLetters = (EditTextPreference) findPreference(KEY_MIN_LETTERS);
362
- mMinNumeric = (EditTextPreference) findPreference(KEY_MIN_NUMERIC);
363
- mMinLowerCase = (EditTextPreference) findPreference(KEY_MIN_LOWER_CASE);
364
- mMinUpperCase = (EditTextPreference) findPreference(KEY_MIN_UPPER_CASE);
365
- mMinSymbols = (EditTextPreference) findPreference(KEY_MIN_SYMBOLS);
366
- mMinNonLetter = (EditTextPreference) findPreference(KEY_MIN_NON_LETTER);
367
-
368
- mPasswordQuality.setOnPreferenceChangeListener(this);
369
- mMinLength.setOnPreferenceChangeListener(this);
370
- mMinLetters.setOnPreferenceChangeListener(this);
371
- mMinNumeric.setOnPreferenceChangeListener(this);
372
- mMinLowerCase.setOnPreferenceChangeListener(this);
373
- mMinUpperCase.setOnPreferenceChangeListener(this);
374
- mMinSymbols.setOnPreferenceChangeListener(this);
375
- mMinNonLetter.setOnPreferenceChangeListener(this);
376
-
377
- // Finish setup of the quality dropdown
378
- mPasswordQuality.setEntryValues(mPasswordQualityValueStrings);
379
- }
380
-
381
- @Override
382
- public void onResume() {
383
- super.onResume();
384
- mQualityCategory.setEnabled(mAdminActive);
385
- }
386
-
387
- /**
388
- * Update the summaries of each item to show the local setting and the global setting.
389
- */
390
- @Override
391
- protected void reloadSummaries() {
392
- super.reloadSummaries();
393
- // Show numeric settings for each policy API
394
- int local, global;
395
- local = mDPM.getPasswordQuality(mDeviceAdminSample);
396
- global = mDPM.getPasswordQuality(null);
397
- mPasswordQuality.setSummary(
398
- localGlobalSummary(qualityValueToString(local), qualityValueToString(global)));
399
- local = mDPM.getPasswordMinimumLength(mDeviceAdminSample);
400
- global = mDPM.getPasswordMinimumLength(null);
401
- mMinLength.setSummary(localGlobalSummary(local, global));
402
- local = mDPM.getPasswordMinimumLetters(mDeviceAdminSample);
403
- global = mDPM.getPasswordMinimumLetters(null);
404
- mMinLetters.setSummary(localGlobalSummary(local, global));
405
- local = mDPM.getPasswordMinimumNumeric(mDeviceAdminSample);
406
- global = mDPM.getPasswordMinimumNumeric(null);
407
- mMinNumeric.setSummary(localGlobalSummary(local, global));
408
- local = mDPM.getPasswordMinimumLowerCase(mDeviceAdminSample);
409
- global = mDPM.getPasswordMinimumLowerCase(null);
410
- mMinLowerCase.setSummary(localGlobalSummary(local, global));
411
- local = mDPM.getPasswordMinimumUpperCase(mDeviceAdminSample);
412
- global = mDPM.getPasswordMinimumUpperCase(null);
413
- mMinUpperCase.setSummary(localGlobalSummary(local, global));
414
- local = mDPM.getPasswordMinimumSymbols(mDeviceAdminSample);
415
- global = mDPM.getPasswordMinimumSymbols(null);
416
- mMinSymbols.setSummary(localGlobalSummary(local, global));
417
- local = mDPM.getPasswordMinimumNonLetter(mDeviceAdminSample);
418
- global = mDPM.getPasswordMinimumNonLetter(null);
419
- mMinNonLetter.setSummary(localGlobalSummary(local, global));
420
- }
421
-
422
- @Override
423
- public boolean onPreferenceChange(Preference preference, Object newValue) {
424
- if (super.onPreferenceChange(preference, newValue)) {
425
- return true;
426
- }
427
- String valueString = (String)newValue;
428
- if (TextUtils.isEmpty(valueString)) {
429
- return false;
430
- }
431
- int value = 0;
432
- try {
433
- value = Integer.parseInt(valueString);
434
- } catch (NumberFormatException nfe) {
435
- String warning = mActivity.getString(R.string.number_format_warning, valueString);
436
- Toast.makeText(mActivity, warning, Toast.LENGTH_SHORT).show();
437
- }
438
- if (preference == mPasswordQuality) {
439
- mDPM.setPasswordQuality(mDeviceAdminSample, value);
440
- } else if (preference == mMinLength) {
441
- mDPM.setPasswordMinimumLength(mDeviceAdminSample, value);
442
- } else if (preference == mMinLetters) {
443
- mDPM.setPasswordMinimumLetters(mDeviceAdminSample, value);
444
- } else if (preference == mMinNumeric) {
445
- mDPM.setPasswordMinimumNumeric(mDeviceAdminSample, value);
446
- } else if (preference == mMinLowerCase) {
447
- mDPM.setPasswordMinimumLowerCase(mDeviceAdminSample, value);
448
- } else if (preference == mMinUpperCase) {
449
- mDPM.setPasswordMinimumUpperCase(mDeviceAdminSample, value);
450
- } else if (preference == mMinSymbols) {
451
- mDPM.setPasswordMinimumSymbols(mDeviceAdminSample, value);
452
- } else if (preference == mMinNonLetter) {
453
- mDPM.setPasswordMinimumNonLetter(mDeviceAdminSample, value);
454
- }
455
- reloadSummaries();
456
- return true;
457
- }
458
-
459
- private String qualityValueToString(int quality) {
460
- for (int i= 0; i < mPasswordQualityValues.length; i++) {
461
- if (mPasswordQualityValues[i] == quality) {
462
- String[] qualities =
463
- mActivity.getResources().getStringArray(R.array.password_qualities);
464
- return qualities[i];
465
- }
466
- }
467
- return "(0x" + Integer.toString(quality, 16) + ")";
468
- }
469
- }
470
-
471
- /**
472
- * PreferenceFragment for "password expiration" preferences.
473
- */
474
- public static class ExpirationFragment extends AdminSampleFragment
475
- implements OnPreferenceChangeListener, OnPreferenceClickListener {
476
- private PreferenceCategory mExpirationCategory;
477
- private EditTextPreference mHistory;
478
- private EditTextPreference mExpirationTimeout;
479
- private PreferenceScreen mExpirationStatus;
480
-
481
- @Override
482
- public void onCreate(Bundle savedInstanceState) {
483
- super.onCreate(savedInstanceState);
484
- addPreferencesFromResource(R.xml.device_admin_expiration);
485
-
486
- mExpirationCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_EXPIRATION);
487
- mHistory = (EditTextPreference) findPreference(KEY_HISTORY);
488
- mExpirationTimeout = (EditTextPreference) findPreference(KEY_EXPIRATION_TIMEOUT);
489
- mExpirationStatus = (PreferenceScreen) findPreference(KEY_EXPIRATION_STATUS);
490
-
491
- mHistory.setOnPreferenceChangeListener(this);
492
- mExpirationTimeout.setOnPreferenceChangeListener(this);
493
- mExpirationStatus.setOnPreferenceClickListener(this);
494
- }
495
-
496
- @Override
497
- public void onResume() {
498
- super.onResume();
499
- mExpirationCategory.setEnabled(mAdminActive);
500
- }
501
-
502
- /**
503
- * Update the summaries of each item to show the local setting and the global setting.
504
- */
505
- @Override
506
- protected void reloadSummaries() {
507
- super.reloadSummaries();
508
-
509
- int local, global;
510
- local = mDPM.getPasswordHistoryLength(mDeviceAdminSample);
511
- global = mDPM.getPasswordHistoryLength(null);
512
- mHistory.setSummary(localGlobalSummary(local, global));
513
-
514
- long localLong, globalLong;
515
- localLong = mDPM.getPasswordExpirationTimeout(mDeviceAdminSample);
516
- globalLong = mDPM.getPasswordExpirationTimeout(null);
517
- mExpirationTimeout.setSummary(localGlobalSummary(
518
- localLong / MS_PER_MINUTE, globalLong / MS_PER_MINUTE));
519
-
520
- String expirationStatus = getExpirationStatus();
521
- mExpirationStatus.setSummary(expirationStatus);
522
- }
523
-
524
- @Override
525
- public boolean onPreferenceChange(Preference preference, Object newValue) {
526
- if (super.onPreferenceChange(preference, newValue)) {
527
- return true;
528
- }
529
- String valueString = (String)newValue;
530
- if (TextUtils.isEmpty(valueString)) {
531
- return false;
532
- }
533
- int value = 0;
534
- try {
535
- value = Integer.parseInt(valueString);
536
- } catch (NumberFormatException nfe) {
537
- String warning = mActivity.getString(R.string.number_format_warning, valueString);
538
- Toast.makeText(mActivity, warning, Toast.LENGTH_SHORT).show();
539
- }
540
- if (preference == mHistory) {
541
- mDPM.setPasswordHistoryLength(mDeviceAdminSample, value);
542
- } else if (preference == mExpirationTimeout) {
543
- mDPM.setPasswordExpirationTimeout(mDeviceAdminSample, value * MS_PER_MINUTE);
544
- }
545
- reloadSummaries();
546
- return true;
547
- }
548
-
549
- @Override
550
- public boolean onPreferenceClick(Preference preference) {
551
- if (super.onPreferenceClick(preference)) {
552
- return true;
553
- }
554
- if (preference == mExpirationStatus) {
555
- String expirationStatus = getExpirationStatus();
556
- mExpirationStatus.setSummary(expirationStatus);
557
- return true;
558
- }
559
- return false;
560
- }
561
-
562
- /**
563
- * Create a summary string describing the expiration status for the sample app,
564
- * as well as the global (aggregate) status.
565
- */
566
- private String getExpirationStatus() {
567
- // expirations are absolute; convert to relative for display
568
- long localExpiration = mDPM.getPasswordExpiration(mDeviceAdminSample);
569
- long globalExpiration = mDPM.getPasswordExpiration(null);
570
- long now = System.currentTimeMillis();
571
-
572
- // local expiration
573
- String local;
574
- if (localExpiration == 0) {
575
- local = mActivity.getString(R.string.expiration_status_none);
576
- } else {
577
- localExpiration -= now;
578
- String dms = timeToDaysMinutesSeconds(mActivity, Math.abs(localExpiration));
579
- if (localExpiration >= 0) {
580
- local = mActivity.getString(R.string.expiration_status_future, dms);
581
- } else {
582
- local = mActivity.getString(R.string.expiration_status_past, dms);
583
- }
584
- }
585
-
586
- // global expiration
587
- String global;
588
- if (globalExpiration == 0) {
589
- global = mActivity.getString(R.string.expiration_status_none);
590
- } else {
591
- globalExpiration -= now;
592
- String dms = timeToDaysMinutesSeconds(mActivity, Math.abs(globalExpiration));
593
- if (globalExpiration >= 0) {
594
- global = mActivity.getString(R.string.expiration_status_future, dms);
595
- } else {
596
- global = mActivity.getString(R.string.expiration_status_past, dms);
597
- }
598
- }
599
- return mActivity.getString(R.string.status_local_global, local, global);
600
- }
601
- }
602
-
603
- /**
604
- * PreferenceFragment for "lock screen & wipe" preferences.
605
- */
606
- public static class LockWipeFragment extends AdminSampleFragment
607
- implements OnPreferenceChangeListener, OnPreferenceClickListener {
608
- private PreferenceCategory mLockWipeCategory;
609
- private EditTextPreference mMaxTimeScreenLock;
610
- private EditTextPreference mMaxFailures;
611
- private PreferenceScreen mLockScreen;
612
- private PreferenceScreen mWipeData;
613
- private PreferenceScreen mWipeAppData;
614
-
615
- @Override
616
- public void onCreate(Bundle savedInstanceState) {
617
- super.onCreate(savedInstanceState);
618
- addPreferencesFromResource(R.xml.device_admin_lock_wipe);
619
-
620
- mLockWipeCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_LOCK_WIPE);
621
- mMaxTimeScreenLock = (EditTextPreference) findPreference(KEY_MAX_TIME_SCREEN_LOCK);
622
- mMaxFailures = (EditTextPreference) findPreference(KEY_MAX_FAILS_BEFORE_WIPE);
623
- mLockScreen = (PreferenceScreen) findPreference(KEY_LOCK_SCREEN);
624
- mWipeData = (PreferenceScreen) findPreference(KEY_WIPE_DATA);
625
- mWipeAppData = (PreferenceScreen) findPreference(KEY_WIP_DATA_ALL);
626
-
627
- mMaxTimeScreenLock.setOnPreferenceChangeListener(this);
628
- mMaxFailures.setOnPreferenceChangeListener(this);
629
- mLockScreen.setOnPreferenceClickListener(this);
630
- mWipeData.setOnPreferenceClickListener(this);
631
- mWipeAppData.setOnPreferenceClickListener(this);
632
- }
633
-
634
- @Override
635
- public void onResume() {
636
- super.onResume();
637
- mLockWipeCategory.setEnabled(mAdminActive);
638
- }
639
-
640
- /**
641
- * Update the summaries of each item to show the local setting and the global setting.
642
- */
643
- @Override
644
- protected void reloadSummaries() {
645
- super.reloadSummaries();
646
-
647
- long localLong, globalLong;
648
- localLong = mDPM.getMaximumTimeToLock(mDeviceAdminSample);
649
- globalLong = mDPM.getMaximumTimeToLock(null);
650
- mMaxTimeScreenLock.setSummary(localGlobalSummary(
651
- localLong / MS_PER_MINUTE, globalLong / MS_PER_MINUTE));
652
-
653
- int local, global;
654
- local = mDPM.getMaximumFailedPasswordsForWipe(mDeviceAdminSample);
655
- global = mDPM.getMaximumFailedPasswordsForWipe(null);
656
- mMaxFailures.setSummary(localGlobalSummary(local, global));
657
- }
658
-
659
- @Override
660
- public boolean onPreferenceChange(Preference preference, Object newValue) {
661
- if (super.onPreferenceChange(preference, newValue)) {
662
- return true;
663
- }
664
- String valueString = (String)newValue;
665
- if (TextUtils.isEmpty(valueString)) {
666
- return false;
667
- }
668
- int value = 0;
669
- try {
670
- value = Integer.parseInt(valueString);
671
- } catch (NumberFormatException nfe) {
672
- String warning = mActivity.getString(R.string.number_format_warning, valueString);
673
- Toast.makeText(mActivity, warning, Toast.LENGTH_SHORT).show();
674
- }
675
- if (preference == mMaxTimeScreenLock) {
676
- mDPM.setMaximumTimeToLock(mDeviceAdminSample, value * MS_PER_MINUTE);
677
- } else if (preference == mMaxFailures) {
678
- if (alertIfMonkey(mActivity, R.string.monkey_wipe_data)) {
679
- return true;
680
- }
681
- mDPM.setMaximumFailedPasswordsForWipe(mDeviceAdminSample, value);
682
- }
683
- reloadSummaries();
684
- return true;
685
- }
686
-
687
- @Override
688
- public boolean onPreferenceClick(Preference preference) {
689
- if (super.onPreferenceClick(preference)) {
690
- return true;
691
- }
692
- if (preference == mLockScreen) {
693
- if (alertIfMonkey(mActivity, R.string.monkey_lock_screen)) {
694
- return true;
695
- }
696
- mDPM.lockNow();
697
- return true;
698
- } else if (preference == mWipeData || preference == mWipeAppData) {
699
- if (alertIfMonkey(mActivity, R.string.monkey_wipe_data)) {
700
- return true;
701
- }
702
- promptForRealDeviceWipe(preference == mWipeAppData);
703
- return true;
704
- }
705
- return false;
706
- }
707
-
708
- /**
709
- * Wiping data is real, so we don't want it to be easy. Show two alerts before wiping.
710
- */
711
- private void promptForRealDeviceWipe(final boolean wipeAllData) {
712
- final DeviceAdminSample activity = mActivity;
713
-
714
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
715
- builder.setMessage(R.string.wipe_warning_first);
716
- builder.setPositiveButton(R.string.wipe_warning_first_ok,
717
- new DialogInterface.OnClickListener() {
718
- public void onClick(DialogInterface dialog, int which) {
719
- AlertDialog.Builder builder = new AlertDialog.Builder(activity);
720
- if (wipeAllData) {
721
- builder.setMessage(R.string.wipe_warning_second_full);
722
- } else {
723
- builder.setMessage(R.string.wipe_warning_second);
724
- }
725
- builder.setPositiveButton(R.string.wipe_warning_second_ok,
726
- new DialogInterface.OnClickListener() {
727
- public void onClick(DialogInterface dialog, int which) {
728
- boolean stillActive = mActivity.isActiveAdmin();
729
- if (stillActive) {
730
- mDPM.wipeData(wipeAllData
731
- ? DevicePolicyManager.WIPE_EXTERNAL_STORAGE : 0);
732
- }
733
- }
734
- });
735
- builder.setNegativeButton(R.string.wipe_warning_second_no, null);
736
- builder.show();
737
- }
738
- });
739
- builder.setNegativeButton(R.string.wipe_warning_first_no, null);
740
- builder.show();
741
- }
742
- }
743
-
744
- /**
745
- * PreferenceFragment for "encryption" preferences.
746
- */
747
- public static class EncryptionFragment extends AdminSampleFragment
748
- implements OnPreferenceChangeListener, OnPreferenceClickListener {
749
- private PreferenceCategory mEncryptionCategory;
750
- private CheckBoxPreference mRequireEncryption;
751
- private PreferenceScreen mActivateEncryption;
752
-
753
- @Override
754
- public void onCreate(Bundle savedInstanceState) {
755
- super.onCreate(savedInstanceState);
756
- addPreferencesFromResource(R.xml.device_admin_encryption);
757
-
758
- mEncryptionCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_ENCRYPTION);
759
- mRequireEncryption = (CheckBoxPreference) findPreference(KEY_REQUIRE_ENCRYPTION);
760
- mActivateEncryption = (PreferenceScreen) findPreference(KEY_ACTIVATE_ENCRYPTION);
761
-
762
- mRequireEncryption.setOnPreferenceChangeListener(this);
763
- mActivateEncryption.setOnPreferenceClickListener(this);
764
- }
765
-
766
- @Override
767
- public void onResume() {
768
- super.onResume();
769
- mEncryptionCategory.setEnabled(mAdminActive);
770
- mRequireEncryption.setChecked(mDPM.getStorageEncryption(mDeviceAdminSample));
771
- }
772
-
773
- /**
774
- * Update the summaries of each item to show the local setting and the global setting.
775
- */
776
- @Override
777
- protected void reloadSummaries() {
778
- super.reloadSummaries();
779
-
780
- boolean local, global;
781
- local = mDPM.getStorageEncryption(mDeviceAdminSample);
782
- global = mDPM.getStorageEncryption(null);
783
- mRequireEncryption.setSummary(localGlobalSummary(local, global));
784
-
785
- int deviceStatusCode = mDPM.getStorageEncryptionStatus();
786
- String deviceStatus = statusCodeToString(deviceStatusCode);
787
- String status = mActivity.getString(R.string.status_device_encryption, deviceStatus);
788
- mActivateEncryption.setSummary(status);
789
- }
790
-
791
- @Override
792
- public boolean onPreferenceChange(Preference preference, Object newValue) {
793
- if (super.onPreferenceChange(preference, newValue)) {
794
- return true;
795
- }
796
- if (preference == mRequireEncryption) {
797
- boolean newActive = (Boolean) newValue;
798
- mDPM.setStorageEncryption(mDeviceAdminSample, newActive);
799
- reloadSummaries();
800
- return true;
801
- }
802
- return true;
803
- }
804
-
805
- @Override
806
- public boolean onPreferenceClick(Preference preference) {
807
- if (super.onPreferenceClick(preference)) {
808
- return true;
809
- }
810
- if (preference == mActivateEncryption) {
811
- if (alertIfMonkey(mActivity, R.string.monkey_encryption)) {
812
- return true;
813
- }
814
- // Check to see if encryption is even supported on this device (it's optional).
815
- if (mDPM.getStorageEncryptionStatus() ==
816
- DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED) {
817
- AlertDialog.Builder builder = new AlertDialog.Builder(mActivity);
818
- builder.setMessage(R.string.encryption_not_supported);
819
- builder.setPositiveButton(R.string.encryption_not_supported_ok, null);
820
- builder.show();
821
- return true;
822
- }
823
- // Launch the activity to activate encryption. May or may not return!
824
- Intent intent = new Intent(DevicePolicyManager.ACTION_START_ENCRYPTION);
825
- startActivityForResult(intent, REQUEST_CODE_START_ENCRYPTION);
826
- return true;
827
- }
828
- return false;
829
- }
830
-
831
- private String statusCodeToString(int newStatusCode) {
832
- int newStatus = R.string.encryption_status_unknown;
833
- switch (newStatusCode) {
834
- case DevicePolicyManager.ENCRYPTION_STATUS_UNSUPPORTED:
835
- newStatus = R.string.encryption_status_unsupported;
836
- break;
837
- case DevicePolicyManager.ENCRYPTION_STATUS_INACTIVE:
838
- newStatus = R.string.encryption_status_inactive;
839
- break;
840
- case DevicePolicyManager.ENCRYPTION_STATUS_ACTIVATING:
841
- newStatus = R.string.encryption_status_activating;
842
- break;
843
- case DevicePolicyManager.ENCRYPTION_STATUS_ACTIVE:
844
- newStatus = R.string.encryption_status_active;
845
- break;
846
- }
847
- return mActivity.getString(newStatus);
848
- }
849
- }
850
-
851
- /**
852
- * Simple converter used for long expiration times reported in mSec.
853
- */
854
- private static String timeToDaysMinutesSeconds(Context context, long time) {
855
- long days = time / MS_PER_DAY;
856
- long hours = (time / MS_PER_HOUR) % 24;
857
- long minutes = (time / MS_PER_MINUTE) % 60;
858
- return context.getString(R.string.status_days_hours_minutes, days, hours, minutes);
859
- }
860
-
861
- /**
862
- * If the "user" is a monkey, post an alert and notify the caller. This prevents automated
863
- * test frameworks from stumbling into annoying or dangerous operations.
864
- */
865
- private static boolean alertIfMonkey(Context context, int stringId) {
866
- if (ActivityManager.isUserAMonkey()) {
867
- AlertDialog.Builder builder = new AlertDialog.Builder(context);
868
- builder.setMessage(stringId);
869
- builder.setPositiveButton(R.string.monkey_ok, null);
870
- builder.show();
871
- return true;
872
- } else {
873
- return false;
874
- }
875
- }
876
-
877
- /**
878
- * Sample implementation of a DeviceAdminReceiver. Your controller must provide one,
879
- * although you may or may not implement all of the methods shown here.
880
- *
881
- * All callbacks are on the UI thread and your implementations should not engage in any
882
- * blocking operations, including disk I/O.
883
- */
884
- public static class DeviceAdminSampleReceiver extends DeviceAdminReceiver {
885
- void showToast(Context context, String msg) {
886
- String status = context.getString(R.string.admin_receiver_status, msg);
887
- Toast.makeText(context, status, Toast.LENGTH_SHORT).show();
888
- }
889
-
890
- @Override
891
- public void onEnabled(Context context, Intent intent) {
892
- showToast(context, context.getString(R.string.admin_receiver_status_enabled));
893
- }
894
-
895
- @Override
896
- public CharSequence onDisableRequested(Context context, Intent intent) {
897
- return context.getString(R.string.admin_receiver_status_disable_warning);
898
- }
899
-
900
- @Override
901
- public void onDisabled(Context context, Intent intent) {
902
- showToast(context, context.getString(R.string.admin_receiver_status_disabled));
903
- }
904
-
905
- @Override
906
- public void onPasswordChanged(Context context, Intent intent) {
907
- showToast(context, context.getString(R.string.admin_receiver_status_pw_changed));
908
- }
909
-
910
- @Override
911
- public void onPasswordFailed(Context context, Intent intent) {
912
- showToast(context, context.getString(R.string.admin_receiver_status_pw_failed));
913
- }
914
-
915
- @Override
916
- public void onPasswordSucceeded(Context context, Intent intent) {
917
- showToast(context, context.getString(R.string.admin_receiver_status_pw_succeeded));
918
- }
919
-
920
- @Override
921
- public void onPasswordExpiring(Context context, Intent intent) {
922
- DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
923
- Context.DEVICE_POLICY_SERVICE);
924
- long expr = dpm.getPasswordExpiration(
925
- new ComponentName(context, DeviceAdminSampleReceiver.class));
926
- long delta = expr - System.currentTimeMillis();
927
- boolean expired = delta < 0L;
928
- String message = context.getString(expired ?
929
- R.string.expiration_status_past : R.string.expiration_status_future);
930
- showToast(context, message);
931
- Log.v(TAG, message);
932
- }
933
- }
934
- }