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,122 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2008 The Android Open Source Project
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package com.example.android.apis.appwidget;
|
|
18
|
+
|
|
19
|
+
import android.appwidget.AppWidgetManager;
|
|
20
|
+
import android.appwidget.AppWidgetProvider;
|
|
21
|
+
import android.content.ComponentName;
|
|
22
|
+
import android.content.Context;
|
|
23
|
+
import android.content.pm.PackageManager;
|
|
24
|
+
import android.os.SystemClock;
|
|
25
|
+
import android.util.Log;
|
|
26
|
+
import android.widget.RemoteViews;
|
|
27
|
+
|
|
28
|
+
// Need the following import to get access to the app resources, since this
|
|
29
|
+
// class is in a sub-package.
|
|
30
|
+
import com.example.android.apis.R;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A widget provider. We have a string that we pull from a preference in order to show
|
|
34
|
+
* the configuration settings and the current time when the widget was updated. We also
|
|
35
|
+
* register a BroadcastReceiver for time-changed and timezone-changed broadcasts, and
|
|
36
|
+
* update then too.
|
|
37
|
+
*
|
|
38
|
+
* <p>See also the following files:
|
|
39
|
+
* <ul>
|
|
40
|
+
* <li>ExampleAppWidgetConfigure.java</li>
|
|
41
|
+
* <li>ExampleBroadcastReceiver.java</li>
|
|
42
|
+
* <li>res/layout/appwidget_configure.xml</li>
|
|
43
|
+
* <li>res/layout/appwidget_provider.xml</li>
|
|
44
|
+
* <li>res/xml/appwidget_provider.xml</li>
|
|
45
|
+
* </ul>
|
|
46
|
+
*/
|
|
47
|
+
public class ExampleAppWidgetProvider extends AppWidgetProvider {
|
|
48
|
+
// log tag
|
|
49
|
+
private static final String TAG = "ExampleAppWidgetProvider";
|
|
50
|
+
|
|
51
|
+
@Override
|
|
52
|
+
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
|
|
53
|
+
Log.d(TAG, "onUpdate");
|
|
54
|
+
// For each widget that needs an update, get the text that we should display:
|
|
55
|
+
// - Create a RemoteViews object for it
|
|
56
|
+
// - Set the text in the RemoteViews object
|
|
57
|
+
// - Tell the AppWidgetManager to show that views object for the widget.
|
|
58
|
+
final int N = appWidgetIds.length;
|
|
59
|
+
for (int i=0; i<N; i++) {
|
|
60
|
+
int appWidgetId = appWidgetIds[i];
|
|
61
|
+
String titlePrefix = ExampleAppWidgetConfigure.loadTitlePref(context, appWidgetId);
|
|
62
|
+
updateAppWidget(context, appWidgetManager, appWidgetId, titlePrefix);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
@Override
|
|
67
|
+
public void onDeleted(Context context, int[] appWidgetIds) {
|
|
68
|
+
Log.d(TAG, "onDeleted");
|
|
69
|
+
// When the user deletes the widget, delete the preference associated with it.
|
|
70
|
+
final int N = appWidgetIds.length;
|
|
71
|
+
for (int i=0; i<N; i++) {
|
|
72
|
+
ExampleAppWidgetConfigure.deleteTitlePref(context, appWidgetIds[i]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
@Override
|
|
77
|
+
public void onEnabled(Context context) {
|
|
78
|
+
Log.d(TAG, "onEnabled");
|
|
79
|
+
// When the first widget is created, register for the TIMEZONE_CHANGED and TIME_CHANGED
|
|
80
|
+
// broadcasts. We don't want to be listening for these if nobody has our widget active.
|
|
81
|
+
// This setting is sticky across reboots, but that doesn't matter, because this will
|
|
82
|
+
// be called after boot if there is a widget instance for this provider.
|
|
83
|
+
PackageManager pm = context.getPackageManager();
|
|
84
|
+
pm.setComponentEnabledSetting(
|
|
85
|
+
new ComponentName("com.example.android.apis", ".appwidget.ExampleBroadcastReceiver"),
|
|
86
|
+
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
|
87
|
+
PackageManager.DONT_KILL_APP);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@Override
|
|
91
|
+
public void onDisabled(Context context) {
|
|
92
|
+
// When the first widget is created, stop listening for the TIMEZONE_CHANGED and
|
|
93
|
+
// TIME_CHANGED broadcasts.
|
|
94
|
+
Log.d(TAG, "onDisabled");
|
|
95
|
+
PackageManager pm = context.getPackageManager();
|
|
96
|
+
pm.setComponentEnabledSetting(
|
|
97
|
+
new ComponentName("com.example.android.apis", ".appwidget.ExampleBroadcastReceiver"),
|
|
98
|
+
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
|
|
99
|
+
PackageManager.DONT_KILL_APP);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
|
|
103
|
+
int appWidgetId, String titlePrefix) {
|
|
104
|
+
Log.d(TAG, "updateAppWidget appWidgetId=" + appWidgetId + " titlePrefix=" + titlePrefix);
|
|
105
|
+
// Getting the string this way allows the string to be localized. The format
|
|
106
|
+
// string is filled in using java.util.Formatter-style format strings.
|
|
107
|
+
CharSequence text = context.getString(R.string.appwidget_text_format,
|
|
108
|
+
ExampleAppWidgetConfigure.loadTitlePref(context, appWidgetId),
|
|
109
|
+
"0x" + Long.toHexString(SystemClock.elapsedRealtime()));
|
|
110
|
+
|
|
111
|
+
// Construct the RemoteViews object. It takes the package name (in our case, it's our
|
|
112
|
+
// package, but it needs this because on the other side it's the widget host inflating
|
|
113
|
+
// the layout from our package).
|
|
114
|
+
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);
|
|
115
|
+
views.setTextViewText(R.id.appwidget_text, text);
|
|
116
|
+
|
|
117
|
+
// Tell the widget manager
|
|
118
|
+
appWidgetManager.updateAppWidget(appWidgetId, views);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2008 The Android Open Source Project
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
package com.example.android.apis.appwidget;
|
|
18
|
+
|
|
19
|
+
import android.appwidget.AppWidgetManager;
|
|
20
|
+
import android.content.BroadcastReceiver;
|
|
21
|
+
import android.content.Context;
|
|
22
|
+
import android.content.Intent;
|
|
23
|
+
import android.util.Log;
|
|
24
|
+
|
|
25
|
+
import java.util.ArrayList;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* A BroadcastReceiver that listens for updates for the ExampleAppWidgetProvider. This
|
|
29
|
+
* BroadcastReceiver starts off disabled, and we only enable it when there is a widget
|
|
30
|
+
* instance created, in order to only receive notifications when we need them.
|
|
31
|
+
*/
|
|
32
|
+
public class ExampleBroadcastReceiver extends BroadcastReceiver {
|
|
33
|
+
|
|
34
|
+
@Override
|
|
35
|
+
public void onReceive(Context context, Intent intent) {
|
|
36
|
+
Log.d("ExmampleBroadcastReceiver", "intent=" + intent);
|
|
37
|
+
|
|
38
|
+
// For our example, we'll also update all of the widgets when the timezone
|
|
39
|
+
// changes, or the user or network sets the time.
|
|
40
|
+
String action = intent.getAction();
|
|
41
|
+
if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)
|
|
42
|
+
|| action.equals(Intent.ACTION_TIME_CHANGED)) {
|
|
43
|
+
AppWidgetManager gm = AppWidgetManager.getInstance(context);
|
|
44
|
+
ArrayList<Integer> appWidgetIds = new ArrayList<Integer>();
|
|
45
|
+
ArrayList<String> texts = new ArrayList<String>();
|
|
46
|
+
|
|
47
|
+
ExampleAppWidgetConfigure.loadAllTitlePrefs(context, appWidgetIds, texts);
|
|
48
|
+
|
|
49
|
+
final int N = appWidgetIds.size();
|
|
50
|
+
for (int i=0; i<N; i++) {
|
|
51
|
+
ExampleAppWidgetProvider.updateAppWidget(context, gm, appWidgetIds.get(i), texts.get(i));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
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.content;
|
|
18
|
+
|
|
19
|
+
import com.example.android.apis.R;
|
|
20
|
+
|
|
21
|
+
import android.app.Activity;
|
|
22
|
+
import android.content.ClipboardManager;
|
|
23
|
+
import android.content.ClipData;
|
|
24
|
+
import android.content.Context;
|
|
25
|
+
import android.content.Intent;
|
|
26
|
+
import android.content.res.Resources;
|
|
27
|
+
import android.net.Uri;
|
|
28
|
+
import android.os.Bundle;
|
|
29
|
+
import android.view.View;
|
|
30
|
+
import android.widget.AdapterView;
|
|
31
|
+
import android.widget.ArrayAdapter;
|
|
32
|
+
import android.widget.EditText;
|
|
33
|
+
import android.widget.Spinner;
|
|
34
|
+
import android.widget.TextView;
|
|
35
|
+
import android.widget.AdapterView.OnItemSelectedListener;
|
|
36
|
+
|
|
37
|
+
public class ClipboardSample extends Activity {
|
|
38
|
+
ClipboardManager mClipboard;
|
|
39
|
+
|
|
40
|
+
Spinner mSpinner;
|
|
41
|
+
TextView mMimeTypes;
|
|
42
|
+
EditText mEditText;
|
|
43
|
+
|
|
44
|
+
CharSequence mStyledText;
|
|
45
|
+
String mPlainText;
|
|
46
|
+
|
|
47
|
+
ClipboardManager.OnPrimaryClipChangedListener mPrimaryChangeListener
|
|
48
|
+
= new ClipboardManager.OnPrimaryClipChangedListener() {
|
|
49
|
+
public void onPrimaryClipChanged() {
|
|
50
|
+
updateClipData();
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
@Override
|
|
55
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
56
|
+
super.onCreate(savedInstanceState);
|
|
57
|
+
|
|
58
|
+
mClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
|
|
59
|
+
|
|
60
|
+
// See res/any/layout/resources.xml for this view layout definition.
|
|
61
|
+
setContentView(R.layout.clipboard);
|
|
62
|
+
|
|
63
|
+
TextView tv;
|
|
64
|
+
|
|
65
|
+
mStyledText = getText(R.string.styled_text);
|
|
66
|
+
tv = (TextView)findViewById(R.id.styled_text);
|
|
67
|
+
tv.setText(mStyledText);
|
|
68
|
+
|
|
69
|
+
mPlainText = mStyledText.toString();
|
|
70
|
+
tv = (TextView)findViewById(R.id.plain_text);
|
|
71
|
+
tv.setText(mPlainText);
|
|
72
|
+
|
|
73
|
+
mSpinner = (Spinner) findViewById(R.id.clip_type);
|
|
74
|
+
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
|
|
75
|
+
this, R.array.clip_data_types, android.R.layout.simple_spinner_item);
|
|
76
|
+
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
|
77
|
+
mSpinner.setAdapter(adapter);
|
|
78
|
+
mSpinner.setOnItemSelectedListener(
|
|
79
|
+
new OnItemSelectedListener() {
|
|
80
|
+
public void onItemSelected(
|
|
81
|
+
AdapterView<?> parent, View view, int position, long id) {
|
|
82
|
+
}
|
|
83
|
+
public void onNothingSelected(AdapterView<?> parent) {
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
mMimeTypes = (TextView)findViewById(R.id.clip_mime_types);
|
|
88
|
+
mEditText = (EditText)findViewById(R.id.clip_text);
|
|
89
|
+
|
|
90
|
+
mClipboard.addPrimaryClipChangedListener(mPrimaryChangeListener);
|
|
91
|
+
updateClipData();
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@Override
|
|
95
|
+
protected void onDestroy() {
|
|
96
|
+
super.onDestroy();
|
|
97
|
+
mClipboard.removePrimaryClipChangedListener(mPrimaryChangeListener);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public void pasteStyledText(View button) {
|
|
101
|
+
mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mStyledText));
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public void pastePlainText(View button) {
|
|
105
|
+
mClipboard.setPrimaryClip(ClipData.newPlainText("Styled Text", mPlainText));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public void pasteIntent(View button) {
|
|
109
|
+
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.android.com/"));
|
|
110
|
+
mClipboard.setPrimaryClip(ClipData.newIntent("VIEW intent", intent));
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
public void pasteUri(View button) {
|
|
114
|
+
mClipboard.setPrimaryClip(ClipData.newRawUri("URI", Uri.parse("http://www.android.com/")));
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
void updateClipData() {
|
|
118
|
+
ClipData clip = mClipboard.getPrimaryClip();
|
|
119
|
+
String[] mimeTypes = clip != null ? clip.getDescription().filterMimeTypes("*/*") : null;
|
|
120
|
+
mMimeTypes.setText("");
|
|
121
|
+
if (mimeTypes != null) {
|
|
122
|
+
for (int i=0; i<mimeTypes.length; i++) {
|
|
123
|
+
mMimeTypes.append(mimeTypes[i]);
|
|
124
|
+
mMimeTypes.append("\n");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (clip == null) {
|
|
128
|
+
mSpinner.setSelection(0);
|
|
129
|
+
mEditText.setText("");
|
|
130
|
+
} else if (clip.getItemAt(0).getText() != null) {
|
|
131
|
+
mSpinner.setSelection(1);
|
|
132
|
+
mEditText.setText(clip.getItemAt(0).getText());
|
|
133
|
+
} else if (clip.getItemAt(0).getIntent() != null) {
|
|
134
|
+
mSpinner.setSelection(2);
|
|
135
|
+
mEditText.setText(clip.getItemAt(0).getIntent().toUri(0));
|
|
136
|
+
} else if (clip.getItemAt(0).getUri() != null) {
|
|
137
|
+
mSpinner.setSelection(3);
|
|
138
|
+
mEditText.setText(clip.getItemAt(0).getUri().toString());
|
|
139
|
+
} else {
|
|
140
|
+
mSpinner.setSelection(0);
|
|
141
|
+
mEditText.setText("Clip containing no data");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,376 @@
|
|
|
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.content;
|
|
18
|
+
|
|
19
|
+
//Need the following import to get access to the app resources, since this
|
|
20
|
+
//class is in a sub-package.
|
|
21
|
+
import com.example.android.apis.R;
|
|
22
|
+
|
|
23
|
+
import android.app.Activity;
|
|
24
|
+
import android.content.BroadcastReceiver;
|
|
25
|
+
import android.content.Context;
|
|
26
|
+
import android.content.Intent;
|
|
27
|
+
import android.content.IntentFilter;
|
|
28
|
+
import android.media.MediaScannerConnection;
|
|
29
|
+
import android.net.Uri;
|
|
30
|
+
import android.os.Bundle;
|
|
31
|
+
import android.os.Environment;
|
|
32
|
+
import android.util.Log;
|
|
33
|
+
import android.view.LayoutInflater;
|
|
34
|
+
import android.view.View;
|
|
35
|
+
import android.view.ViewGroup;
|
|
36
|
+
import android.widget.Button;
|
|
37
|
+
import android.widget.TextView;
|
|
38
|
+
|
|
39
|
+
import java.io.File;
|
|
40
|
+
import java.io.FileOutputStream;
|
|
41
|
+
import java.io.IOException;
|
|
42
|
+
import java.io.InputStream;
|
|
43
|
+
import java.io.OutputStream;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Demonstration of styled text resources.
|
|
48
|
+
*/
|
|
49
|
+
public class ExternalStorage extends Activity {
|
|
50
|
+
ViewGroup mLayout;
|
|
51
|
+
|
|
52
|
+
static class Item {
|
|
53
|
+
View mRoot;
|
|
54
|
+
Button mCreate;
|
|
55
|
+
Button mDelete;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
Item mExternalStoragePublicPicture;
|
|
59
|
+
Item mExternalStoragePrivatePicture;
|
|
60
|
+
Item mExternalStoragePrivateFile;
|
|
61
|
+
|
|
62
|
+
@Override
|
|
63
|
+
protected void onCreate(Bundle savedInstanceState) {
|
|
64
|
+
super.onCreate(savedInstanceState);
|
|
65
|
+
|
|
66
|
+
setContentView(R.layout.external_storage);
|
|
67
|
+
mLayout = (ViewGroup)findViewById(R.id.layout);
|
|
68
|
+
mExternalStoragePublicPicture = createStorageControls(
|
|
69
|
+
"Picture: getExternalStoragePublicDirectory",
|
|
70
|
+
Environment.getExternalStoragePublicDirectory(
|
|
71
|
+
Environment.DIRECTORY_PICTURES),
|
|
72
|
+
new View.OnClickListener() {
|
|
73
|
+
public void onClick(View v) {
|
|
74
|
+
createExternalStoragePublicPicture();
|
|
75
|
+
updateExternalStorageState();
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
new View.OnClickListener() {
|
|
79
|
+
public void onClick(View v) {
|
|
80
|
+
deleteExternalStoragePublicPicture();
|
|
81
|
+
updateExternalStorageState();
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
mLayout.addView(mExternalStoragePublicPicture.mRoot);
|
|
85
|
+
mExternalStoragePrivatePicture = createStorageControls(
|
|
86
|
+
"Picture getExternalFilesDir",
|
|
87
|
+
getExternalFilesDir(Environment.DIRECTORY_PICTURES),
|
|
88
|
+
new View.OnClickListener() {
|
|
89
|
+
public void onClick(View v) {
|
|
90
|
+
createExternalStoragePrivatePicture();
|
|
91
|
+
updateExternalStorageState();
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
new View.OnClickListener() {
|
|
95
|
+
public void onClick(View v) {
|
|
96
|
+
deleteExternalStoragePrivatePicture();
|
|
97
|
+
updateExternalStorageState();
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
mLayout.addView(mExternalStoragePrivatePicture.mRoot);
|
|
101
|
+
mExternalStoragePrivateFile = createStorageControls(
|
|
102
|
+
"File getExternalFilesDir",
|
|
103
|
+
getExternalFilesDir(null),
|
|
104
|
+
new View.OnClickListener() {
|
|
105
|
+
public void onClick(View v) {
|
|
106
|
+
createExternalStoragePrivateFile();
|
|
107
|
+
updateExternalStorageState();
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
new View.OnClickListener() {
|
|
111
|
+
public void onClick(View v) {
|
|
112
|
+
deleteExternalStoragePrivateFile();
|
|
113
|
+
updateExternalStorageState();
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
mLayout.addView(mExternalStoragePrivateFile.mRoot);
|
|
117
|
+
|
|
118
|
+
startWatchingExternalStorage();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
@Override
|
|
122
|
+
protected void onDestroy() {
|
|
123
|
+
super.onDestroy();
|
|
124
|
+
stopWatchingExternalStorage();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
void handleExternalStorageState(boolean available, boolean writeable) {
|
|
128
|
+
boolean has = hasExternalStoragePublicPicture();
|
|
129
|
+
mExternalStoragePublicPicture.mCreate.setEnabled(writeable && !has);
|
|
130
|
+
mExternalStoragePublicPicture.mDelete.setEnabled(writeable && has);
|
|
131
|
+
has = hasExternalStoragePrivatePicture();
|
|
132
|
+
mExternalStoragePrivatePicture.mCreate.setEnabled(writeable && !has);
|
|
133
|
+
mExternalStoragePrivatePicture.mDelete.setEnabled(writeable && has);
|
|
134
|
+
has = hasExternalStoragePrivateFile();
|
|
135
|
+
mExternalStoragePrivateFile.mCreate.setEnabled(writeable && !has);
|
|
136
|
+
mExternalStoragePrivateFile.mDelete.setEnabled(writeable && has);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
BroadcastReceiver mExternalStorageReceiver;
|
|
141
|
+
boolean mExternalStorageAvailable = false;
|
|
142
|
+
boolean mExternalStorageWriteable = false;
|
|
143
|
+
|
|
144
|
+
void updateExternalStorageState() {
|
|
145
|
+
String state = Environment.getExternalStorageState();
|
|
146
|
+
if (Environment.MEDIA_MOUNTED.equals(state)) {
|
|
147
|
+
mExternalStorageAvailable = mExternalStorageWriteable = true;
|
|
148
|
+
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
|
|
149
|
+
mExternalStorageAvailable = true;
|
|
150
|
+
mExternalStorageWriteable = false;
|
|
151
|
+
} else {
|
|
152
|
+
mExternalStorageAvailable = mExternalStorageWriteable = false;
|
|
153
|
+
}
|
|
154
|
+
handleExternalStorageState(mExternalStorageAvailable,
|
|
155
|
+
mExternalStorageWriteable);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
void startWatchingExternalStorage() {
|
|
159
|
+
mExternalStorageReceiver = new BroadcastReceiver() {
|
|
160
|
+
@Override
|
|
161
|
+
public void onReceive(Context context, Intent intent) {
|
|
162
|
+
Log.i("test", "Storage: " + intent.getData());
|
|
163
|
+
updateExternalStorageState();
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
IntentFilter filter = new IntentFilter();
|
|
167
|
+
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
|
|
168
|
+
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
|
|
169
|
+
registerReceiver(mExternalStorageReceiver, filter);
|
|
170
|
+
updateExternalStorageState();
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
void stopWatchingExternalStorage() {
|
|
174
|
+
unregisterReceiver(mExternalStorageReceiver);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
void createExternalStoragePublicPicture() {
|
|
180
|
+
// Create a path where we will place our picture in the user's
|
|
181
|
+
// public pictures directory. Note that you should be careful about
|
|
182
|
+
// what you place here, since the user often manages these files. For
|
|
183
|
+
// pictures and other media owned by the application, consider
|
|
184
|
+
// Context.getExternalMediaDir().
|
|
185
|
+
File path = Environment.getExternalStoragePublicDirectory(
|
|
186
|
+
Environment.DIRECTORY_PICTURES);
|
|
187
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
188
|
+
|
|
189
|
+
try {
|
|
190
|
+
// Make sure the Pictures directory exists.
|
|
191
|
+
path.mkdirs();
|
|
192
|
+
|
|
193
|
+
// Very simple code to copy a picture from the application's
|
|
194
|
+
// resource into the external file. Note that this code does
|
|
195
|
+
// no error checking, and assumes the picture is small (does not
|
|
196
|
+
// try to copy it in chunks). Note that if external storage is
|
|
197
|
+
// not currently mounted this will silently fail.
|
|
198
|
+
InputStream is = getResources().openRawResource(R.drawable.balloons);
|
|
199
|
+
OutputStream os = new FileOutputStream(file);
|
|
200
|
+
byte[] data = new byte[is.available()];
|
|
201
|
+
is.read(data);
|
|
202
|
+
os.write(data);
|
|
203
|
+
is.close();
|
|
204
|
+
os.close();
|
|
205
|
+
|
|
206
|
+
// Tell the media scanner about the new file so that it is
|
|
207
|
+
// immediately available to the user.
|
|
208
|
+
MediaScannerConnection.scanFile(this,
|
|
209
|
+
new String[] { file.toString() }, null,
|
|
210
|
+
new MediaScannerConnection.OnScanCompletedListener() {
|
|
211
|
+
public void onScanCompleted(String path, Uri uri) {
|
|
212
|
+
Log.i("ExternalStorage", "Scanned " + path + ":");
|
|
213
|
+
Log.i("ExternalStorage", "-> uri=" + uri);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
} catch (IOException e) {
|
|
217
|
+
// Unable to create file, likely because external storage is
|
|
218
|
+
// not currently mounted.
|
|
219
|
+
Log.w("ExternalStorage", "Error writing " + file, e);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
void deleteExternalStoragePublicPicture() {
|
|
224
|
+
// Create a path where we will place our picture in the user's
|
|
225
|
+
// public pictures directory and delete the file. If external
|
|
226
|
+
// storage is not currently mounted this will fail.
|
|
227
|
+
File path = Environment.getExternalStoragePublicDirectory(
|
|
228
|
+
Environment.DIRECTORY_PICTURES);
|
|
229
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
230
|
+
file.delete();
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
boolean hasExternalStoragePublicPicture() {
|
|
234
|
+
// Create a path where we will place our picture in the user's
|
|
235
|
+
// public pictures directory and check if the file exists. If
|
|
236
|
+
// external storage is not currently mounted this will think the
|
|
237
|
+
// picture doesn't exist.
|
|
238
|
+
File path = Environment.getExternalStoragePublicDirectory(
|
|
239
|
+
Environment.DIRECTORY_PICTURES);
|
|
240
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
241
|
+
return file.exists();
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
void createExternalStoragePrivatePicture() {
|
|
247
|
+
// Create a path where we will place our picture in our own private
|
|
248
|
+
// pictures directory. Note that we don't really need to place a
|
|
249
|
+
// picture in DIRECTORY_PICTURES, since the media scanner will see
|
|
250
|
+
// all media in these directories; this may be useful with other
|
|
251
|
+
// media types such as DIRECTORY_MUSIC however to help it classify
|
|
252
|
+
// your media for display to the user.
|
|
253
|
+
File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
|
|
254
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
255
|
+
|
|
256
|
+
try {
|
|
257
|
+
// Very simple code to copy a picture from the application's
|
|
258
|
+
// resource into the external file. Note that this code does
|
|
259
|
+
// no error checking, and assumes the picture is small (does not
|
|
260
|
+
// try to copy it in chunks). Note that if external storage is
|
|
261
|
+
// not currently mounted this will silently fail.
|
|
262
|
+
InputStream is = getResources().openRawResource(R.drawable.balloons);
|
|
263
|
+
OutputStream os = new FileOutputStream(file);
|
|
264
|
+
byte[] data = new byte[is.available()];
|
|
265
|
+
is.read(data);
|
|
266
|
+
os.write(data);
|
|
267
|
+
is.close();
|
|
268
|
+
os.close();
|
|
269
|
+
|
|
270
|
+
// Tell the media scanner about the new file so that it is
|
|
271
|
+
// immediately available to the user.
|
|
272
|
+
MediaScannerConnection.scanFile(this,
|
|
273
|
+
new String[] { file.toString() }, null,
|
|
274
|
+
new MediaScannerConnection.OnScanCompletedListener() {
|
|
275
|
+
public void onScanCompleted(String path, Uri uri) {
|
|
276
|
+
Log.i("ExternalStorage", "Scanned " + path + ":");
|
|
277
|
+
Log.i("ExternalStorage", "-> uri=" + uri);
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
} catch (IOException e) {
|
|
281
|
+
// Unable to create file, likely because external storage is
|
|
282
|
+
// not currently mounted.
|
|
283
|
+
Log.w("ExternalStorage", "Error writing " + file, e);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
void deleteExternalStoragePrivatePicture() {
|
|
288
|
+
// Create a path where we will place our picture in the user's
|
|
289
|
+
// public pictures directory and delete the file. If external
|
|
290
|
+
// storage is not currently mounted this will fail.
|
|
291
|
+
File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
|
|
292
|
+
if (path != null) {
|
|
293
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
294
|
+
file.delete();
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
boolean hasExternalStoragePrivatePicture() {
|
|
299
|
+
// Create a path where we will place our picture in the user's
|
|
300
|
+
// public pictures directory and check if the file exists. If
|
|
301
|
+
// external storage is not currently mounted this will think the
|
|
302
|
+
// picture doesn't exist.
|
|
303
|
+
File path = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
|
|
304
|
+
if (path != null) {
|
|
305
|
+
File file = new File(path, "DemoPicture.jpg");
|
|
306
|
+
return file.exists();
|
|
307
|
+
}
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
void createExternalStoragePrivateFile() {
|
|
314
|
+
// Create a path where we will place our private file on external
|
|
315
|
+
// storage.
|
|
316
|
+
File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
// Very simple code to copy a picture from the application's
|
|
320
|
+
// resource into the external file. Note that this code does
|
|
321
|
+
// no error checking, and assumes the picture is small (does not
|
|
322
|
+
// try to copy it in chunks). Note that if external storage is
|
|
323
|
+
// not currently mounted this will silently fail.
|
|
324
|
+
InputStream is = getResources().openRawResource(R.drawable.balloons);
|
|
325
|
+
OutputStream os = new FileOutputStream(file);
|
|
326
|
+
byte[] data = new byte[is.available()];
|
|
327
|
+
is.read(data);
|
|
328
|
+
os.write(data);
|
|
329
|
+
is.close();
|
|
330
|
+
os.close();
|
|
331
|
+
} catch (IOException e) {
|
|
332
|
+
// Unable to create file, likely because external storage is
|
|
333
|
+
// not currently mounted.
|
|
334
|
+
Log.w("ExternalStorage", "Error writing " + file, e);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
void deleteExternalStoragePrivateFile() {
|
|
339
|
+
// Get path for the file on external storage. If external
|
|
340
|
+
// storage is not currently mounted this will fail.
|
|
341
|
+
File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
|
|
342
|
+
if (file != null) {
|
|
343
|
+
file.delete();
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
boolean hasExternalStoragePrivateFile() {
|
|
348
|
+
// Get path for the file on external storage. If external
|
|
349
|
+
// storage is not currently mounted this will fail.
|
|
350
|
+
File file = new File(getExternalFilesDir(null), "DemoFile.jpg");
|
|
351
|
+
if (file != null) {
|
|
352
|
+
return file.exists();
|
|
353
|
+
}
|
|
354
|
+
return false;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
Item createStorageControls(CharSequence label, File path,
|
|
359
|
+
View.OnClickListener createClick,
|
|
360
|
+
View.OnClickListener deleteClick) {
|
|
361
|
+
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
|
|
362
|
+
Item item = new Item();
|
|
363
|
+
item.mRoot = inflater.inflate(R.layout.external_storage_item, null);
|
|
364
|
+
TextView tv = (TextView)item.mRoot.findViewById(R.id.label);
|
|
365
|
+
tv.setText(label);
|
|
366
|
+
if (path != null) {
|
|
367
|
+
tv = (TextView)item.mRoot.findViewById(R.id.path);
|
|
368
|
+
tv.setText(path.toString());
|
|
369
|
+
}
|
|
370
|
+
item.mCreate = (Button)item.mRoot.findViewById(R.id.create);
|
|
371
|
+
item.mCreate.setOnClickListener(createClick);
|
|
372
|
+
item.mDelete = (Button)item.mRoot.findViewById(R.id.delete);
|
|
373
|
+
item.mDelete.setOnClickListener(deleteClick);
|
|
374
|
+
return item;
|
|
375
|
+
}
|
|
376
|
+
}
|