gametel 0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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,282 @@
|
|
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.graphics;
|
18
|
+
|
19
|
+
import javax.microedition.khronos.egl.EGLConfig;
|
20
|
+
import javax.microedition.khronos.opengles.GL;
|
21
|
+
import javax.microedition.khronos.opengles.GL10;
|
22
|
+
import javax.microedition.khronos.opengles.GL11ExtensionPack;
|
23
|
+
|
24
|
+
import android.app.Activity;
|
25
|
+
import android.opengl.GLSurfaceView;
|
26
|
+
import android.opengl.GLU;
|
27
|
+
import android.os.Bundle;
|
28
|
+
import android.os.SystemClock;
|
29
|
+
|
30
|
+
/**
|
31
|
+
* Demonstrate the Frame Buffer Object OpenGL ES extension.
|
32
|
+
* <p>
|
33
|
+
* This sample renders a scene into an offscreen frame buffer, and then
|
34
|
+
* uses the resulting image as a texture to render an onscreen scene.
|
35
|
+
*/
|
36
|
+
public class FrameBufferObjectActivity extends Activity {
|
37
|
+
private GLSurfaceView mGLSurfaceView;
|
38
|
+
|
39
|
+
private class Renderer implements GLSurfaceView.Renderer {
|
40
|
+
private boolean mContextSupportsFrameBufferObject;
|
41
|
+
private int mTargetTexture;
|
42
|
+
private int mFramebuffer;
|
43
|
+
private int mFramebufferWidth = 256;
|
44
|
+
private int mFramebufferHeight = 256;
|
45
|
+
private int mSurfaceWidth;
|
46
|
+
private int mSurfaceHeight;
|
47
|
+
|
48
|
+
private Triangle mTriangle;
|
49
|
+
private Cube mCube;
|
50
|
+
private float mAngle;
|
51
|
+
/**
|
52
|
+
* Setting this to true will change the behavior of this sample. It
|
53
|
+
* will suppress the normally onscreen rendering, and it will cause the
|
54
|
+
* rendering that would normally be done to the offscreen FBO
|
55
|
+
* be rendered onscreen instead. This can be helpful in debugging the
|
56
|
+
* rendering algorithm.
|
57
|
+
*/
|
58
|
+
private static final boolean DEBUG_RENDER_OFFSCREEN_ONSCREEN = false;
|
59
|
+
|
60
|
+
public void onDrawFrame(GL10 gl) {
|
61
|
+
checkGLError(gl);
|
62
|
+
if (mContextSupportsFrameBufferObject) {
|
63
|
+
GL11ExtensionPack gl11ep = (GL11ExtensionPack) gl;
|
64
|
+
if (DEBUG_RENDER_OFFSCREEN_ONSCREEN) {
|
65
|
+
drawOffscreenImage(gl, mSurfaceWidth, mSurfaceHeight);
|
66
|
+
} else {
|
67
|
+
gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, mFramebuffer);
|
68
|
+
drawOffscreenImage(gl, mFramebufferWidth, mFramebufferHeight);
|
69
|
+
gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, 0);
|
70
|
+
drawOnscreen(gl, mSurfaceWidth, mSurfaceHeight);
|
71
|
+
}
|
72
|
+
} else {
|
73
|
+
// Current context doesn't support frame buffer objects.
|
74
|
+
// Indicate this by drawing a red background.
|
75
|
+
gl.glClearColor(1,0,0,0);
|
76
|
+
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
|
77
|
+
}
|
78
|
+
}
|
79
|
+
|
80
|
+
public void onSurfaceChanged(GL10 gl, int width, int height) {
|
81
|
+
checkGLError(gl);
|
82
|
+
mSurfaceWidth = width;
|
83
|
+
mSurfaceHeight = height;
|
84
|
+
gl.glViewport(0, 0, width, height);
|
85
|
+
}
|
86
|
+
|
87
|
+
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
|
88
|
+
mContextSupportsFrameBufferObject = checkIfContextSupportsFrameBufferObject(gl);
|
89
|
+
if (mContextSupportsFrameBufferObject) {
|
90
|
+
mTargetTexture = createTargetTexture(gl, mFramebufferWidth, mFramebufferHeight);
|
91
|
+
mFramebuffer = createFrameBuffer(gl, mFramebufferWidth, mFramebufferHeight, mTargetTexture);
|
92
|
+
|
93
|
+
mCube = new Cube();
|
94
|
+
mTriangle = new Triangle();
|
95
|
+
}
|
96
|
+
}
|
97
|
+
|
98
|
+
private void drawOnscreen(GL10 gl, int width, int height) {
|
99
|
+
gl.glViewport(0, 0, width, height);
|
100
|
+
float ratio = (float) width / height;
|
101
|
+
gl.glMatrixMode(GL10.GL_PROJECTION);
|
102
|
+
gl.glLoadIdentity();
|
103
|
+
gl.glFrustumf(-ratio, ratio, -1, 1, 3, 7);
|
104
|
+
|
105
|
+
gl.glClearColor(0,0,1,0);
|
106
|
+
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
|
107
|
+
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTargetTexture);
|
108
|
+
|
109
|
+
gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE,
|
110
|
+
GL10.GL_REPLACE);
|
111
|
+
|
112
|
+
gl.glMatrixMode(GL10.GL_MODELVIEW);
|
113
|
+
gl.glLoadIdentity();
|
114
|
+
|
115
|
+
GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
|
116
|
+
|
117
|
+
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
|
118
|
+
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
|
119
|
+
|
120
|
+
gl.glActiveTexture(GL10.GL_TEXTURE0);
|
121
|
+
|
122
|
+
long time = SystemClock.uptimeMillis() % 4000L;
|
123
|
+
float angle = 0.090f * ((int) time);
|
124
|
+
|
125
|
+
gl.glRotatef(angle, 0, 0, 1.0f);
|
126
|
+
|
127
|
+
mTriangle.draw(gl);
|
128
|
+
|
129
|
+
// Restore default state so the other renderer is not affected.
|
130
|
+
|
131
|
+
gl.glBindTexture(GL10.GL_TEXTURE_2D, 0);
|
132
|
+
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
|
133
|
+
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
|
134
|
+
}
|
135
|
+
|
136
|
+
private void drawOffscreenImage(GL10 gl, int width, int height) {
|
137
|
+
gl.glViewport(0, 0, width, height);
|
138
|
+
float ratio = (float) width / height;
|
139
|
+
gl.glMatrixMode(GL10.GL_PROJECTION);
|
140
|
+
gl.glLoadIdentity();
|
141
|
+
gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10);
|
142
|
+
|
143
|
+
gl.glEnable(GL10.GL_CULL_FACE);
|
144
|
+
gl.glEnable(GL10.GL_DEPTH_TEST);
|
145
|
+
|
146
|
+
gl.glClearColor(0,0.5f,1,0);
|
147
|
+
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
|
148
|
+
gl.glMatrixMode(GL10.GL_MODELVIEW);
|
149
|
+
gl.glLoadIdentity();
|
150
|
+
gl.glTranslatef(0, 0, -3.0f);
|
151
|
+
gl.glRotatef(mAngle, 0, 1, 0);
|
152
|
+
gl.glRotatef(mAngle*0.25f, 1, 0, 0);
|
153
|
+
|
154
|
+
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
|
155
|
+
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
|
156
|
+
|
157
|
+
mCube.draw(gl);
|
158
|
+
|
159
|
+
gl.glRotatef(mAngle*2.0f, 0, 1, 1);
|
160
|
+
gl.glTranslatef(0.5f, 0.5f, 0.5f);
|
161
|
+
|
162
|
+
mCube.draw(gl);
|
163
|
+
|
164
|
+
mAngle += 1.2f;
|
165
|
+
|
166
|
+
// Restore default state so the other renderer is not affected.
|
167
|
+
|
168
|
+
gl.glDisable(GL10.GL_CULL_FACE);
|
169
|
+
gl.glDisable(GL10.GL_DEPTH_TEST);
|
170
|
+
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
|
171
|
+
gl.glDisableClientState(GL10.GL_COLOR_ARRAY);
|
172
|
+
}
|
173
|
+
|
174
|
+
private int createTargetTexture(GL10 gl, int width, int height) {
|
175
|
+
int texture;
|
176
|
+
int[] textures = new int[1];
|
177
|
+
gl.glGenTextures(1, textures, 0);
|
178
|
+
texture = textures[0];
|
179
|
+
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);
|
180
|
+
gl.glTexImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, width, height, 0,
|
181
|
+
GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, null);
|
182
|
+
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
|
183
|
+
GL10.GL_NEAREST);
|
184
|
+
gl.glTexParameterf(GL10.GL_TEXTURE_2D,
|
185
|
+
GL10.GL_TEXTURE_MAG_FILTER,
|
186
|
+
GL10.GL_LINEAR);
|
187
|
+
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
|
188
|
+
GL10.GL_REPEAT);
|
189
|
+
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
|
190
|
+
GL10.GL_REPEAT);
|
191
|
+
; return texture;
|
192
|
+
}
|
193
|
+
|
194
|
+
private int createFrameBuffer(GL10 gl, int width, int height, int targetTextureId) {
|
195
|
+
GL11ExtensionPack gl11ep = (GL11ExtensionPack) gl;
|
196
|
+
int framebuffer;
|
197
|
+
int[] framebuffers = new int[1];
|
198
|
+
gl11ep.glGenFramebuffersOES(1, framebuffers, 0);
|
199
|
+
framebuffer = framebuffers[0];
|
200
|
+
gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, framebuffer);
|
201
|
+
|
202
|
+
int depthbuffer;
|
203
|
+
int[] renderbuffers = new int[1];
|
204
|
+
gl11ep.glGenRenderbuffersOES(1, renderbuffers, 0);
|
205
|
+
depthbuffer = renderbuffers[0];
|
206
|
+
|
207
|
+
gl11ep.glBindRenderbufferOES(GL11ExtensionPack.GL_RENDERBUFFER_OES, depthbuffer);
|
208
|
+
gl11ep.glRenderbufferStorageOES(GL11ExtensionPack.GL_RENDERBUFFER_OES,
|
209
|
+
GL11ExtensionPack.GL_DEPTH_COMPONENT16, width, height);
|
210
|
+
gl11ep.glFramebufferRenderbufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES,
|
211
|
+
GL11ExtensionPack.GL_DEPTH_ATTACHMENT_OES,
|
212
|
+
GL11ExtensionPack.GL_RENDERBUFFER_OES, depthbuffer);
|
213
|
+
|
214
|
+
gl11ep.glFramebufferTexture2DOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES,
|
215
|
+
GL11ExtensionPack.GL_COLOR_ATTACHMENT0_OES, GL10.GL_TEXTURE_2D,
|
216
|
+
targetTextureId, 0);
|
217
|
+
int status = gl11ep.glCheckFramebufferStatusOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES);
|
218
|
+
if (status != GL11ExtensionPack.GL_FRAMEBUFFER_COMPLETE_OES) {
|
219
|
+
throw new RuntimeException("Framebuffer is not complete: " +
|
220
|
+
Integer.toHexString(status));
|
221
|
+
}
|
222
|
+
gl11ep.glBindFramebufferOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, 0);
|
223
|
+
return framebuffer;
|
224
|
+
}
|
225
|
+
|
226
|
+
private boolean checkIfContextSupportsFrameBufferObject(GL10 gl) {
|
227
|
+
return checkIfContextSupportsExtension(gl, "GL_OES_framebuffer_object");
|
228
|
+
}
|
229
|
+
|
230
|
+
/**
|
231
|
+
* This is not the fastest way to check for an extension, but fine if
|
232
|
+
* we are only checking for a few extensions each time a context is created.
|
233
|
+
* @param gl
|
234
|
+
* @param extension
|
235
|
+
* @return true if the extension is present in the current context.
|
236
|
+
*/
|
237
|
+
private boolean checkIfContextSupportsExtension(GL10 gl, String extension) {
|
238
|
+
String extensions = " " + gl.glGetString(GL10.GL_EXTENSIONS) + " ";
|
239
|
+
// The extensions string is padded with spaces between extensions, but not
|
240
|
+
// necessarily at the beginning or end. For simplicity, add spaces at the
|
241
|
+
// beginning and end of the extensions string and the extension string.
|
242
|
+
// This means we can avoid special-case checks for the first or last
|
243
|
+
// extension, as well as avoid special-case checks when an extension name
|
244
|
+
// is the same as the first part of another extension name.
|
245
|
+
return extensions.indexOf(" " + extension + " ") >= 0;
|
246
|
+
}
|
247
|
+
}
|
248
|
+
|
249
|
+
static void checkGLError(GL gl) {
|
250
|
+
int error = ((GL10) gl).glGetError();
|
251
|
+
if (error != GL10.GL_NO_ERROR) {
|
252
|
+
throw new RuntimeException("GLError 0x" + Integer.toHexString(error));
|
253
|
+
}
|
254
|
+
}
|
255
|
+
|
256
|
+
@Override
|
257
|
+
protected void onCreate(Bundle savedInstanceState) {
|
258
|
+
super.onCreate(savedInstanceState);
|
259
|
+
|
260
|
+
// Create our surface view and set it as the content of our
|
261
|
+
// Activity
|
262
|
+
mGLSurfaceView = new GLSurfaceView(this);
|
263
|
+
mGLSurfaceView.setRenderer(new Renderer());
|
264
|
+
setContentView(mGLSurfaceView);
|
265
|
+
}
|
266
|
+
|
267
|
+
@Override
|
268
|
+
protected void onResume() {
|
269
|
+
// Ideally a game should implement onResume() and onPause()
|
270
|
+
// to take appropriate action when the activity looses focus
|
271
|
+
super.onResume();
|
272
|
+
mGLSurfaceView.onResume();
|
273
|
+
}
|
274
|
+
|
275
|
+
@Override
|
276
|
+
protected void onPause() {
|
277
|
+
// Ideally a game should implement onResume() and onPause()
|
278
|
+
// to take appropriate action when the activity looses focus
|
279
|
+
super.onPause();
|
280
|
+
mGLSurfaceView.onPause();
|
281
|
+
}
|
282
|
+
}
|
@@ -0,0 +1,72 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2009 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.graphics;
|
18
|
+
|
19
|
+
import android.app.Activity;
|
20
|
+
import android.app.ActivityManager;
|
21
|
+
import android.content.Context;
|
22
|
+
import android.content.pm.ConfigurationInfo;
|
23
|
+
import android.opengl.GLSurfaceView;
|
24
|
+
import android.os.Bundle;
|
25
|
+
|
26
|
+
/**
|
27
|
+
* This sample shows how to check for OpenGL ES 2.0 support at runtime, and then
|
28
|
+
* use either OpenGL ES 1.0 or OpenGL ES 2.0, as appropriate.
|
29
|
+
*/
|
30
|
+
public class GLES20Activity extends Activity {
|
31
|
+
@Override
|
32
|
+
protected void onCreate(Bundle savedInstanceState) {
|
33
|
+
super.onCreate(savedInstanceState);
|
34
|
+
mGLSurfaceView = new GLSurfaceView(this);
|
35
|
+
if (detectOpenGLES20()) {
|
36
|
+
// Tell the surface view we want to create an OpenGL ES 2.0-compatible
|
37
|
+
// context, and set an OpenGL ES 2.0-compatible renderer.
|
38
|
+
mGLSurfaceView.setEGLContextClientVersion(2);
|
39
|
+
mGLSurfaceView.setRenderer(new GLES20TriangleRenderer(this));
|
40
|
+
} else {
|
41
|
+
// Set an OpenGL ES 1.x-compatible renderer. In a real application
|
42
|
+
// this renderer might approximate the same output as the 2.0 renderer.
|
43
|
+
mGLSurfaceView.setRenderer(new TriangleRenderer(this));
|
44
|
+
}
|
45
|
+
setContentView(mGLSurfaceView);
|
46
|
+
}
|
47
|
+
|
48
|
+
private boolean detectOpenGLES20() {
|
49
|
+
ActivityManager am =
|
50
|
+
(ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
|
51
|
+
ConfigurationInfo info = am.getDeviceConfigurationInfo();
|
52
|
+
return (info.reqGlEsVersion >= 0x20000);
|
53
|
+
}
|
54
|
+
|
55
|
+
@Override
|
56
|
+
protected void onResume() {
|
57
|
+
// Ideally a game should implement onResume() and onPause()
|
58
|
+
// to take appropriate action when the activity looses focus
|
59
|
+
super.onResume();
|
60
|
+
mGLSurfaceView.onResume();
|
61
|
+
}
|
62
|
+
|
63
|
+
@Override
|
64
|
+
protected void onPause() {
|
65
|
+
// Ideally a game should implement onResume() and onPause()
|
66
|
+
// to take appropriate action when the activity looses focus
|
67
|
+
super.onPause();
|
68
|
+
mGLSurfaceView.onPause();
|
69
|
+
}
|
70
|
+
|
71
|
+
private GLSurfaceView mGLSurfaceView;
|
72
|
+
}
|
@@ -0,0 +1,255 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) 2009 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.graphics;
|
18
|
+
|
19
|
+
import java.io.IOException;
|
20
|
+
import java.io.InputStream;
|
21
|
+
import java.nio.ByteBuffer;
|
22
|
+
import java.nio.ByteOrder;
|
23
|
+
import java.nio.FloatBuffer;
|
24
|
+
|
25
|
+
import javax.microedition.khronos.egl.EGLConfig;
|
26
|
+
import javax.microedition.khronos.opengles.GL10;
|
27
|
+
|
28
|
+
import android.content.Context;
|
29
|
+
import android.graphics.Bitmap;
|
30
|
+
import android.graphics.BitmapFactory;
|
31
|
+
import android.opengl.GLES20;
|
32
|
+
import android.opengl.GLSurfaceView;
|
33
|
+
import android.opengl.GLUtils;
|
34
|
+
import android.opengl.Matrix;
|
35
|
+
import android.os.SystemClock;
|
36
|
+
import android.util.Log;
|
37
|
+
|
38
|
+
import com.example.android.apis.R;
|
39
|
+
|
40
|
+
class GLES20TriangleRenderer implements GLSurfaceView.Renderer {
|
41
|
+
|
42
|
+
public GLES20TriangleRenderer(Context context) {
|
43
|
+
mContext = context;
|
44
|
+
mTriangleVertices = ByteBuffer.allocateDirect(mTriangleVerticesData.length
|
45
|
+
* FLOAT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asFloatBuffer();
|
46
|
+
mTriangleVertices.put(mTriangleVerticesData).position(0);
|
47
|
+
}
|
48
|
+
|
49
|
+
public void onDrawFrame(GL10 glUnused) {
|
50
|
+
// Ignore the passed-in GL10 interface, and use the GLES20
|
51
|
+
// class's static methods instead.
|
52
|
+
GLES20.glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
|
53
|
+
GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
|
54
|
+
GLES20.glUseProgram(mProgram);
|
55
|
+
checkGlError("glUseProgram");
|
56
|
+
|
57
|
+
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
|
58
|
+
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);
|
59
|
+
|
60
|
+
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
|
61
|
+
GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
|
62
|
+
TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
|
63
|
+
checkGlError("glVertexAttribPointer maPosition");
|
64
|
+
mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
|
65
|
+
GLES20.glEnableVertexAttribArray(maPositionHandle);
|
66
|
+
checkGlError("glEnableVertexAttribArray maPositionHandle");
|
67
|
+
GLES20.glVertexAttribPointer(maTextureHandle, 2, GLES20.GL_FLOAT, false,
|
68
|
+
TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
|
69
|
+
checkGlError("glVertexAttribPointer maTextureHandle");
|
70
|
+
GLES20.glEnableVertexAttribArray(maTextureHandle);
|
71
|
+
checkGlError("glEnableVertexAttribArray maTextureHandle");
|
72
|
+
|
73
|
+
long time = SystemClock.uptimeMillis() % 4000L;
|
74
|
+
float angle = 0.090f * ((int) time);
|
75
|
+
Matrix.setRotateM(mMMatrix, 0, angle, 0, 0, 1.0f);
|
76
|
+
Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0);
|
77
|
+
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
|
78
|
+
|
79
|
+
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
|
80
|
+
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, 3);
|
81
|
+
checkGlError("glDrawArrays");
|
82
|
+
}
|
83
|
+
|
84
|
+
public void onSurfaceChanged(GL10 glUnused, int width, int height) {
|
85
|
+
// Ignore the passed-in GL10 interface, and use the GLES20
|
86
|
+
// class's static methods instead.
|
87
|
+
GLES20.glViewport(0, 0, width, height);
|
88
|
+
float ratio = (float) width / height;
|
89
|
+
Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
|
90
|
+
}
|
91
|
+
|
92
|
+
public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
|
93
|
+
// Ignore the passed-in GL10 interface, and use the GLES20
|
94
|
+
// class's static methods instead.
|
95
|
+
mProgram = createProgram(mVertexShader, mFragmentShader);
|
96
|
+
if (mProgram == 0) {
|
97
|
+
return;
|
98
|
+
}
|
99
|
+
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
|
100
|
+
checkGlError("glGetAttribLocation aPosition");
|
101
|
+
if (maPositionHandle == -1) {
|
102
|
+
throw new RuntimeException("Could not get attrib location for aPosition");
|
103
|
+
}
|
104
|
+
maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
|
105
|
+
checkGlError("glGetAttribLocation aTextureCoord");
|
106
|
+
if (maTextureHandle == -1) {
|
107
|
+
throw new RuntimeException("Could not get attrib location for aTextureCoord");
|
108
|
+
}
|
109
|
+
|
110
|
+
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
|
111
|
+
checkGlError("glGetUniformLocation uMVPMatrix");
|
112
|
+
if (muMVPMatrixHandle == -1) {
|
113
|
+
throw new RuntimeException("Could not get attrib location for uMVPMatrix");
|
114
|
+
}
|
115
|
+
|
116
|
+
/*
|
117
|
+
* Create our texture. This has to be done each time the
|
118
|
+
* surface is created.
|
119
|
+
*/
|
120
|
+
|
121
|
+
int[] textures = new int[1];
|
122
|
+
GLES20.glGenTextures(1, textures, 0);
|
123
|
+
|
124
|
+
mTextureID = textures[0];
|
125
|
+
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID);
|
126
|
+
|
127
|
+
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
|
128
|
+
GLES20.GL_NEAREST);
|
129
|
+
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D,
|
130
|
+
GLES20.GL_TEXTURE_MAG_FILTER,
|
131
|
+
GLES20.GL_LINEAR);
|
132
|
+
|
133
|
+
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
|
134
|
+
GLES20.GL_REPEAT);
|
135
|
+
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
|
136
|
+
GLES20.GL_REPEAT);
|
137
|
+
|
138
|
+
InputStream is = mContext.getResources()
|
139
|
+
.openRawResource(R.raw.robot);
|
140
|
+
Bitmap bitmap;
|
141
|
+
try {
|
142
|
+
bitmap = BitmapFactory.decodeStream(is);
|
143
|
+
} finally {
|
144
|
+
try {
|
145
|
+
is.close();
|
146
|
+
} catch(IOException e) {
|
147
|
+
// Ignore.
|
148
|
+
}
|
149
|
+
}
|
150
|
+
|
151
|
+
GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, bitmap, 0);
|
152
|
+
bitmap.recycle();
|
153
|
+
|
154
|
+
Matrix.setLookAtM(mVMatrix, 0, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
|
155
|
+
}
|
156
|
+
|
157
|
+
private int loadShader(int shaderType, String source) {
|
158
|
+
int shader = GLES20.glCreateShader(shaderType);
|
159
|
+
if (shader != 0) {
|
160
|
+
GLES20.glShaderSource(shader, source);
|
161
|
+
GLES20.glCompileShader(shader);
|
162
|
+
int[] compiled = new int[1];
|
163
|
+
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
|
164
|
+
if (compiled[0] == 0) {
|
165
|
+
Log.e(TAG, "Could not compile shader " + shaderType + ":");
|
166
|
+
Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
|
167
|
+
GLES20.glDeleteShader(shader);
|
168
|
+
shader = 0;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
return shader;
|
172
|
+
}
|
173
|
+
|
174
|
+
private int createProgram(String vertexSource, String fragmentSource) {
|
175
|
+
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
|
176
|
+
if (vertexShader == 0) {
|
177
|
+
return 0;
|
178
|
+
}
|
179
|
+
|
180
|
+
int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
|
181
|
+
if (pixelShader == 0) {
|
182
|
+
return 0;
|
183
|
+
}
|
184
|
+
|
185
|
+
int program = GLES20.glCreateProgram();
|
186
|
+
if (program != 0) {
|
187
|
+
GLES20.glAttachShader(program, vertexShader);
|
188
|
+
checkGlError("glAttachShader");
|
189
|
+
GLES20.glAttachShader(program, pixelShader);
|
190
|
+
checkGlError("glAttachShader");
|
191
|
+
GLES20.glLinkProgram(program);
|
192
|
+
int[] linkStatus = new int[1];
|
193
|
+
GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
|
194
|
+
if (linkStatus[0] != GLES20.GL_TRUE) {
|
195
|
+
Log.e(TAG, "Could not link program: ");
|
196
|
+
Log.e(TAG, GLES20.glGetProgramInfoLog(program));
|
197
|
+
GLES20.glDeleteProgram(program);
|
198
|
+
program = 0;
|
199
|
+
}
|
200
|
+
}
|
201
|
+
return program;
|
202
|
+
}
|
203
|
+
|
204
|
+
private void checkGlError(String op) {
|
205
|
+
int error;
|
206
|
+
while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
|
207
|
+
Log.e(TAG, op + ": glError " + error);
|
208
|
+
throw new RuntimeException(op + ": glError " + error);
|
209
|
+
}
|
210
|
+
}
|
211
|
+
|
212
|
+
private static final int FLOAT_SIZE_BYTES = 4;
|
213
|
+
private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
|
214
|
+
private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
|
215
|
+
private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
|
216
|
+
private final float[] mTriangleVerticesData = {
|
217
|
+
// X, Y, Z, U, V
|
218
|
+
-1.0f, -0.5f, 0, -0.5f, 0.0f,
|
219
|
+
1.0f, -0.5f, 0, 1.5f, -0.0f,
|
220
|
+
0.0f, 1.11803399f, 0, 0.5f, 1.61803399f };
|
221
|
+
|
222
|
+
private FloatBuffer mTriangleVertices;
|
223
|
+
|
224
|
+
private final String mVertexShader =
|
225
|
+
"uniform mat4 uMVPMatrix;\n" +
|
226
|
+
"attribute vec4 aPosition;\n" +
|
227
|
+
"attribute vec2 aTextureCoord;\n" +
|
228
|
+
"varying vec2 vTextureCoord;\n" +
|
229
|
+
"void main() {\n" +
|
230
|
+
" gl_Position = uMVPMatrix * aPosition;\n" +
|
231
|
+
" vTextureCoord = aTextureCoord;\n" +
|
232
|
+
"}\n";
|
233
|
+
|
234
|
+
private final String mFragmentShader =
|
235
|
+
"precision mediump float;\n" +
|
236
|
+
"varying vec2 vTextureCoord;\n" +
|
237
|
+
"uniform sampler2D sTexture;\n" +
|
238
|
+
"void main() {\n" +
|
239
|
+
" gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
|
240
|
+
"}\n";
|
241
|
+
|
242
|
+
private float[] mMVPMatrix = new float[16];
|
243
|
+
private float[] mProjMatrix = new float[16];
|
244
|
+
private float[] mMMatrix = new float[16];
|
245
|
+
private float[] mVMatrix = new float[16];
|
246
|
+
|
247
|
+
private int mProgram;
|
248
|
+
private int mTextureID;
|
249
|
+
private int muMVPMatrixHandle;
|
250
|
+
private int maPositionHandle;
|
251
|
+
private int maTextureHandle;
|
252
|
+
|
253
|
+
private Context mContext;
|
254
|
+
private static String TAG = "GLES20TriangleRenderer";
|
255
|
+
}
|