gametel 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.calabash_settings +1 -0
- data/.gitignore +25 -0
- data/.irbrc +16 -0
- data/.rspec +2 -0
- data/.rvmrc +1 -0
- data/.travis.yml +5 -0
- data/ApiDemos/.classpath +8 -0
- data/ApiDemos/.project +33 -0
- data/ApiDemos/.settings/org.eclipse.jdt.core.prefs +4 -0
- data/ApiDemos/AndroidManifest.xml +2715 -0
- data/ApiDemos/README.txt +19 -0
- data/ApiDemos/assets/HelloActivity.apk +0 -0
- data/ApiDemos/assets/fonts/samplefont.ttf +0 -0
- data/ApiDemos/assets/read_asset.txt +3 -0
- data/ApiDemos/bin/ApiDemos.apk +0 -0
- data/ApiDemos/build.xml +83 -0
- data/ApiDemos/local.properties +10 -0
- data/ApiDemos/proguard-project.txt +20 -0
- data/ApiDemos/project.properties +14 -0
- data/ApiDemos/res/anim/animator.xml +23 -0
- data/ApiDemos/res/anim/animator_set.xml +32 -0
- data/ApiDemos/res/anim/color_animator.xml +23 -0
- data/ApiDemos/res/anim/cycle_7.xml +17 -0
- data/ApiDemos/res/anim/fade.xml +20 -0
- data/ApiDemos/res/anim/hold.xml +20 -0
- data/ApiDemos/res/anim/hyperspace_in.xml +17 -0
- data/ApiDemos/res/anim/hyperspace_out.xml +61 -0
- data/ApiDemos/res/anim/layout_animation_row_left_slide.xml +19 -0
- data/ApiDemos/res/anim/layout_animation_row_right_slide.xml +20 -0
- data/ApiDemos/res/anim/layout_animation_table.xml +19 -0
- data/ApiDemos/res/anim/layout_bottom_to_top_slide.xml +20 -0
- data/ApiDemos/res/anim/layout_grid_fade.xml +20 -0
- data/ApiDemos/res/anim/layout_grid_inverse_fade.xml +21 -0
- data/ApiDemos/res/anim/layout_random_fade.xml +20 -0
- data/ApiDemos/res/anim/layout_wave_scale.xml +21 -0
- data/ApiDemos/res/anim/object_animator.xml +23 -0
- data/ApiDemos/res/anim/push_left_in.xml +20 -0
- data/ApiDemos/res/anim/push_left_out.xml +20 -0
- data/ApiDemos/res/anim/push_up_in.xml +20 -0
- data/ApiDemos/res/anim/push_up_out.xml +20 -0
- data/ApiDemos/res/anim/shake.xml +17 -0
- data/ApiDemos/res/anim/slide_left.xml +20 -0
- data/ApiDemos/res/anim/slide_right.xml +20 -0
- data/ApiDemos/res/anim/slide_top_to_bottom.xml +20 -0
- data/ApiDemos/res/anim/wave_scale.xml +33 -0
- data/ApiDemos/res/anim/zoom_enter.xml +28 -0
- data/ApiDemos/res/anim/zoom_exit.xml +33 -0
- data/ApiDemos/res/animator/fragment_slide_left_enter.xml +32 -0
- data/ApiDemos/res/animator/fragment_slide_left_exit.xml +32 -0
- data/ApiDemos/res/animator/fragment_slide_right_enter.xml +32 -0
- data/ApiDemos/res/animator/fragment_slide_right_exit.xml +32 -0
- data/ApiDemos/res/drawable-hdpi/alert_dialog_icon.png +0 -0
- data/ApiDemos/res/drawable-hdpi/apidemo_androidlogo.png +0 -0
- data/ApiDemos/res/drawable-hdpi/app_sample_code.png +0 -0
- data/ApiDemos/res/drawable-hdpi/arrow_down_float.png +0 -0
- data/ApiDemos/res/drawable-hdpi/arrow_up_float.png +0 -0
- data/ApiDemos/res/drawable-hdpi/btn_check_off.png +0 -0
- data/ApiDemos/res/drawable-hdpi/btn_check_on.png +0 -0
- data/ApiDemos/res/drawable-hdpi/btn_circle_normal.png +0 -0
- data/ApiDemos/res/drawable-hdpi/btn_default_normal.9.png +0 -0
- data/ApiDemos/res/drawable-hdpi/button.9.png +0 -0
- data/ApiDemos/res/drawable-hdpi/ic_contact_picture.png +0 -0
- data/ApiDemos/res/drawable-hdpi/ic_launcher_settings.png +0 -0
- data/ApiDemos/res/drawable-hdpi/ic_popup_reminder.png +0 -0
- data/ApiDemos/res/drawable-hdpi/icon48x48_2.png +0 -0
- data/ApiDemos/res/drawable-hdpi/logo240dpi.png +0 -0
- data/ApiDemos/res/drawable-hdpi/npatch240dpi.9.png +0 -0
- data/ApiDemos/res/drawable-hdpi/progress_circular_background.png +0 -0
- data/ApiDemos/res/drawable-hdpi/progress_particle.png +0 -0
- data/ApiDemos/res/drawable-hdpi/reslogo240dpi.png +0 -0
- data/ApiDemos/res/drawable-hdpi/scrollbar_state2.png +0 -0
- data/ApiDemos/res/drawable-hdpi/smlnpatch240dpi.9.png +0 -0
- data/ApiDemos/res/drawable-hdpi/star_big_on.png +0 -0
- data/ApiDemos/res/drawable-hdpi/stat_happy.png +0 -0
- data/ApiDemos/res/drawable-hdpi/stat_neutral.png +0 -0
- data/ApiDemos/res/drawable-hdpi/stat_sad.png +0 -0
- data/ApiDemos/res/drawable-hdpi/stat_sample.png +0 -0
- data/ApiDemos/res/drawable-hdpi/stylogo240dpi.png +0 -0
- data/ApiDemos/res/drawable-ldpi/logo120dpi.png +0 -0
- data/ApiDemos/res/drawable-ldpi/npatch120dpi.9.png +0 -0
- data/ApiDemos/res/drawable-ldpi/reslogo120dpi.png +0 -0
- data/ApiDemos/res/drawable-ldpi/smlnpatch120dpi.9.png +0 -0
- data/ApiDemos/res/drawable-ldpi/stylogo120dpi.png +0 -0
- data/ApiDemos/res/drawable-mdpi/alert_dialog_icon.png +0 -0
- data/ApiDemos/res/drawable-mdpi/apidemo_androidlogo.png +0 -0
- data/ApiDemos/res/drawable-mdpi/app_sample_code.png +0 -0
- data/ApiDemos/res/drawable-mdpi/arrow_down_float.png +0 -0
- data/ApiDemos/res/drawable-mdpi/arrow_up_float.png +0 -0
- data/ApiDemos/res/drawable-mdpi/btn_check_off.png +0 -0
- data/ApiDemos/res/drawable-mdpi/btn_check_on.png +0 -0
- data/ApiDemos/res/drawable-mdpi/btn_circle_normal.png +0 -0
- data/ApiDemos/res/drawable-mdpi/btn_default_normal.9.png +0 -0
- data/ApiDemos/res/drawable-mdpi/button.9.png +0 -0
- data/ApiDemos/res/drawable-mdpi/ic_contact_picture.png +0 -0
- data/ApiDemos/res/drawable-mdpi/ic_launcher_settings.png +0 -0
- data/ApiDemos/res/drawable-mdpi/ic_popup_reminder.png +0 -0
- data/ApiDemos/res/drawable-mdpi/ic_settings_applications.png +0 -0
- data/ApiDemos/res/drawable-mdpi/ic_settings_display.png +0 -0
- data/ApiDemos/res/drawable-mdpi/icon48x48_2.png +0 -0
- data/ApiDemos/res/drawable-mdpi/progress_circular_background.png +0 -0
- data/ApiDemos/res/drawable-mdpi/progress_particle.png +0 -0
- data/ApiDemos/res/drawable-mdpi/scrollbar_state2.png +0 -0
- data/ApiDemos/res/drawable-mdpi/star_big_on.png +0 -0
- data/ApiDemos/res/drawable-mdpi/stat_happy.png +0 -0
- data/ApiDemos/res/drawable-mdpi/stat_neutral.png +0 -0
- data/ApiDemos/res/drawable-mdpi/stat_sad.png +0 -0
- data/ApiDemos/res/drawable-mdpi/stat_sample.png +0 -0
- data/ApiDemos/res/drawable-nodpi/frantic.jpg +0 -0
- data/ApiDemos/res/drawable-nodpi/logonodpi120.png +0 -0
- data/ApiDemos/res/drawable-nodpi/logonodpi160.png +0 -0
- data/ApiDemos/res/drawable-nodpi/logonodpi240.png +0 -0
- data/ApiDemos/res/drawable-xhdpi/ic_launcher_settings.png +0 -0
- data/ApiDemos/res/drawable/animated_gif.gif +0 -0
- data/ApiDemos/res/drawable/balloons.jpg +0 -0
- data/ApiDemos/res/drawable/beach.jpg +0 -0
- data/ApiDemos/res/drawable/black_box.xml +21 -0
- data/ApiDemos/res/drawable/black_opaque_box.xml +21 -0
- data/ApiDemos/res/drawable/box.xml +24 -0
- data/ApiDemos/res/drawable/circular_progress.xml +29 -0
- data/ApiDemos/res/drawable/filled_box.xml +25 -0
- data/ApiDemos/res/drawable/frog.gif +0 -0
- data/ApiDemos/res/drawable/gallery_background_1.xml +20 -0
- data/ApiDemos/res/drawable/gallery_photo_1.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_2.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_3.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_4.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_5.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_6.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_7.jpg +0 -0
- data/ApiDemos/res/drawable/gallery_photo_8.jpg +0 -0
- data/ApiDemos/res/drawable/hover_background.xml +20 -0
- data/ApiDemos/res/drawable/hover_background_active.xml +23 -0
- data/ApiDemos/res/drawable/hover_background_inactive.xml +23 -0
- data/ApiDemos/res/drawable/icon48x48_1.png +0 -0
- data/ApiDemos/res/drawable/line.xml +21 -0
- data/ApiDemos/res/drawable/logo160dpi.png +0 -0
- data/ApiDemos/res/drawable/magnifying_glass.png +0 -0
- data/ApiDemos/res/drawable/npatch160dpi.9.png +0 -0
- data/ApiDemos/res/drawable/photo1.jpg +0 -0
- data/ApiDemos/res/drawable/photo2.jpg +0 -0
- data/ApiDemos/res/drawable/photo3.jpg +0 -0
- data/ApiDemos/res/drawable/photo4.jpg +0 -0
- data/ApiDemos/res/drawable/photo5.jpg +0 -0
- data/ApiDemos/res/drawable/photo6.jpg +0 -0
- data/ApiDemos/res/drawable/picture_frame.png +0 -0
- data/ApiDemos/res/drawable/reslogo160dpi.png +0 -0
- data/ApiDemos/res/drawable/sample_0.jpg +0 -0
- data/ApiDemos/res/drawable/sample_1.jpg +0 -0
- data/ApiDemos/res/drawable/sample_2.jpg +0 -0
- data/ApiDemos/res/drawable/sample_3.jpg +0 -0
- data/ApiDemos/res/drawable/sample_4.jpg +0 -0
- data/ApiDemos/res/drawable/sample_5.jpg +0 -0
- data/ApiDemos/res/drawable/sample_6.jpg +0 -0
- data/ApiDemos/res/drawable/sample_7.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_0.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_1.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_2.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_3.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_4.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_5.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_6.jpg +0 -0
- data/ApiDemos/res/drawable/sample_thumb_7.jpg +0 -0
- data/ApiDemos/res/drawable/scrollbar_vertical_thumb.xml +21 -0
- data/ApiDemos/res/drawable/scrollbar_vertical_track.xml +21 -0
- data/ApiDemos/res/drawable/shape_1.xml +22 -0
- data/ApiDemos/res/drawable/shape_2.xml +24 -0
- data/ApiDemos/res/drawable/shape_3.xml +24 -0
- data/ApiDemos/res/drawable/shape_4.xml +20 -0
- data/ApiDemos/res/drawable/shape_5.xml +23 -0
- data/ApiDemos/res/drawable/smlnpatch160dpi.9.png +0 -0
- data/ApiDemos/res/drawable/stylogo160dpi.png +0 -0
- data/ApiDemos/res/layout-h550dp/resources_height.xml +53 -0
- data/ApiDemos/res/layout-h670dp/resources_height.xml +63 -0
- data/ApiDemos/res/layout-h974dp/resources_height.xml +83 -0
- data/ApiDemos/res/layout-land/fragment_arguments.xml +57 -0
- data/ApiDemos/res/layout-land/fragment_layout.xml +34 -0
- data/ApiDemos/res/layout-sw480dp/resources_smallest_width_inner.xml +43 -0
- data/ApiDemos/res/layout-sw480dp/resources_smallest_width_row.xml +43 -0
- data/ApiDemos/res/layout-sw600dp/resources_smallest_width_inner.xml +53 -0
- data/ApiDemos/res/layout-sw600dp/resources_smallest_width_row.xml +53 -0
- data/ApiDemos/res/layout-sw720dp/resources_smallest_width_inner.xml +63 -0
- data/ApiDemos/res/layout-sw720dp/resources_smallest_width_row.xml +63 -0
- data/ApiDemos/res/layout-w1024dp/resources_width.xml +83 -0
- data/ApiDemos/res/layout-w600dp/resources_width.xml +53 -0
- data/ApiDemos/res/layout-w720dp/resources_width.xml +63 -0
- data/ApiDemos/res/layout/accessibility_service.xml +36 -0
- data/ApiDemos/res/layout/action_bar_display_options.xml +48 -0
- data/ApiDemos/res/layout/action_bar_display_options_custom.xml +17 -0
- data/ApiDemos/res/layout/action_bar_settings_action_provider.xml +34 -0
- data/ApiDemos/res/layout/action_bar_tab_content.xml +19 -0
- data/ApiDemos/res/layout/action_bar_tabs.xml +49 -0
- data/ApiDemos/res/layout/activity_animation.xml +42 -0
- data/ApiDemos/res/layout/activity_recreate.xml +37 -0
- data/ApiDemos/res/layout/alarm_controller.xml +45 -0
- data/ApiDemos/res/layout/alarm_service.xml +41 -0
- data/ApiDemos/res/layout/alert_dialog.xml +60 -0
- data/ApiDemos/res/layout/alert_dialog_text_entry.xml +67 -0
- data/ApiDemos/res/layout/animation_1.xml +44 -0
- data/ApiDemos/res/layout/animation_2.xml +67 -0
- data/ApiDemos/res/layout/animation_3.xml +44 -0
- data/ApiDemos/res/layout/animation_cloning.xml +28 -0
- data/ApiDemos/res/layout/animation_custom_evaluator.xml +28 -0
- data/ApiDemos/res/layout/animation_loading.xml +28 -0
- data/ApiDemos/res/layout/animation_multi_property.xml +28 -0
- data/ApiDemos/res/layout/animation_reversing.xml +40 -0
- data/ApiDemos/res/layout/animation_seeking.xml +40 -0
- data/ApiDemos/res/layout/animations_main_screen.xml +36 -0
- data/ApiDemos/res/layout/animator_custom_evaluator.xml +34 -0
- data/ApiDemos/res/layout/animator_events.xml +122 -0
- data/ApiDemos/res/layout/appwidget_configure.xml +42 -0
- data/ApiDemos/res/layout/appwidget_provider.xml +24 -0
- data/ApiDemos/res/layout/autocomplete_1.xml +48 -0
- data/ApiDemos/res/layout/autocomplete_2.xml +44 -0
- data/ApiDemos/res/layout/autocomplete_3.xml +165 -0
- data/ApiDemos/res/layout/autocomplete_4.xml +49 -0
- data/ApiDemos/res/layout/autocomplete_5.xml +45 -0
- data/ApiDemos/res/layout/autocomplete_6.xml +48 -0
- data/ApiDemos/res/layout/baseline_1.xml +40 -0
- data/ApiDemos/res/layout/baseline_2.xml +43 -0
- data/ApiDemos/res/layout/baseline_3.xml +56 -0
- data/ApiDemos/res/layout/baseline_4.xml +55 -0
- data/ApiDemos/res/layout/baseline_6.xml +34 -0
- data/ApiDemos/res/layout/baseline_7.xml +36 -0
- data/ApiDemos/res/layout/baseline_nested_1.xml +85 -0
- data/ApiDemos/res/layout/baseline_nested_2.xml +85 -0
- data/ApiDemos/res/layout/baseline_nested_3.xml +96 -0
- data/ApiDemos/res/layout/bouncing_balls.xml +22 -0
- data/ApiDemos/res/layout/buttons_1.xml +47 -0
- data/ApiDemos/res/layout/chronometer.xml +64 -0
- data/ApiDemos/res/layout/clipboard.xml +107 -0
- data/ApiDemos/res/layout/contacts_filter.xml +37 -0
- data/ApiDemos/res/layout/controls_1.xml +153 -0
- data/ApiDemos/res/layout/custom_dialog_activity.xml +24 -0
- data/ApiDemos/res/layout/custom_title.xml +57 -0
- data/ApiDemos/res/layout/custom_title_1.xml +33 -0
- data/ApiDemos/res/layout/custom_view_1.xml +44 -0
- data/ApiDemos/res/layout/custom_view_accessibility.xml +44 -0
- data/ApiDemos/res/layout/date_widgets_example_1.xml +40 -0
- data/ApiDemos/res/layout/date_widgets_example_2.xml +33 -0
- data/ApiDemos/res/layout/density_image_views.xml +37 -0
- data/ApiDemos/res/layout/density_styled_image_views.xml +26 -0
- data/ApiDemos/res/layout/dialog_activity.xml +53 -0
- data/ApiDemos/res/layout/drag_layout.xml +93 -0
- data/ApiDemos/res/layout/external_storage.xml +27 -0
- data/ApiDemos/res/layout/external_storage_item.xml +58 -0
- data/ApiDemos/res/layout/focus_1.xml +42 -0
- data/ApiDemos/res/layout/focus_2.xml +41 -0
- data/ApiDemos/res/layout/focus_3.xml +64 -0
- data/ApiDemos/res/layout/focus_5.xml +60 -0
- data/ApiDemos/res/layout/foreground_dispatch.xml +23 -0
- data/ApiDemos/res/layout/foreground_service_controller.xml +49 -0
- data/ApiDemos/res/layout/forward_target.xml +30 -0
- data/ApiDemos/res/layout/forwarding.xml +37 -0
- data/ApiDemos/res/layout/fragment_arguments.xml +54 -0
- data/ApiDemos/res/layout/fragment_context_menu.xml +38 -0
- data/ApiDemos/res/layout/fragment_dialog.xml +40 -0
- data/ApiDemos/res/layout/fragment_dialog_or_activity.xml +64 -0
- data/ApiDemos/res/layout/fragment_hide_show.xml +57 -0
- data/ApiDemos/res/layout/fragment_layout.xml +27 -0
- data/ApiDemos/res/layout/fragment_menu.xml +46 -0
- data/ApiDemos/res/layout/fragment_pager_support.xml +44 -0
- data/ApiDemos/res/layout/fragment_pager_support_list.xml +52 -0
- data/ApiDemos/res/layout/fragment_retain_instance.xml +46 -0
- data/ApiDemos/res/layout/fragment_stack.xml +38 -0
- data/ApiDemos/res/layout/gallery_1.xml +32 -0
- data/ApiDemos/res/layout/gallery_2.xml +38 -0
- data/ApiDemos/res/layout/game_controller_input.xml +52 -0
- data/ApiDemos/res/layout/game_controller_input_heading.xml +21 -0
- data/ApiDemos/res/layout/game_controller_input_text_column.xml +34 -0
- data/ApiDemos/res/layout/google_login.xml +60 -0
- data/ApiDemos/res/layout/grid_1.xml +29 -0
- data/ApiDemos/res/layout/grid_2.xml +30 -0
- data/ApiDemos/res/layout/grid_layout_1.xml +87 -0
- data/ApiDemos/res/layout/hello_world.xml +26 -0
- data/ApiDemos/res/layout/horizontal_scroll_view1.xml +26 -0
- data/ApiDemos/res/layout/hover.xml +64 -0
- data/ApiDemos/res/layout/image_button_1.xml +36 -0
- data/ApiDemos/res/layout/image_switcher_1.xml +40 -0
- data/ApiDemos/res/layout/image_view_1.xml +144 -0
- data/ApiDemos/res/layout/incoming_message.xml +50 -0
- data/ApiDemos/res/layout/incoming_message_info.xml +38 -0
- data/ApiDemos/res/layout/incoming_message_interstitial.xml +37 -0
- data/ApiDemos/res/layout/incoming_message_panel.xml +42 -0
- data/ApiDemos/res/layout/incoming_message_view.xml +80 -0
- data/ApiDemos/res/layout/install_apk.xml +56 -0
- data/ApiDemos/res/layout/intent_activity_flags.xml +43 -0
- data/ApiDemos/res/layout/intents.xml +37 -0
- data/ApiDemos/res/layout/labeled_text_edit.xml +38 -0
- data/ApiDemos/res/layout/launcher_shortcuts.xml +40 -0
- data/ApiDemos/res/layout/layout_animation_1.xml +30 -0
- data/ApiDemos/res/layout/layout_animation_3.xml +21 -0
- data/ApiDemos/res/layout/layout_animation_4.xml +30 -0
- data/ApiDemos/res/layout/layout_animation_5.xml +30 -0
- data/ApiDemos/res/layout/layout_animation_6.xml +29 -0
- data/ApiDemos/res/layout/layout_animation_7.xml +57 -0
- data/ApiDemos/res/layout/layout_animations.xml +80 -0
- data/ApiDemos/res/layout/layout_animations_by_default.xml +34 -0
- data/ApiDemos/res/layout/layout_animations_hideshow.xml +52 -0
- data/ApiDemos/res/layout/linear_layout_1.xml +46 -0
- data/ApiDemos/res/layout/linear_layout_10.xml +122 -0
- data/ApiDemos/res/layout/linear_layout_2.xml +47 -0
- data/ApiDemos/res/layout/linear_layout_3.xml +51 -0
- data/ApiDemos/res/layout/linear_layout_4.xml +50 -0
- data/ApiDemos/res/layout/linear_layout_5.xml +76 -0
- data/ApiDemos/res/layout/linear_layout_6.xml +53 -0
- data/ApiDemos/res/layout/linear_layout_7.xml +54 -0
- data/ApiDemos/res/layout/linear_layout_8.xml +53 -0
- data/ApiDemos/res/layout/linear_layout_9.xml +38 -0
- data/ApiDemos/res/layout/link.xml +68 -0
- data/ApiDemos/res/layout/list_12.xml +35 -0
- data/ApiDemos/res/layout/list_13.xml +34 -0
- data/ApiDemos/res/layout/list_7.xml +35 -0
- data/ApiDemos/res/layout/list_8.xml +61 -0
- data/ApiDemos/res/layout/list_item_checkbox.xml +22 -0
- data/ApiDemos/res/layout/list_item_icon_text.xml +32 -0
- data/ApiDemos/res/layout/list_position.xml +25 -0
- data/ApiDemos/res/layout/local_sample.xml +37 -0
- data/ApiDemos/res/layout/local_service_binding.xml +42 -0
- data/ApiDemos/res/layout/local_service_controller.xml +42 -0
- data/ApiDemos/res/layout/log_text_box_1.xml +42 -0
- data/ApiDemos/res/layout/mapview.xml +31 -0
- data/ApiDemos/res/layout/marquee.xml +46 -0
- data/ApiDemos/res/layout/mediaplayer_1.xml +31 -0
- data/ApiDemos/res/layout/mediaplayer_2.xml +13 -0
- data/ApiDemos/res/layout/messenger_service_binding.xml +47 -0
- data/ApiDemos/res/layout/morse_code.xml +37 -0
- data/ApiDemos/res/layout/notify_with_text.xml +34 -0
- data/ApiDemos/res/layout/notifying_controller.xml +41 -0
- data/ApiDemos/res/layout/overscan.xml +79 -0
- data/ApiDemos/res/layout/pick_contact.xml +48 -0
- data/ApiDemos/res/layout/popup_menu_1.xml +25 -0
- data/ApiDemos/res/layout/preference_widget_mypreference.xml +25 -0
- data/ApiDemos/res/layout/progressbar_1.xml +74 -0
- data/ApiDemos/res/layout/progressbar_2.xml +41 -0
- data/ApiDemos/res/layout/progressbar_3.xml +32 -0
- data/ApiDemos/res/layout/progressbar_4.xml +27 -0
- data/ApiDemos/res/layout/quick_contacts.xml +47 -0
- data/ApiDemos/res/layout/radio_group_1.xml +49 -0
- data/ApiDemos/res/layout/ratingbar_1.xml +60 -0
- data/ApiDemos/res/layout/read_asset.xml +29 -0
- data/ApiDemos/res/layout/receive_result.xml +50 -0
- data/ApiDemos/res/layout/redirect_enter.xml +36 -0
- data/ApiDemos/res/layout/redirect_getter.xml +42 -0
- data/ApiDemos/res/layout/redirect_main.xml +47 -0
- data/ApiDemos/res/layout/relative_layout_1.xml +54 -0
- data/ApiDemos/res/layout/relative_layout_2.xml +78 -0
- data/ApiDemos/res/layout/remote_binding_options.xml +82 -0
- data/ApiDemos/res/layout/remote_service_binding.xml +52 -0
- data/ApiDemos/res/layout/remote_service_controller.xml +42 -0
- data/ApiDemos/res/layout/reorder_four.xml +38 -0
- data/ApiDemos/res/layout/reorder_on_launch.xml +38 -0
- data/ApiDemos/res/layout/reorder_three.xml +38 -0
- data/ApiDemos/res/layout/reorder_two.xml +38 -0
- data/ApiDemos/res/layout/resources.xml +55 -0
- data/ApiDemos/res/layout/resources_height.xml +33 -0
- data/ApiDemos/res/layout/resources_layout_reference.xml +35 -0
- data/ApiDemos/res/layout/resources_layout_reference_tablet.xml +35 -0
- data/ApiDemos/res/layout/resources_smallest_width.xml +35 -0
- data/ApiDemos/res/layout/resources_smallest_width_inner.xml +33 -0
- data/ApiDemos/res/layout/resources_smallest_width_row.xml +33 -0
- data/ApiDemos/res/layout/resources_width.xml +33 -0
- data/ApiDemos/res/layout/resources_width_and_height.xml +35 -0
- data/ApiDemos/res/layout/rotating_list.xml +37 -0
- data/ApiDemos/res/layout/rotating_view.xml +160 -0
- data/ApiDemos/res/layout/save_restore_state.xml +58 -0
- data/ApiDemos/res/layout/screen_orientation.xml +37 -0
- data/ApiDemos/res/layout/scroll_view_1.xml +90 -0
- data/ApiDemos/res/layout/scroll_view_2.xml +41 -0
- data/ApiDemos/res/layout/scrollbar1.xml +169 -0
- data/ApiDemos/res/layout/scrollbar2.xml +172 -0
- data/ApiDemos/res/layout/scrollbar3.xml +136 -0
- data/ApiDemos/res/layout/search_invoke.xml +96 -0
- data/ApiDemos/res/layout/search_query_results.xml +76 -0
- data/ApiDemos/res/layout/search_view.xml +19 -0
- data/ApiDemos/res/layout/searchview_actionbar.xml +28 -0
- data/ApiDemos/res/layout/searchview_filter.xml +31 -0
- data/ApiDemos/res/layout/secure_view.xml +112 -0
- data/ApiDemos/res/layout/secure_view_overlay.xml +50 -0
- data/ApiDemos/res/layout/seekbar_1.xml +36 -0
- data/ApiDemos/res/layout/select_dialog.xml +29 -0
- data/ApiDemos/res/layout/send_result.xml +45 -0
- data/ApiDemos/res/layout/service_start_arguments_controller.xml +57 -0
- data/ApiDemos/res/layout/shape_drawable_1.xml +73 -0
- data/ApiDemos/res/layout/simple_list_item_checkable_1.xml +29 -0
- data/ApiDemos/res/layout/sms_demo.xml +67 -0
- data/ApiDemos/res/layout/soft_input_modes.xml +64 -0
- data/ApiDemos/res/layout/spinner_1.xml +51 -0
- data/ApiDemos/res/layout/split_touch_view.xml +42 -0
- data/ApiDemos/res/layout/status_bar_balloon.xml +32 -0
- data/ApiDemos/res/layout/status_bar_notifications.xml +157 -0
- data/ApiDemos/res/layout/styled_text.xml +52 -0
- data/ApiDemos/res/layout/surface_view_overlay.xml +84 -0
- data/ApiDemos/res/layout/switches.xml +82 -0
- data/ApiDemos/res/layout/table_layout_1.xml +56 -0
- data/ApiDemos/res/layout/table_layout_10.xml +58 -0
- data/ApiDemos/res/layout/table_layout_11.xml +93 -0
- data/ApiDemos/res/layout/table_layout_12.xml +85 -0
- data/ApiDemos/res/layout/table_layout_2.xml +40 -0
- data/ApiDemos/res/layout/table_layout_3.xml +62 -0
- data/ApiDemos/res/layout/table_layout_4.xml +42 -0
- data/ApiDemos/res/layout/table_layout_5.xml +82 -0
- data/ApiDemos/res/layout/table_layout_6.xml +92 -0
- data/ApiDemos/res/layout/table_layout_7.xml +106 -0
- data/ApiDemos/res/layout/table_layout_8.xml +87 -0
- data/ApiDemos/res/layout/table_layout_9.xml +92 -0
- data/ApiDemos/res/layout/tabs1.xml +39 -0
- data/ApiDemos/res/layout/tabs_right_gravity.xml +37 -0
- data/ApiDemos/res/layout/tabs_scroll.xml +41 -0
- data/ApiDemos/res/layout/tasklist_main.xml +47 -0
- data/ApiDemos/res/layout/tasklist_row.xml +38 -0
- data/ApiDemos/res/layout/text_switcher_1.xml +31 -0
- data/ApiDemos/res/layout/text_to_speech.xml +26 -0
- data/ApiDemos/res/layout/translucent_background.xml +24 -0
- data/ApiDemos/res/layout/videoview.xml +14 -0
- data/ApiDemos/res/layout/visibility_1.xml +71 -0
- data/ApiDemos/res/layout/voice_recognition.xml +61 -0
- data/ApiDemos/res/layout/wallpaper_2.xml +27 -0
- data/ApiDemos/res/layout/webview_1.xml +79 -0
- data/ApiDemos/res/menu/action_bar_settings_action_provider.xml +28 -0
- data/ApiDemos/res/menu/action_bar_share_action_provider.xml +28 -0
- data/ApiDemos/res/menu/actions.xml +48 -0
- data/ApiDemos/res/menu/camera_menu.xml +5 -0
- data/ApiDemos/res/menu/category_order.xml +57 -0
- data/ApiDemos/res/menu/checkable.xml +91 -0
- data/ApiDemos/res/menu/disabled.xml +55 -0
- data/ApiDemos/res/menu/display_options_actions.xml +19 -0
- data/ApiDemos/res/menu/groups.xml +45 -0
- data/ApiDemos/res/menu/list_select_menu.xml +22 -0
- data/ApiDemos/res/menu/order.xml +38 -0
- data/ApiDemos/res/menu/popup.xml +32 -0
- data/ApiDemos/res/menu/searchview_in_menu.xml +22 -0
- data/ApiDemos/res/menu/shortcuts.xml +60 -0
- data/ApiDemos/res/menu/submenu.xml +44 -0
- data/ApiDemos/res/menu/title_icon.xml +31 -0
- data/ApiDemos/res/menu/title_only.xml +25 -0
- data/ApiDemos/res/menu/visible.xml +37 -0
- data/ApiDemos/res/raw/androids.pkm +0 -0
- data/ApiDemos/res/raw/robot.png +0 -0
- data/ApiDemos/res/raw/skycubemap0.jpg +0 -0
- data/ApiDemos/res/raw/skycubemap1.jpg +0 -0
- data/ApiDemos/res/raw/skycubemap2.jpg +0 -0
- data/ApiDemos/res/raw/skycubemap3.jpg +0 -0
- data/ApiDemos/res/raw/skycubemap4.jpg +0 -0
- data/ApiDemos/res/raw/skycubemap5.jpg +0 -0
- data/ApiDemos/res/raw/sound_ringer_normal.ogg +0 -0
- data/ApiDemos/res/raw/sound_ringer_silent.ogg +0 -0
- data/ApiDemos/res/raw/sound_ringer_vibrate.ogg +0 -0
- data/ApiDemos/res/raw/sound_screen_off.ogg +0 -0
- data/ApiDemos/res/raw/sound_screen_on.ogg +0 -0
- data/ApiDemos/res/raw/sound_view_clicked.ogg +0 -0
- data/ApiDemos/res/raw/sound_view_focused_or_selected.ogg +0 -0
- data/ApiDemos/res/raw/sound_view_hover_enter.ogg +0 -0
- data/ApiDemos/res/raw/sound_window_state_changed.ogg +0 -0
- data/ApiDemos/res/raw/test_cbr.mp3 +0 -0
- data/ApiDemos/res/values-hdpi/strings.xml +19 -0
- data/ApiDemos/res/values-ldpi/strings.xml +19 -0
- data/ApiDemos/res/values-mdpi/strings.xml +19 -0
- data/ApiDemos/res/values-sw600dp/layout.xml +22 -0
- data/ApiDemos/res/values-v11/bools.xml +20 -0
- data/ApiDemos/res/values-v11/styles.xml +29 -0
- data/ApiDemos/res/values-v13/bools.xml +20 -0
- data/ApiDemos/res/values-v14/bools.xml +20 -0
- data/ApiDemos/res/values-xhdpi/strings.xml +19 -0
- data/ApiDemos/res/values-xlarge/layout.xml +22 -0
- data/ApiDemos/res/values/arrays.xml +149 -0
- data/ApiDemos/res/values/attrs.xml +55 -0
- data/ApiDemos/res/values/bools.xml +32 -0
- data/ApiDemos/res/values/colors.xml +32 -0
- data/ApiDemos/res/values/ids.xml +19 -0
- data/ApiDemos/res/values/strings.xml +1342 -0
- data/ApiDemos/res/values/styles.xml +124 -0
- data/ApiDemos/res/xml/advanced_preferences.xml +38 -0
- data/ApiDemos/res/xml/appwidget_provider.xml +28 -0
- data/ApiDemos/res/xml/default_values.xml +44 -0
- data/ApiDemos/res/xml/device_admin_encryption.xml +34 -0
- data/ApiDemos/res/xml/device_admin_expiration.xml +53 -0
- data/ApiDemos/res/xml/device_admin_general.xml +40 -0
- data/ApiDemos/res/xml/device_admin_headers.xml +41 -0
- data/ApiDemos/res/xml/device_admin_lock_wipe.xml +50 -0
- data/ApiDemos/res/xml/device_admin_quality.xml +79 -0
- data/ApiDemos/res/xml/device_admin_sample.xml +30 -0
- data/ApiDemos/res/xml/filter_nfc.xml +28 -0
- data/ApiDemos/res/xml/fragmented_preferences.xml +97 -0
- data/ApiDemos/res/xml/fragmented_preferences_inner.xml +26 -0
- data/ApiDemos/res/xml/preference_dependencies.xml +35 -0
- data/ApiDemos/res/xml/preference_headers.xml +44 -0
- data/ApiDemos/res/xml/preference_switch +46 -0
- data/ApiDemos/res/xml/preferences.xml +101 -0
- data/ApiDemos/res/xml/searchable.xml +30 -0
- data/ApiDemos/res/xml/taskbackconfig.xml +24 -0
- data/ApiDemos/src/com/example/android/apis/ApiDemos.java +149 -0
- data/ApiDemos/src/com/example/android/apis/ApiDemosApplication.java +36 -0
- data/ApiDemos/src/com/example/android/apis/Shakespeare.java +223 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/ClockBackActivity.java +55 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/ClockBackService.java +575 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/CustomViewAccessibilityActivity.java +280 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskBackService.java +191 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskListActivity.java +59 -0
- data/ApiDemos/src/com/example/android/apis/accessibility/TaskListView.java +119 -0
- data/ApiDemos/src/com/example/android/apis/animation/AnimationCloning.java +148 -0
- data/ApiDemos/src/com/example/android/apis/animation/AnimationLoading.java +165 -0
- data/ApiDemos/src/com/example/android/apis/animation/AnimationSeeking.java +173 -0
- data/ApiDemos/src/com/example/android/apis/animation/AnimatorEvents.java +237 -0
- data/ApiDemos/src/com/example/android/apis/animation/BouncingBalls.java +184 -0
- data/ApiDemos/src/com/example/android/apis/animation/CustomEvaluator.java +174 -0
- data/ApiDemos/src/com/example/android/apis/animation/FixedGridLayout.java +108 -0
- data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimations.java +210 -0
- data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsByDefault.java +61 -0
- data/ApiDemos/src/com/example/android/apis/animation/LayoutAnimationsHideShow.java +178 -0
- data/ApiDemos/src/com/example/android/apis/animation/ListFlipper.java +126 -0
- data/ApiDemos/src/com/example/android/apis/animation/MultiPropertyAnimation.java +178 -0
- data/ApiDemos/src/com/example/android/apis/animation/ReversingAnimation.java +135 -0
- data/ApiDemos/src/com/example/android/apis/animation/Rotate3dAnimation.java +92 -0
- data/ApiDemos/src/com/example/android/apis/animation/ShapeHolder.java +100 -0
- data/ApiDemos/src/com/example/android/apis/animation/Transition3d.java +175 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarDisplayOptions.java +124 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarMechanics.java +73 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarSettingsActionProviderActivity.java +112 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarShareActionProviderActivity.java +125 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarTabs.java +131 -0
- data/ApiDemos/src/com/example/android/apis/app/ActionBarUsage.java +93 -0
- data/ApiDemos/src/com/example/android/apis/app/ActivityRecreate.java +73 -0
- data/ApiDemos/src/com/example/android/apis/app/AlarmController.java +168 -0
- data/ApiDemos/src/com/example/android/apis/app/AlarmService.java +89 -0
- data/ApiDemos/src/com/example/android/apis/app/AlarmService_Service.java +131 -0
- data/ApiDemos/src/com/example/android/apis/app/AlertDialogSamples.java +423 -0
- data/ApiDemos/src/com/example/android/apis/app/Animation.java +74 -0
- data/ApiDemos/src/com/example/android/apis/app/AppUpdateReceiver.java +34 -0
- data/ApiDemos/src/com/example/android/apis/app/ContactsFilter.java +53 -0
- data/ApiDemos/src/com/example/android/apis/app/ContactsFilterInstrumentation.java +73 -0
- data/ApiDemos/src/com/example/android/apis/app/ContactsSelectInstrumentation.java +86 -0
- data/ApiDemos/src/com/example/android/apis/app/CustomDialogActivity.java +48 -0
- data/ApiDemos/src/com/example/android/apis/app/CustomTitle.java +85 -0
- data/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.java +938 -0
- data/ApiDemos/src/com/example/android/apis/app/DialogActivity.java +86 -0
- data/ApiDemos/src/com/example/android/apis/app/ForegroundService.java +240 -0
- data/ApiDemos/src/com/example/android/apis/app/ForwardTarget.java +41 -0
- data/ApiDemos/src/com/example/android/apis/app/Forwarding.java +85 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.java +109 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentArguments.java +108 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentContextMenu.java +77 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentCustomAnimations.java +131 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentDialog.java +168 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentDialogOrActivity.java +82 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentHideShow.java +113 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentLayout.java +220 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentListArray.java +60 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentMenu.java +132 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentReceiveResult.java +133 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentRetainInstance.java +232 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentStack.java +124 -0
- data/ApiDemos/src/com/example/android/apis/app/FragmentTabs.java +118 -0
- data/ApiDemos/src/com/example/android/apis/app/HelloWorld.java +66 -0
- data/ApiDemos/src/com/example/android/apis/app/IRemoteService.aidl +37 -0
- data/ApiDemos/src/com/example/android/apis/app/IRemoteServiceCallback.aidl +29 -0
- data/ApiDemos/src/com/example/android/apis/app/ISecondary.aidl +36 -0
- data/ApiDemos/src/com/example/android/apis/app/IncomingMessage.java +197 -0
- data/ApiDemos/src/com/example/android/apis/app/IncomingMessageInterstitial.java +64 -0
- data/ApiDemos/src/com/example/android/apis/app/IncomingMessageView.java +59 -0
- data/ApiDemos/src/com/example/android/apis/app/IntentActivityFlags.java +86 -0
- data/ApiDemos/src/com/example/android/apis/app/Intents.java +47 -0
- data/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.java +141 -0
- data/ApiDemos/src/com/example/android/apis/app/LoaderCursor.java +177 -0
- data/ApiDemos/src/com/example/android/apis/app/LoaderCustom.java +482 -0
- data/ApiDemos/src/com/example/android/apis/app/LoaderThrottle.java +512 -0
- data/ApiDemos/src/com/example/android/apis/app/LocalSample.java +53 -0
- data/ApiDemos/src/com/example/android/apis/app/LocalSampleInstrumentation.java +92 -0
- data/ApiDemos/src/com/example/android/apis/app/LocalService.java +120 -0
- data/ApiDemos/src/com/example/android/apis/app/LocalServiceActivities.java +171 -0
- data/ApiDemos/src/com/example/android/apis/app/MenuInflateFromXml.java +174 -0
- data/ApiDemos/src/com/example/android/apis/app/MessengerService.java +169 -0
- data/ApiDemos/src/com/example/android/apis/app/MessengerServiceActivities.java +178 -0
- data/ApiDemos/src/com/example/android/apis/app/NotificationDisplay.java +82 -0
- data/ApiDemos/src/com/example/android/apis/app/NotifyWithText.java +80 -0
- data/ApiDemos/src/com/example/android/apis/app/NotifyingController.java +61 -0
- data/ApiDemos/src/com/example/android/apis/app/NotifyingService.java +128 -0
- data/ApiDemos/src/com/example/android/apis/app/OneShotAlarm.java +42 -0
- data/ApiDemos/src/com/example/android/apis/app/PersistentState.java +128 -0
- data/ApiDemos/src/com/example/android/apis/app/QuickContactsDemo.java +104 -0
- data/ApiDemos/src/com/example/android/apis/app/ReceiveResult.java +153 -0
- data/ApiDemos/src/com/example/android/apis/app/RedirectEnter.java +59 -0
- data/ApiDemos/src/com/example/android/apis/app/RedirectGetter.java +87 -0
- data/ApiDemos/src/com/example/android/apis/app/RedirectMain.java +122 -0
- data/ApiDemos/src/com/example/android/apis/app/RemoteService.java +652 -0
- data/ApiDemos/src/com/example/android/apis/app/ReorderFour.java +46 -0
- data/ApiDemos/src/com/example/android/apis/app/ReorderOnLaunch.java +44 -0
- data/ApiDemos/src/com/example/android/apis/app/ReorderThree.java +44 -0
- data/ApiDemos/src/com/example/android/apis/app/ReorderTwo.java +44 -0
- data/ApiDemos/src/com/example/android/apis/app/RepeatingAlarm.java +40 -0
- data/ApiDemos/src/com/example/android/apis/app/SaveRestoreState.java +98 -0
- data/ApiDemos/src/com/example/android/apis/app/ScreenOrientation.java +73 -0
- data/ApiDemos/src/com/example/android/apis/app/SearchInvoke.java +241 -0
- data/ApiDemos/src/com/example/android/apis/app/SearchQueryResults.java +118 -0
- data/ApiDemos/src/com/example/android/apis/app/SearchSuggestionSampleProvider.java +50 -0
- data/ApiDemos/src/com/example/android/apis/app/SendResult.java +81 -0
- data/ApiDemos/src/com/example/android/apis/app/ServiceStartArguments.java +272 -0
- data/ApiDemos/src/com/example/android/apis/app/SetWallpaperActivity.java +89 -0
- data/ApiDemos/src/com/example/android/apis/app/SoftInputModes.java +67 -0
- data/ApiDemos/src/com/example/android/apis/app/StatusBarNotifications.java +270 -0
- data/ApiDemos/src/com/example/android/apis/app/TextToSpeechActivity.java +136 -0
- data/ApiDemos/src/com/example/android/apis/app/TranslucentActivity.java +48 -0
- data/ApiDemos/src/com/example/android/apis/app/TranslucentBlurActivity.java +55 -0
- data/ApiDemos/src/com/example/android/apis/app/VoiceRecognition.java +230 -0
- data/ApiDemos/src/com/example/android/apis/app/WallpaperActivity.java +48 -0
- data/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetConfigure.java +134 -0
- data/ApiDemos/src/com/example/android/apis/appwidget/ExampleAppWidgetProvider.java +122 -0
- data/ApiDemos/src/com/example/android/apis/appwidget/ExampleBroadcastReceiver.java +56 -0
- data/ApiDemos/src/com/example/android/apis/content/ClipboardSample.java +144 -0
- data/ApiDemos/src/com/example/android/apis/content/ExternalStorage.java +376 -0
- data/ApiDemos/src/com/example/android/apis/content/FileProvider.java +115 -0
- data/ApiDemos/src/com/example/android/apis/content/InstallApk.java +179 -0
- data/ApiDemos/src/com/example/android/apis/content/PickContact.java +114 -0
- data/ApiDemos/src/com/example/android/apis/content/ReadAsset.java +73 -0
- data/ApiDemos/src/com/example/android/apis/content/ResourcesLayoutReference.java +33 -0
- data/ApiDemos/src/com/example/android/apis/content/ResourcesSample.java +90 -0
- data/ApiDemos/src/com/example/android/apis/content/ResourcesSmallestWidth.java +33 -0
- data/ApiDemos/src/com/example/android/apis/content/ResourcesWidthAndHeight.java +33 -0
- data/ApiDemos/src/com/example/android/apis/content/StyledText.java +51 -0
- data/ApiDemos/src/com/example/android/apis/graphics/AlphaBitmap.java +91 -0
- data/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawable.java +72 -0
- data/ApiDemos/src/com/example/android/apis/graphics/AnimateDrawables.java +67 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Arcs.java +118 -0
- data/ApiDemos/src/com/example/android/apis/graphics/BitmapDecode.java +144 -0
- data/ApiDemos/src/com/example/android/apis/graphics/BitmapMesh.java +130 -0
- data/ApiDemos/src/com/example/android/apis/graphics/BitmapPixels.java +161 -0
- data/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.java +311 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Clipping.java +111 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ColorFilters.java +180 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ColorMatrixSample.java +122 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ColorPickerDialog.java +233 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Compass.java +130 -0
- data/ApiDemos/src/com/example/android/apis/graphics/CompressedTextureActivity.java +157 -0
- data/ApiDemos/src/com/example/android/apis/graphics/CreateBitmap.java +126 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Cube.java +100 -0
- data/ApiDemos/src/com/example/android/apis/graphics/CubeMapActivity.java +416 -0
- data/ApiDemos/src/com/example/android/apis/graphics/CubeRenderer.java +108 -0
- data/ApiDemos/src/com/example/android/apis/graphics/DensityActivity.java +220 -0
- data/ApiDemos/src/com/example/android/apis/graphics/DrawPoints.java +79 -0
- data/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.java +208 -0
- data/ApiDemos/src/com/example/android/apis/graphics/FrameBufferObjectActivity.java +282 -0
- data/ApiDemos/src/com/example/android/apis/graphics/GLES20Activity.java +72 -0
- data/ApiDemos/src/com/example/android/apis/graphics/GLES20TriangleRenderer.java +255 -0
- data/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.java +56 -0
- data/ApiDemos/src/com/example/android/apis/graphics/GradientDrawable1.java +31 -0
- data/ApiDemos/src/com/example/android/apis/graphics/GraphicsActivity.java +43 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Layers.java +65 -0
- data/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteActivity.java +52 -0
- data/ApiDemos/src/com/example/android/apis/graphics/MatrixPaletteRenderer.java +408 -0
- data/ApiDemos/src/com/example/android/apis/graphics/MeasureText.java +112 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PathEffects.java +121 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PathFillTypes.java +77 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Patterns.java +125 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PictureLayout.java +161 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Pictures.java +81 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PolyToPoly.java +107 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ProxyDrawable.java +102 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmap.java +118 -0
- data/ApiDemos/src/com/example/android/apis/graphics/PurgeableBitmapView.java +116 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Regions.java +126 -0
- data/ApiDemos/src/com/example/android/apis/graphics/RoundRects.java +113 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ScaleToFit.java +121 -0
- data/ApiDemos/src/com/example/android/apis/graphics/SensorTest.java +213 -0
- data/ApiDemos/src/com/example/android/apis/graphics/ShapeDrawable1.java +136 -0
- data/ApiDemos/src/com/example/android/apis/graphics/StaticTriangleRenderer.java +274 -0
- data/ApiDemos/src/com/example/android/apis/graphics/SurfaceViewOverlay.java +116 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Sweep.java +97 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TextAlign.java +161 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TouchPaint.java +528 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TouchRotateActivity.java +184 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TranslucentGLSurfaceViewActivity.java +63 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TriangleActivity.java +49 -0
- data/ApiDemos/src/com/example/android/apis/graphics/TriangleRenderer.java +241 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Typefaces.java +55 -0
- data/ApiDemos/src/com/example/android/apis/graphics/UnicodeChart.java +119 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Vertices.java +103 -0
- data/ApiDemos/src/com/example/android/apis/graphics/WindowSurface.java +271 -0
- data/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.java +171 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/Cube.java +57 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/GLColor.java +51 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/GLFace.java +94 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/GLShape.java +102 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/GLVertex.java +89 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/GLWorld.java +98 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/Kube.java +342 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/KubeRenderer.java +116 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/Layer.java +101 -0
- data/ApiDemos/src/com/example/android/apis/graphics/kube/M4.java +80 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/Grid.java +140 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/LabelMaker.java +411 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixGrabber.java +63 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixStack.java +179 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/MatrixTrackingGL.java +1086 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/NumericSprite.java +99 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/Projector.java +84 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextActivity.java +52 -0
- data/ApiDemos/src/com/example/android/apis/graphics/spritetext/SpriteTextRenderer.java +354 -0
- data/ApiDemos/src/com/example/android/apis/media/AudioFxDemo.java +252 -0
- data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo.java +102 -0
- data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Audio.java +102 -0
- data/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.java +219 -0
- data/ApiDemos/src/com/example/android/apis/media/VideoViewDemo.java +61 -0
- data/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.java +93 -0
- data/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.java +86 -0
- data/ApiDemos/src/com/example/android/apis/nfc/TechFilter.java +51 -0
- data/ApiDemos/src/com/example/android/apis/os/MorseCode.java +93 -0
- data/ApiDemos/src/com/example/android/apis/os/MorseCodeConverter.java +141 -0
- data/ApiDemos/src/com/example/android/apis/os/RotationVectorDemo.java +216 -0
- data/ApiDemos/src/com/example/android/apis/os/Sensors.java +241 -0
- data/ApiDemos/src/com/example/android/apis/os/SmsMessageReceiver.java +78 -0
- data/ApiDemos/src/com/example/android/apis/os/SmsMessagingDemo.java +159 -0
- data/ApiDemos/src/com/example/android/apis/os/SmsReceivedDialog.java +115 -0
- data/ApiDemos/src/com/example/android/apis/preference/AdvancedPreferences.java +94 -0
- data/ApiDemos/src/com/example/android/apis/preference/DefaultValues.java +61 -0
- data/ApiDemos/src/com/example/android/apis/preference/FragmentPreferences.java +52 -0
- data/ApiDemos/src/com/example/android/apis/preference/LaunchingPreferences.java +100 -0
- data/ApiDemos/src/com/example/android/apis/preference/MyPreference.java +171 -0
- data/ApiDemos/src/com/example/android/apis/preference/PreferenceDependencies.java +33 -0
- data/ApiDemos/src/com/example/android/apis/preference/PreferenceWithHeaders.java +108 -0
- data/ApiDemos/src/com/example/android/apis/preference/PreferencesFromCode.java +151 -0
- data/ApiDemos/src/com/example/android/apis/preference/PreferencesFromXml.java +34 -0
- data/ApiDemos/src/com/example/android/apis/preference/SwitchPreference.java +38 -0
- data/ApiDemos/src/com/example/android/apis/text/Link.java +84 -0
- data/ApiDemos/src/com/example/android/apis/text/LogTextBox.java +64 -0
- data/ApiDemos/src/com/example/android/apis/text/LogTextBox1.java +50 -0
- data/ApiDemos/src/com/example/android/apis/text/Marquee.java +31 -0
- data/ApiDemos/src/com/example/android/apis/view/Animation1.java +45 -0
- data/ApiDemos/src/com/example/android/apis/view/Animation2.java +90 -0
- data/ApiDemos/src/com/example/android/apis/view/Animation3.java +101 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete1.java +82 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete2.java +41 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete3.java +43 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete4.java +103 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete5.java +44 -0
- data/ApiDemos/src/com/example/android/apis/view/AutoComplete6.java +83 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline1.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline2.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline3.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline4.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline6.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/Baseline7.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/BaselineNested1.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/BaselineNested2.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/BaselineNested3.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/Buttons1.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/CheckableFrameLayout.java +49 -0
- data/ApiDemos/src/com/example/android/apis/view/Cheeses.java +155 -0
- data/ApiDemos/src/com/example/android/apis/view/ChronometerDemo.java +90 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls1.java +54 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls2.java +19 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls3.java +19 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls4.java +19 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls5.java +19 -0
- data/ApiDemos/src/com/example/android/apis/view/Controls6.java +19 -0
- data/ApiDemos/src/com/example/android/apis/view/CustomView1.java +40 -0
- data/ApiDemos/src/com/example/android/apis/view/DateWidgets1.java +156 -0
- data/ApiDemos/src/com/example/android/apis/view/DateWidgets2.java +68 -0
- data/ApiDemos/src/com/example/android/apis/view/DragAndDropDemo.java +72 -0
- data/ApiDemos/src/com/example/android/apis/view/DraggableDot.java +261 -0
- data/ApiDemos/src/com/example/android/apis/view/ExpandableList1.java +160 -0
- data/ApiDemos/src/com/example/android/apis/view/ExpandableList2.java +138 -0
- data/ApiDemos/src/com/example/android/apis/view/ExpandableList3.java +76 -0
- data/ApiDemos/src/com/example/android/apis/view/Focus1.java +47 -0
- data/ApiDemos/src/com/example/android/apis/view/Focus2.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/Focus3.java +45 -0
- data/ApiDemos/src/com/example/android/apis/view/Focus5.java +31 -0
- data/ApiDemos/src/com/example/android/apis/view/Gallery1.java +139 -0
- data/ApiDemos/src/com/example/android/apis/view/Gallery2.java +61 -0
- data/ApiDemos/src/com/example/android/apis/view/GameControllerInput.java +467 -0
- data/ApiDemos/src/com/example/android/apis/view/GameView.java +747 -0
- data/ApiDemos/src/com/example/android/apis/view/Grid1.java +95 -0
- data/ApiDemos/src/com/example/android/apis/view/Grid2.java +166 -0
- data/ApiDemos/src/com/example/android/apis/view/Grid3.java +164 -0
- data/ApiDemos/src/com/example/android/apis/view/GridLayout0.java +113 -0
- data/ApiDemos/src/com/example/android/apis/view/GridLayout1.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/HorizontalScrollView1.java +33 -0
- data/ApiDemos/src/com/example/android/apis/view/Hover.java +106 -0
- data/ApiDemos/src/com/example/android/apis/view/HoverInterceptorView.java +71 -0
- data/ApiDemos/src/com/example/android/apis/view/ImageButton1.java +33 -0
- data/ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.java +120 -0
- data/ApiDemos/src/com/example/android/apis/view/ImageView1.java +36 -0
- data/ApiDemos/src/com/example/android/apis/view/InternalSelectionFocus.java +74 -0
- data/ApiDemos/src/com/example/android/apis/view/InternalSelectionScroll.java +64 -0
- data/ApiDemos/src/com/example/android/apis/view/InternalSelectionView.java +272 -0
- data/ApiDemos/src/com/example/android/apis/view/LabelView.java +194 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation1.java +81 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation2.java +64 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation3.java +44 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation4.java +81 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation5.java +81 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation6.java +81 -0
- data/ApiDemos/src/com/example/android/apis/view/LayoutAnimation7.java +31 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout1.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout10.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout2.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout3.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout4.java +38 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout5.java +38 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout6.java +38 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout7.java +38 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout8.java +106 -0
- data/ApiDemos/src/com/example/android/apis/view/LinearLayout9.java +41 -0
- data/ApiDemos/src/com/example/android/apis/view/List1.java +42 -0
- data/ApiDemos/src/com/example/android/apis/view/List10.java +49 -0
- data/ApiDemos/src/com/example/android/apis/view/List11.java +49 -0
- data/ApiDemos/src/com/example/android/apis/view/List12.java +83 -0
- data/ApiDemos/src/com/example/android/apis/view/List13.java +341 -0
- data/ApiDemos/src/com/example/android/apis/view/List14.java +141 -0
- data/ApiDemos/src/com/example/android/apis/view/List15.java +104 -0
- data/ApiDemos/src/com/example/android/apis/view/List16.java +100 -0
- data/ApiDemos/src/com/example/android/apis/view/List17.java +57 -0
- data/ApiDemos/src/com/example/android/apis/view/List2.java +57 -0
- data/ApiDemos/src/com/example/android/apis/view/List3.java +84 -0
- data/ApiDemos/src/com/example/android/apis/view/List4.java +154 -0
- data/ApiDemos/src/com/example/android/apis/view/List5.java +118 -0
- data/ApiDemos/src/com/example/android/apis/view/List6.java +410 -0
- data/ApiDemos/src/com/example/android/apis/view/List7.java +99 -0
- data/ApiDemos/src/com/example/android/apis/view/List8.java +133 -0
- data/ApiDemos/src/com/example/android/apis/view/List9.java +144 -0
- data/ApiDemos/src/com/example/android/apis/view/OverscanActivity.java +184 -0
- data/ApiDemos/src/com/example/android/apis/view/PopupMenu1.java +53 -0
- data/ApiDemos/src/com/example/android/apis/view/ProgressBar1.java +84 -0
- data/ApiDemos/src/com/example/android/apis/view/ProgressBar2.java +44 -0
- data/ApiDemos/src/com/example/android/apis/view/ProgressBar3.java +84 -0
- data/ApiDemos/src/com/example/android/apis/view/ProgressBar4.java +51 -0
- data/ApiDemos/src/com/example/android/apis/view/RadioGroup1.java +74 -0
- data/ApiDemos/src/com/example/android/apis/view/RatingBar1.java +74 -0
- data/ApiDemos/src/com/example/android/apis/view/RelativeLayout1.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/RelativeLayout2.java +38 -0
- data/ApiDemos/src/com/example/android/apis/view/RotatingButton.java +152 -0
- data/ApiDemos/src/com/example/android/apis/view/ScrollBar1.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/ScrollBar2.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/ScrollBar3.java +35 -0
- data/ApiDemos/src/com/example/android/apis/view/ScrollView1.java +37 -0
- data/ApiDemos/src/com/example/android/apis/view/ScrollView2.java +52 -0
- data/ApiDemos/src/com/example/android/apis/view/SearchViewActionBar.java +115 -0
- data/ApiDemos/src/com/example/android/apis/view/SearchViewAlwaysVisible.java +46 -0
- data/ApiDemos/src/com/example/android/apis/view/SearchViewFilterMode.java +78 -0
- data/ApiDemos/src/com/example/android/apis/view/SecureView.java +144 -0
- data/ApiDemos/src/com/example/android/apis/view/SecureViewOverlay.java +74 -0
- data/ApiDemos/src/com/example/android/apis/view/SeekBar1.java +60 -0
- data/ApiDemos/src/com/example/android/apis/view/Spinner1.java +78 -0
- data/ApiDemos/src/com/example/android/apis/view/SplitTouchView.java +66 -0
- data/ApiDemos/src/com/example/android/apis/view/Switches.java +48 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout1.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout10.java +31 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout11.java +34 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout12.java +34 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout2.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout3.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout4.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout5.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout6.java +32 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout7.java +80 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout8.java +71 -0
- data/ApiDemos/src/com/example/android/apis/view/TableLayout9.java +48 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs1.java +50 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs2.java +57 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs3.java +50 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs4.java +23 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs5.java +54 -0
- data/ApiDemos/src/com/example/android/apis/view/Tabs6.java +55 -0
- data/ApiDemos/src/com/example/android/apis/view/TextSwitcher1.java +79 -0
- data/ApiDemos/src/com/example/android/apis/view/Visibility1.java +74 -0
- data/ApiDemos/src/com/example/android/apis/view/WebView1.java +71 -0
- data/ApiDemos/tests/AndroidManifest.xml +37 -0
- data/ApiDemos/tests/ant.properties +18 -0
- data/ApiDemos/tests/build.xml +83 -0
- data/ApiDemos/tests/local.properties +10 -0
- data/ApiDemos/tests/proguard-project.txt +20 -0
- data/ApiDemos/tests/project.properties +14 -0
- data/ApiDemos/tests/src/com/example/android/apis/AllTests.java +53 -0
- data/ApiDemos/tests/src/com/example/android/apis/ApiDemosApplicationTests.java +62 -0
- data/ApiDemos/tests/src/com/example/android/apis/ApiDemosTest.java +40 -0
- data/ApiDemos/tests/src/com/example/android/apis/app/ForwardingTest.java +129 -0
- data/ApiDemos/tests/src/com/example/android/apis/app/LocalServiceTest.java +80 -0
- data/ApiDemos/tests/src/com/example/android/apis/os/MorseCodeConverterTest.java +54 -0
- data/ApiDemos/tests/src/com/example/android/apis/view/Focus2ActivityTest.java +111 -0
- data/ApiDemos/tests/src/com/example/android/apis/view/Focus2AndroidTest.java +113 -0
- data/ChangeLog +2 -0
- data/Gemfile +12 -0
- data/Guardfile +17 -0
- data/LICENSE +22 -0
- data/README.md +59 -0
- data/Rakefile +24 -0
- data/cucumber.yml +6 -0
- data/features/button.feature +16 -0
- data/features/checkbox.feature +9 -0
- data/features/list_item.feature +13 -0
- data/features/main_screen.feature +18 -0
- data/features/radio_button.feature +6 -0
- data/features/step_definitions/button_steps.rb +22 -0
- data/features/step_definitions/calabash_steps.rb +1 -0
- data/features/step_definitions/checkbox_steps.rb +3 -0
- data/features/step_definitions/controls_steps.rb +19 -0
- data/features/step_definitions/list_item_steps.rb +7 -0
- data/features/step_definitions/main_screen_steps.rb +22 -0
- data/features/step_definitions/radio_button_steps.rb +3 -0
- data/features/support/app_installation_hooks.rb +31 -0
- data/features/support/app_life_cycle_hooks.rb +28 -0
- data/features/support/env.rb +8 -0
- data/features/support/hooks.rb +18 -0
- data/features/support/screens/buttons_screen.rb +9 -0
- data/features/support/screens/controls_menu_screen.rb +8 -0
- data/features/support/screens/controls_screen.rb +11 -0
- data/features/support/screens/main_menu_screen.rb +15 -0
- data/features/support/screens/views_menu_screen.rb +40 -0
- data/features/text.feature +7 -0
- data/gametel.gemspec +23 -0
- data/irb_android.sh +2 -0
- data/lib/gametel.rb +55 -0
- data/lib/gametel/accessors.rb +98 -0
- data/lib/gametel/navigation.rb +9 -0
- data/lib/gametel/platforms/calabash.rb +89 -0
- data/lib/gametel/version.rb +3 -0
- data/spec/lib/gametel/accessors_spec.rb +67 -0
- data/spec/lib/gametel_spec.rb +44 -0
- data/spec/spec_helper.rb +19 -0
- metadata +1043 -0
|
@@ -0,0 +1,76 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import android.app.ExpandableListActivity;
|
|
20
|
+
import android.os.Bundle;
|
|
21
|
+
import android.widget.ExpandableListAdapter;
|
|
22
|
+
import android.widget.SimpleExpandableListAdapter;
|
|
23
|
+
|
|
24
|
+
import java.util.ArrayList;
|
|
25
|
+
import java.util.HashMap;
|
|
26
|
+
import java.util.List;
|
|
27
|
+
import java.util.Map;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Demonstrates expandable lists backed by a Simple Map-based adapter
|
|
32
|
+
*/
|
|
33
|
+
public class ExpandableList3 extends ExpandableListActivity {
|
|
34
|
+
private static final String NAME = "NAME";
|
|
35
|
+
private static final String IS_EVEN = "IS_EVEN";
|
|
36
|
+
|
|
37
|
+
private ExpandableListAdapter mAdapter;
|
|
38
|
+
|
|
39
|
+
@Override
|
|
40
|
+
public void onCreate(Bundle savedInstanceState) {
|
|
41
|
+
super.onCreate(savedInstanceState);
|
|
42
|
+
|
|
43
|
+
List<Map<String, String>> groupData = new ArrayList<Map<String, String>>();
|
|
44
|
+
List<List<Map<String, String>>> childData = new ArrayList<List<Map<String, String>>>();
|
|
45
|
+
for (int i = 0; i < 20; i++) {
|
|
46
|
+
Map<String, String> curGroupMap = new HashMap<String, String>();
|
|
47
|
+
groupData.add(curGroupMap);
|
|
48
|
+
curGroupMap.put(NAME, "Group " + i);
|
|
49
|
+
curGroupMap.put(IS_EVEN, (i % 2 == 0) ? "This group is even" : "This group is odd");
|
|
50
|
+
|
|
51
|
+
List<Map<String, String>> children = new ArrayList<Map<String, String>>();
|
|
52
|
+
for (int j = 0; j < 15; j++) {
|
|
53
|
+
Map<String, String> curChildMap = new HashMap<String, String>();
|
|
54
|
+
children.add(curChildMap);
|
|
55
|
+
curChildMap.put(NAME, "Child " + j);
|
|
56
|
+
curChildMap.put(IS_EVEN, (j % 2 == 0) ? "This child is even" : "This child is odd");
|
|
57
|
+
}
|
|
58
|
+
childData.add(children);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Set up our adapter
|
|
62
|
+
mAdapter = new SimpleExpandableListAdapter(
|
|
63
|
+
this,
|
|
64
|
+
groupData,
|
|
65
|
+
android.R.layout.simple_expandable_list_item_1,
|
|
66
|
+
new String[] { NAME, IS_EVEN },
|
|
67
|
+
new int[] { android.R.id.text1, android.R.id.text2 },
|
|
68
|
+
childData,
|
|
69
|
+
android.R.layout.simple_expandable_list_item_2,
|
|
70
|
+
new String[] { NAME, IS_EVEN },
|
|
71
|
+
new int[] { android.R.id.text1, android.R.id.text2 }
|
|
72
|
+
);
|
|
73
|
+
setListAdapter(mAdapter);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import com.example.android.apis.R;
|
|
20
|
+
|
|
21
|
+
import android.app.Activity;
|
|
22
|
+
import android.os.Bundle;
|
|
23
|
+
import android.webkit.WebView;
|
|
24
|
+
import android.widget.ListView;
|
|
25
|
+
import android.widget.ArrayAdapter;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Demonstrates the use of non-focusable views.
|
|
29
|
+
*/
|
|
30
|
+
public class Focus1 extends Activity {
|
|
31
|
+
|
|
32
|
+
@Override
|
|
33
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
34
|
+
super.onCreate(savedInstanceState);
|
|
35
|
+
setContentView(R.layout.focus_1);
|
|
36
|
+
|
|
37
|
+
WebView webView = (WebView) findViewById(R.id.rssWebView);
|
|
38
|
+
webView.loadData(
|
|
39
|
+
"<html><body>Can I focus?<br /><a href=\"#\">No I cannot!</a>.</body></html>",
|
|
40
|
+
"text/html", null);
|
|
41
|
+
|
|
42
|
+
ListView listView = (ListView) findViewById(R.id.rssListView);
|
|
43
|
+
listView.setAdapter(new ArrayAdapter<String>(this,
|
|
44
|
+
android.R.layout.simple_list_item_1,
|
|
45
|
+
new String[] {"Ars Technica", "Slashdot", "GameKult"}));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import com.example.android.apis.R;
|
|
20
|
+
|
|
21
|
+
import android.app.Activity;
|
|
22
|
+
import android.os.Bundle;
|
|
23
|
+
|
|
24
|
+
public class Focus2 extends Activity {
|
|
25
|
+
|
|
26
|
+
@Override
|
|
27
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
28
|
+
super.onCreate(savedInstanceState);
|
|
29
|
+
|
|
30
|
+
setContentView(R.layout.focus_2);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import android.app.Activity;
|
|
20
|
+
import android.os.Bundle;
|
|
21
|
+
import android.widget.Button;
|
|
22
|
+
import com.example.android.apis.R;
|
|
23
|
+
|
|
24
|
+
public class Focus3 extends Activity {
|
|
25
|
+
private Button mTopButton;
|
|
26
|
+
private Button mBottomButton;
|
|
27
|
+
|
|
28
|
+
@Override
|
|
29
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
30
|
+
super.onCreate(savedInstanceState);
|
|
31
|
+
|
|
32
|
+
setContentView(R.layout.focus_3);
|
|
33
|
+
|
|
34
|
+
mTopButton = (Button) findViewById(R.id.top);
|
|
35
|
+
mBottomButton = (Button) findViewById(R.id.bottom);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public Button getTopButton() {
|
|
39
|
+
return mTopButton;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public Button getBottomButton() {
|
|
43
|
+
return mBottomButton;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import android.app.Activity;
|
|
20
|
+
import android.os.Bundle;
|
|
21
|
+
import android.widget.Button;
|
|
22
|
+
import com.example.android.apis.R;
|
|
23
|
+
|
|
24
|
+
public class Focus5 extends Activity {
|
|
25
|
+
@Override
|
|
26
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
27
|
+
super.onCreate(savedInstanceState);
|
|
28
|
+
|
|
29
|
+
setContentView(R.layout.focus_5);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import com.example.android.apis.R;
|
|
20
|
+
|
|
21
|
+
import android.app.Activity;
|
|
22
|
+
import android.content.Context;
|
|
23
|
+
import android.content.res.TypedArray;
|
|
24
|
+
import android.os.Bundle;
|
|
25
|
+
import android.view.ContextMenu;
|
|
26
|
+
import android.view.MenuItem;
|
|
27
|
+
import android.view.View;
|
|
28
|
+
import android.view.ViewGroup;
|
|
29
|
+
import android.view.ContextMenu.ContextMenuInfo;
|
|
30
|
+
import android.widget.AdapterView;
|
|
31
|
+
import android.widget.BaseAdapter;
|
|
32
|
+
import android.widget.Gallery;
|
|
33
|
+
import android.widget.ImageView;
|
|
34
|
+
import android.widget.Toast;
|
|
35
|
+
import android.widget.AdapterView.AdapterContextMenuInfo;
|
|
36
|
+
import android.widget.AdapterView.OnItemClickListener;
|
|
37
|
+
|
|
38
|
+
public class Gallery1 extends Activity {
|
|
39
|
+
|
|
40
|
+
@Override
|
|
41
|
+
public void onCreate(Bundle savedInstanceState) {
|
|
42
|
+
super.onCreate(savedInstanceState);
|
|
43
|
+
setContentView(R.layout.gallery_1);
|
|
44
|
+
|
|
45
|
+
// Reference the Gallery view
|
|
46
|
+
Gallery g = (Gallery) findViewById(R.id.gallery);
|
|
47
|
+
// Set the adapter to our custom adapter (below)
|
|
48
|
+
g.setAdapter(new ImageAdapter(this));
|
|
49
|
+
|
|
50
|
+
// Set a item click listener, and just Toast the clicked position
|
|
51
|
+
g.setOnItemClickListener(new OnItemClickListener() {
|
|
52
|
+
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
|
|
53
|
+
Toast.makeText(Gallery1.this, "" + position, Toast.LENGTH_SHORT).show();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// We also want to show context menu for longpressed items in the gallery
|
|
58
|
+
registerForContextMenu(g);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
@Override
|
|
62
|
+
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
|
|
63
|
+
menu.add(R.string.gallery_2_text);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@Override
|
|
67
|
+
public boolean onContextItemSelected(MenuItem item) {
|
|
68
|
+
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
|
|
69
|
+
Toast.makeText(this, "Longpress: " + info.position, Toast.LENGTH_SHORT).show();
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public class ImageAdapter extends BaseAdapter {
|
|
74
|
+
private static final int ITEM_WIDTH = 136;
|
|
75
|
+
private static final int ITEM_HEIGHT = 88;
|
|
76
|
+
|
|
77
|
+
private final int mGalleryItemBackground;
|
|
78
|
+
private final Context mContext;
|
|
79
|
+
|
|
80
|
+
private final Integer[] mImageIds = {
|
|
81
|
+
R.drawable.gallery_photo_1,
|
|
82
|
+
R.drawable.gallery_photo_2,
|
|
83
|
+
R.drawable.gallery_photo_3,
|
|
84
|
+
R.drawable.gallery_photo_4,
|
|
85
|
+
R.drawable.gallery_photo_5,
|
|
86
|
+
R.drawable.gallery_photo_6,
|
|
87
|
+
R.drawable.gallery_photo_7,
|
|
88
|
+
R.drawable.gallery_photo_8
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
private final float mDensity;
|
|
92
|
+
|
|
93
|
+
public ImageAdapter(Context c) {
|
|
94
|
+
mContext = c;
|
|
95
|
+
// See res/values/attrs.xml for the <declare-styleable> that defines
|
|
96
|
+
// Gallery1.
|
|
97
|
+
TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);
|
|
98
|
+
mGalleryItemBackground = a.getResourceId(
|
|
99
|
+
R.styleable.Gallery1_android_galleryItemBackground, 0);
|
|
100
|
+
a.recycle();
|
|
101
|
+
|
|
102
|
+
mDensity = c.getResources().getDisplayMetrics().density;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
public int getCount() {
|
|
106
|
+
return mImageIds.length;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public Object getItem(int position) {
|
|
110
|
+
return position;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public long getItemId(int position) {
|
|
114
|
+
return position;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
public View getView(int position, View convertView, ViewGroup parent) {
|
|
118
|
+
ImageView imageView;
|
|
119
|
+
if (convertView == null) {
|
|
120
|
+
convertView = new ImageView(mContext);
|
|
121
|
+
|
|
122
|
+
imageView = (ImageView) convertView;
|
|
123
|
+
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
|
|
124
|
+
imageView.setLayoutParams(new Gallery.LayoutParams(
|
|
125
|
+
(int) (ITEM_WIDTH * mDensity + 0.5f),
|
|
126
|
+
(int) (ITEM_HEIGHT * mDensity + 0.5f)));
|
|
127
|
+
|
|
128
|
+
// The preferred Gallery item background
|
|
129
|
+
imageView.setBackgroundResource(mGalleryItemBackground);
|
|
130
|
+
} else {
|
|
131
|
+
imageView = (ImageView) convertView;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
imageView.setImageResource(mImageIds[position]);
|
|
135
|
+
|
|
136
|
+
return imageView;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import android.app.Activity;
|
|
20
|
+
import android.database.Cursor;
|
|
21
|
+
import android.provider.ContactsContract.Contacts;
|
|
22
|
+
import android.os.Bundle;
|
|
23
|
+
import android.widget.Gallery;
|
|
24
|
+
import android.widget.SimpleCursorAdapter;
|
|
25
|
+
import android.widget.SpinnerAdapter;
|
|
26
|
+
|
|
27
|
+
// Need the following import to get access to the app resources, since this
|
|
28
|
+
// class is in a sub-package.
|
|
29
|
+
import com.example.android.apis.R;
|
|
30
|
+
|
|
31
|
+
public class Gallery2 extends Activity {
|
|
32
|
+
|
|
33
|
+
@Override
|
|
34
|
+
public void onCreate(Bundle savedInstanceState) {
|
|
35
|
+
super.onCreate(savedInstanceState);
|
|
36
|
+
setContentView(R.layout.gallery_2);
|
|
37
|
+
|
|
38
|
+
// Get a cursor with all people
|
|
39
|
+
Cursor c = getContentResolver().query(Contacts.CONTENT_URI,
|
|
40
|
+
CONTACT_PROJECTION, null, null, null);
|
|
41
|
+
startManagingCursor(c);
|
|
42
|
+
|
|
43
|
+
SpinnerAdapter adapter = new SimpleCursorAdapter(this,
|
|
44
|
+
// Use a template that displays a text view
|
|
45
|
+
android.R.layout.simple_gallery_item,
|
|
46
|
+
// Give the cursor to the list adatper
|
|
47
|
+
c,
|
|
48
|
+
// Map the NAME column in the people database to...
|
|
49
|
+
new String[] {Contacts.DISPLAY_NAME},
|
|
50
|
+
// The "text1" view defined in the XML template
|
|
51
|
+
new int[] { android.R.id.text1 });
|
|
52
|
+
|
|
53
|
+
Gallery g = (Gallery) findViewById(R.id.gallery);
|
|
54
|
+
g.setAdapter(adapter);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
private static final String[] CONTACT_PROJECTION = new String[] {
|
|
58
|
+
Contacts._ID,
|
|
59
|
+
Contacts.DISPLAY_NAME
|
|
60
|
+
};
|
|
61
|
+
}
|
|
@@ -0,0 +1,467 @@
|
|
|
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.view;
|
|
18
|
+
|
|
19
|
+
import com.example.android.apis.R;
|
|
20
|
+
|
|
21
|
+
import android.app.Activity;
|
|
22
|
+
import android.content.Context;
|
|
23
|
+
import android.content.res.Resources;
|
|
24
|
+
import android.os.Bundle;
|
|
25
|
+
import android.util.AttributeSet;
|
|
26
|
+
import android.util.Log;
|
|
27
|
+
import android.util.SparseArray;
|
|
28
|
+
import android.util.SparseIntArray;
|
|
29
|
+
import android.view.InputDevice;
|
|
30
|
+
import android.view.InputEvent;
|
|
31
|
+
import android.view.KeyEvent;
|
|
32
|
+
import android.view.LayoutInflater;
|
|
33
|
+
import android.view.MotionEvent;
|
|
34
|
+
import android.view.View;
|
|
35
|
+
import android.view.ViewGroup;
|
|
36
|
+
import android.view.InputDevice.MotionRange;
|
|
37
|
+
import android.widget.AdapterView;
|
|
38
|
+
import android.widget.BaseAdapter;
|
|
39
|
+
import android.widget.ListView;
|
|
40
|
+
import android.widget.TextView;
|
|
41
|
+
import android.widget.Toast;
|
|
42
|
+
|
|
43
|
+
import java.util.ArrayList;
|
|
44
|
+
import java.util.List;
|
|
45
|
+
import java.util.concurrent.atomic.AtomicLong;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Demonstrates how to process input events received from game controllers.
|
|
50
|
+
*
|
|
51
|
+
* This activity displays button states and joystick positions.
|
|
52
|
+
* Also writes detailed information about relevant input events to the log.
|
|
53
|
+
*
|
|
54
|
+
* The game controller is also uses to control a very simple game. See {@link GameView}
|
|
55
|
+
* for the game itself.
|
|
56
|
+
*/
|
|
57
|
+
public class GameControllerInput extends Activity {
|
|
58
|
+
private static final String TAG = "GameControllerInput";
|
|
59
|
+
|
|
60
|
+
private SparseArray<InputDeviceState> mInputDeviceStates;
|
|
61
|
+
private GameView mGame;
|
|
62
|
+
private ListView mSummaryList;
|
|
63
|
+
private SummaryAdapter mSummaryAdapter;
|
|
64
|
+
|
|
65
|
+
@Override
|
|
66
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
67
|
+
super.onCreate(savedInstanceState);
|
|
68
|
+
|
|
69
|
+
mInputDeviceStates = new SparseArray<InputDeviceState>();
|
|
70
|
+
mSummaryAdapter = new SummaryAdapter(this, getResources());
|
|
71
|
+
|
|
72
|
+
setContentView(R.layout.game_controller_input);
|
|
73
|
+
|
|
74
|
+
mGame = (GameView) findViewById(R.id.game);
|
|
75
|
+
|
|
76
|
+
mSummaryList = (ListView) findViewById(R.id.summary);
|
|
77
|
+
mSummaryList.setAdapter(mSummaryAdapter);
|
|
78
|
+
mSummaryList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
79
|
+
@Override
|
|
80
|
+
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
|
|
81
|
+
mSummaryAdapter.onItemClick(position);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@Override
|
|
87
|
+
public void onWindowFocusChanged(boolean hasFocus) {
|
|
88
|
+
super.onWindowFocusChanged(hasFocus);
|
|
89
|
+
|
|
90
|
+
mGame.requestFocus();
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
@Override
|
|
94
|
+
public boolean dispatchKeyEvent(KeyEvent event) {
|
|
95
|
+
// Update device state for visualization and logging.
|
|
96
|
+
InputDeviceState state = getInputDeviceState(event);
|
|
97
|
+
if (state != null) {
|
|
98
|
+
switch (event.getAction()) {
|
|
99
|
+
case KeyEvent.ACTION_DOWN:
|
|
100
|
+
if (state.onKeyDown(event)) {
|
|
101
|
+
mSummaryAdapter.show(state);
|
|
102
|
+
}
|
|
103
|
+
break;
|
|
104
|
+
case KeyEvent.ACTION_UP:
|
|
105
|
+
if (state.onKeyUp(event)) {
|
|
106
|
+
mSummaryAdapter.show(state);
|
|
107
|
+
}
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return super.dispatchKeyEvent(event);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@Override
|
|
115
|
+
public boolean dispatchGenericMotionEvent(MotionEvent event) {
|
|
116
|
+
// Check that the event came from a joystick since a generic motion event
|
|
117
|
+
// could be almost anything.
|
|
118
|
+
if ((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0
|
|
119
|
+
&& event.getAction() == MotionEvent.ACTION_MOVE) {
|
|
120
|
+
// Update device state for visualization and logging.
|
|
121
|
+
InputDeviceState state = getInputDeviceState(event);
|
|
122
|
+
if (state != null && state.onJoystickMotion(event)) {
|
|
123
|
+
mSummaryAdapter.show(state);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return super.dispatchGenericMotionEvent(event);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
private InputDeviceState getInputDeviceState(InputEvent event) {
|
|
130
|
+
final int deviceId = event.getDeviceId();
|
|
131
|
+
InputDeviceState state = mInputDeviceStates.get(deviceId);
|
|
132
|
+
if (state == null) {
|
|
133
|
+
final InputDevice device = event.getDevice();
|
|
134
|
+
if (device == null) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
state = new InputDeviceState(device);
|
|
138
|
+
mInputDeviceStates.put(deviceId, state);
|
|
139
|
+
|
|
140
|
+
Log.i(TAG, device.toString());
|
|
141
|
+
}
|
|
142
|
+
return state;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Tracks the state of joystick axes and game controller buttons for a particular
|
|
147
|
+
* input device for diagnostic purposes.
|
|
148
|
+
*/
|
|
149
|
+
private static class InputDeviceState {
|
|
150
|
+
private final InputDevice mDevice;
|
|
151
|
+
private final int[] mAxes;
|
|
152
|
+
private final float[] mAxisValues;
|
|
153
|
+
private final SparseIntArray mKeys;
|
|
154
|
+
|
|
155
|
+
public InputDeviceState(InputDevice device) {
|
|
156
|
+
mDevice = device;
|
|
157
|
+
|
|
158
|
+
int numAxes = 0;
|
|
159
|
+
final List<MotionRange> ranges = device.getMotionRanges();
|
|
160
|
+
for (MotionRange range : ranges) {
|
|
161
|
+
if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
|
|
162
|
+
numAxes += 1;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
mAxes = new int[numAxes];
|
|
167
|
+
mAxisValues = new float[numAxes];
|
|
168
|
+
int i = 0;
|
|
169
|
+
for (MotionRange range : ranges) {
|
|
170
|
+
if ((range.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) != 0) {
|
|
171
|
+
mAxes[i++] = range.getAxis();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
mKeys = new SparseIntArray();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
public InputDevice getDevice() {
|
|
179
|
+
return mDevice;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
public int getAxisCount() {
|
|
183
|
+
return mAxes.length;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
public int getAxis(int axisIndex) {
|
|
187
|
+
return mAxes[axisIndex];
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
public float getAxisValue(int axisIndex) {
|
|
191
|
+
return mAxisValues[axisIndex];
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
public int getKeyCount() {
|
|
195
|
+
return mKeys.size();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
public int getKeyCode(int keyIndex) {
|
|
199
|
+
return mKeys.keyAt(keyIndex);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
public boolean isKeyPressed(int keyIndex) {
|
|
203
|
+
return mKeys.valueAt(keyIndex) != 0;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
public boolean onKeyDown(KeyEvent event) {
|
|
207
|
+
final int keyCode = event.getKeyCode();
|
|
208
|
+
if (isGameKey(keyCode)) {
|
|
209
|
+
if (event.getRepeatCount() == 0) {
|
|
210
|
+
final String symbolicName = KeyEvent.keyCodeToString(keyCode);
|
|
211
|
+
mKeys.put(keyCode, 1);
|
|
212
|
+
Log.i(TAG, mDevice.getName() + " - Key Down: " + symbolicName);
|
|
213
|
+
}
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
public boolean onKeyUp(KeyEvent event) {
|
|
220
|
+
final int keyCode = event.getKeyCode();
|
|
221
|
+
if (isGameKey(keyCode)) {
|
|
222
|
+
int index = mKeys.indexOfKey(keyCode);
|
|
223
|
+
if (index >= 0) {
|
|
224
|
+
final String symbolicName = KeyEvent.keyCodeToString(keyCode);
|
|
225
|
+
mKeys.put(keyCode, 0);
|
|
226
|
+
Log.i(TAG, mDevice.getName() + " - Key Up: " + symbolicName);
|
|
227
|
+
}
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
public boolean onJoystickMotion(MotionEvent event) {
|
|
234
|
+
StringBuilder message = new StringBuilder();
|
|
235
|
+
message.append(mDevice.getName()).append(" - Joystick Motion:\n");
|
|
236
|
+
|
|
237
|
+
final int historySize = event.getHistorySize();
|
|
238
|
+
for (int i = 0; i < mAxes.length; i++) {
|
|
239
|
+
final int axis = mAxes[i];
|
|
240
|
+
final float value = event.getAxisValue(axis);
|
|
241
|
+
mAxisValues[i] = value;
|
|
242
|
+
message.append(" ").append(MotionEvent.axisToString(axis)).append(": ");
|
|
243
|
+
|
|
244
|
+
// Append all historical values in the batch.
|
|
245
|
+
for (int historyPos = 0; historyPos < historySize; historyPos++) {
|
|
246
|
+
message.append(event.getHistoricalAxisValue(axis, historyPos));
|
|
247
|
+
message.append(", ");
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// Append the current value.
|
|
251
|
+
message.append(value);
|
|
252
|
+
message.append("\n");
|
|
253
|
+
}
|
|
254
|
+
Log.i(TAG, message.toString());
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Check whether this is a key we care about.
|
|
259
|
+
// In a real game, we would probably let the user configure which keys to use
|
|
260
|
+
// instead of hardcoding the keys like this.
|
|
261
|
+
private static boolean isGameKey(int keyCode) {
|
|
262
|
+
switch (keyCode) {
|
|
263
|
+
case KeyEvent.KEYCODE_DPAD_UP:
|
|
264
|
+
case KeyEvent.KEYCODE_DPAD_DOWN:
|
|
265
|
+
case KeyEvent.KEYCODE_DPAD_LEFT:
|
|
266
|
+
case KeyEvent.KEYCODE_DPAD_RIGHT:
|
|
267
|
+
case KeyEvent.KEYCODE_DPAD_CENTER:
|
|
268
|
+
case KeyEvent.KEYCODE_SPACE:
|
|
269
|
+
return true;
|
|
270
|
+
default:
|
|
271
|
+
return KeyEvent.isGamepadButton(keyCode);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/**
|
|
277
|
+
* A list adapter that displays a summary of the device state.
|
|
278
|
+
*/
|
|
279
|
+
private static class SummaryAdapter extends BaseAdapter {
|
|
280
|
+
private static final int BASE_ID_HEADING = 1 << 10;
|
|
281
|
+
private static final int BASE_ID_DEVICE_ITEM = 2 << 10;
|
|
282
|
+
private static final int BASE_ID_AXIS_ITEM = 3 << 10;
|
|
283
|
+
private static final int BASE_ID_KEY_ITEM = 4 << 10;
|
|
284
|
+
|
|
285
|
+
private final Context mContext;
|
|
286
|
+
private final Resources mResources;
|
|
287
|
+
|
|
288
|
+
private final SparseArray<Item> mDataItems = new SparseArray<Item>();
|
|
289
|
+
private final ArrayList<Item> mVisibleItems = new ArrayList<Item>();
|
|
290
|
+
|
|
291
|
+
private final Heading mDeviceHeading;
|
|
292
|
+
private final TextColumn mDeviceNameTextColumn;
|
|
293
|
+
|
|
294
|
+
private final Heading mAxesHeading;
|
|
295
|
+
private final Heading mKeysHeading;
|
|
296
|
+
|
|
297
|
+
private InputDeviceState mState;
|
|
298
|
+
|
|
299
|
+
public SummaryAdapter(Context context, Resources resources) {
|
|
300
|
+
mContext = context;
|
|
301
|
+
mResources = resources;
|
|
302
|
+
|
|
303
|
+
mDeviceHeading = new Heading(BASE_ID_HEADING | 0,
|
|
304
|
+
mResources.getString(R.string.game_controller_input_heading_device));
|
|
305
|
+
mDeviceNameTextColumn = new TextColumn(BASE_ID_DEVICE_ITEM | 0,
|
|
306
|
+
mResources.getString(R.string.game_controller_input_label_device_name));
|
|
307
|
+
|
|
308
|
+
mAxesHeading = new Heading(BASE_ID_HEADING | 1,
|
|
309
|
+
mResources.getString(R.string.game_controller_input_heading_axes));
|
|
310
|
+
mKeysHeading = new Heading(BASE_ID_HEADING | 2,
|
|
311
|
+
mResources.getString(R.string.game_controller_input_heading_keys));
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
public void onItemClick(int position) {
|
|
315
|
+
if (mState != null) {
|
|
316
|
+
Toast toast = Toast.makeText(
|
|
317
|
+
mContext, mState.getDevice().toString(), Toast.LENGTH_LONG);
|
|
318
|
+
toast.show();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
public void show(InputDeviceState state) {
|
|
323
|
+
mState = state;
|
|
324
|
+
mVisibleItems.clear();
|
|
325
|
+
|
|
326
|
+
// Populate device information.
|
|
327
|
+
mVisibleItems.add(mDeviceHeading);
|
|
328
|
+
mDeviceNameTextColumn.setContent(state.getDevice().getName());
|
|
329
|
+
mVisibleItems.add(mDeviceNameTextColumn);
|
|
330
|
+
|
|
331
|
+
// Populate axes.
|
|
332
|
+
mVisibleItems.add(mAxesHeading);
|
|
333
|
+
final int axisCount = state.getAxisCount();
|
|
334
|
+
for (int i = 0; i < axisCount; i++) {
|
|
335
|
+
final int axis = state.getAxis(i);
|
|
336
|
+
final int id = BASE_ID_AXIS_ITEM | axis;
|
|
337
|
+
TextColumn column = (TextColumn) mDataItems.get(id);
|
|
338
|
+
if (column == null) {
|
|
339
|
+
column = new TextColumn(id, MotionEvent.axisToString(axis));
|
|
340
|
+
mDataItems.put(id, column);
|
|
341
|
+
}
|
|
342
|
+
column.setContent(Float.toString(state.getAxisValue(i)));
|
|
343
|
+
mVisibleItems.add(column);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
// Populate keys.
|
|
347
|
+
mVisibleItems.add(mKeysHeading);
|
|
348
|
+
final int keyCount = state.getKeyCount();
|
|
349
|
+
for (int i = 0; i < keyCount; i++) {
|
|
350
|
+
final int keyCode = state.getKeyCode(i);
|
|
351
|
+
final int id = BASE_ID_KEY_ITEM | keyCode;
|
|
352
|
+
TextColumn column = (TextColumn) mDataItems.get(id);
|
|
353
|
+
if (column == null) {
|
|
354
|
+
column = new TextColumn(id, KeyEvent.keyCodeToString(keyCode));
|
|
355
|
+
mDataItems.put(id, column);
|
|
356
|
+
}
|
|
357
|
+
column.setContent(mResources.getString(state.isKeyPressed(i)
|
|
358
|
+
? R.string.game_controller_input_key_pressed
|
|
359
|
+
: R.string.game_controller_input_key_released));
|
|
360
|
+
mVisibleItems.add(column);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
notifyDataSetChanged();
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@Override
|
|
367
|
+
public boolean hasStableIds() {
|
|
368
|
+
return true;
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
@Override
|
|
372
|
+
public int getCount() {
|
|
373
|
+
return mVisibleItems.size();
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
@Override
|
|
377
|
+
public Item getItem(int position) {
|
|
378
|
+
return mVisibleItems.get(position);
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
@Override
|
|
382
|
+
public long getItemId(int position) {
|
|
383
|
+
return getItem(position).getItemId();
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
@Override
|
|
387
|
+
public View getView(int position, View convertView, ViewGroup parent) {
|
|
388
|
+
return getItem(position).getView(convertView, parent);
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
private static abstract class Item {
|
|
392
|
+
private final int mItemId;
|
|
393
|
+
private final int mLayoutResourceId;
|
|
394
|
+
private View mView;
|
|
395
|
+
|
|
396
|
+
public Item(int itemId, int layoutResourceId) {
|
|
397
|
+
mItemId = itemId;
|
|
398
|
+
mLayoutResourceId = layoutResourceId;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
public long getItemId() {
|
|
402
|
+
return mItemId;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
public View getView(View convertView, ViewGroup parent) {
|
|
406
|
+
if (mView == null) {
|
|
407
|
+
LayoutInflater inflater = (LayoutInflater)
|
|
408
|
+
parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
|
409
|
+
mView = inflater.inflate(mLayoutResourceId, parent, false);
|
|
410
|
+
initView(mView);
|
|
411
|
+
}
|
|
412
|
+
updateView(mView);
|
|
413
|
+
return mView;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
protected void initView(View view) {
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
protected void updateView(View view) {
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
private static class Heading extends Item {
|
|
424
|
+
private final String mLabel;
|
|
425
|
+
|
|
426
|
+
public Heading(int itemId, String label) {
|
|
427
|
+
super(itemId, R.layout.game_controller_input_heading);
|
|
428
|
+
mLabel = label;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
@Override
|
|
432
|
+
public void initView(View view) {
|
|
433
|
+
TextView textView = (TextView) view;
|
|
434
|
+
textView.setText(mLabel);
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
private static class TextColumn extends Item {
|
|
439
|
+
private final String mLabel;
|
|
440
|
+
|
|
441
|
+
private String mContent;
|
|
442
|
+
private TextView mContentView;
|
|
443
|
+
|
|
444
|
+
public TextColumn(int itemId, String label) {
|
|
445
|
+
super(itemId, R.layout.game_controller_input_text_column);
|
|
446
|
+
mLabel = label;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
public void setContent(String content) {
|
|
450
|
+
mContent = content;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
@Override
|
|
454
|
+
public void initView(View view) {
|
|
455
|
+
TextView textView = (TextView) view.findViewById(R.id.label);
|
|
456
|
+
textView.setText(mLabel);
|
|
457
|
+
|
|
458
|
+
mContentView = (TextView) view.findViewById(R.id.content);
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
@Override
|
|
462
|
+
public void updateView(View view) {
|
|
463
|
+
mContentView.setText(mContent);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
}
|