实例介绍
【实例简介】
《精通 Android 3》 是一本好书,这个书上的例子便是学号这本书的媒介,所有源代码都在这个附件中!
【实例截图】
【核心代码】
ProAndroid3源代码
└── Pro Android 3 Source Code
├── First_Readme.txt
├── ProAndroid3_Ch03_Resources
│ └── TestResources
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── test.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── book
│ │ │ └── resources
│ │ │ ├── BaseTester.class
│ │ │ ├── HelloWorldActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── MonitoredActivity.class
│ │ │ ├── MonitoredDebugActivity.class
│ │ │ ├── MyApplication.class
│ │ │ ├── R$array.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$dimen.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$plurals.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── ResourceTester.class
│ │ │ └── TestActivity.class
│ │ ├── resources.ap_
│ │ └── TestResources.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── book
│ │ └── resources
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ ├── my_rounded_rectangle.xml
│ │ │ ├── robot.png
│ │ │ └── sample_image.png
│ │ ├── layout
│ │ │ ├── debug_activity_layout.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ ├── values
│ │ │ ├── strings1.xml
│ │ │ └── strings.xml
│ │ ├── values-en
│ │ │ └── strings_en.xml
│ │ ├── values-en-port
│ │ │ └── strings_en_port.xml
│ │ ├── values-en-rUS
│ │ │ └── strings_en_us.xml
│ │ ├── values-port
│ │ │ └── strings_port.xml
│ │ └── xml
│ │ └── test.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── book
│ └── resources
│ ├── BaseTester.java
│ ├── HelloWorldActivity.java
│ ├── IReportBack.java
│ ├── MonitoredActivity.java
│ ├── MonitoredDebugActivity.java
│ ├── MyApplication.java
│ ├── ResourceTester.java
│ └── TestActivity.java
├── ProAndroid3_Ch04_ContentProviders
│ └── TestProvider
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── book
│ │ │ └── provider
│ │ │ ├── BaseTester.class
│ │ │ ├── BookProvider$DatabaseHelper.class
│ │ │ ├── BookProvider.class
│ │ │ ├── BookProviderMetaData$BookTableMetaData.class
│ │ │ ├── BookProviderMetaData.class
│ │ │ ├── HelloWorld.class
│ │ │ ├── IReportBack.class
│ │ │ ├── MonitoredActivity.class
│ │ │ ├── MonitoredDebugActivity.class
│ │ │ ├── MyApplication.class
│ │ │ ├── ProviderTester.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestProvider.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── book
│ │ └── provider
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ ├── debug_activity_layout.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── book
│ └── provider
│ ├── BaseTester.java
│ ├── BookProvider.java
│ ├── BookProviderMetaData.java
│ ├── HelloWorld.java
│ ├── IReportBack.java
│ ├── MonitoredActivity.java
│ ├── MonitoredDebugActivity.java
│ ├── MyApplication.java
│ └── ProviderTester.java
├── ProAndroid3_Ch05_Intents
│ └── TestIntents
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── testintents
│ │ │ ├── BasicViewActivity.class
│ │ │ ├── IntentsUtils.class
│ │ │ ├── MainActivity$1.class
│ │ │ ├── MainActivity.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestIntents.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── testintents
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── basic_view.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── testintents
│ ├── BasicViewActivity.java
│ ├── IntentsUtils.java
│ └── MainActivity.java
├── ProAndroid3_Ch06_Controls
│ └── Common Controls
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── commoncontrols
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── button_focused.png
│ │ │ ├── button_pressed.png
│ │ │ ├── icon.png
│ │ │ ├── imagebuttonselector.xml
│ │ │ ├── manatee00.jpg
│ │ │ ├── manatee01.jpg
│ │ │ ├── manatee02.jpg
│ │ │ ├── manatee03.jpg
│ │ │ ├── manatee04.jpg
│ │ │ ├── manatee05.jpg
│ │ │ ├── manatee06.jpg
│ │ │ ├── manatee07.jpg
│ │ │ ├── manatee08.jpg
│ │ │ ├── manatee09.jpg
│ │ │ ├── manatee10.jpg
│ │ │ ├── manatee11.jpg
│ │ │ ├── manatee12.jpg
│ │ │ ├── manatee13.jpg
│ │ │ ├── manatee14.jpg
│ │ │ ├── manatee15.jpg
│ │ │ ├── manatee16.jpg
│ │ │ ├── manatee17.jpg
│ │ │ ├── manatee18.jpg
│ │ │ ├── manatee19.jpg
│ │ │ ├── manatee20.jpg
│ │ │ ├── manatee21.jpg
│ │ │ ├── manatee22.jpg
│ │ │ ├── manatee23.jpg
│ │ │ ├── manatee24.jpg
│ │ │ ├── manatee25.jpg
│ │ │ ├── manatee26.jpg
│ │ │ ├── manatee27.jpg
│ │ │ ├── manatee28.jpg
│ │ │ ├── manatee29.jpg
│ │ │ ├── manatee30.jpg
│ │ │ ├── manatee31.jpg
│ │ │ ├── manatee32.jpg
│ │ │ └── manatee33.jpg
│ │ ├── layout
│ │ │ ├── buttons.xml
│ │ │ ├── checkbox.xml
│ │ │ ├── datetimepicker.xml
│ │ │ ├── gallery.xml
│ │ │ ├── gridimage.xml
│ │ │ ├── gridviewcustom.xml
│ │ │ ├── gridview.xml
│ │ │ ├── imageview.xml
│ │ │ ├── listing6_41.xml
│ │ │ ├── listing6_42.xml
│ │ │ ├── listing6_43.xml
│ │ │ ├── listing6_45.xml
│ │ │ ├── listing6_46.xml
│ │ │ ├── list.xml
│ │ │ ├── radiogroup.xml
│ │ │ ├── spinner.xml
│ │ │ ├── styles.xml
│ │ │ └── textview.xml
│ │ └── values
│ │ ├── planets.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src
│ └── com
│ └── androidbook
│ └── commoncontrols
│ ├── ButtonActivity.java
│ ├── CheckBoxActivity.java
│ ├── DateTimePickerActivity.java
│ ├── FrameLayoutActivity.java
│ ├── GalleryActivity.java
│ ├── GridViewActivity.java
│ ├── GridViewCustomAdapter.java
│ ├── ImageViewActivity.java
│ ├── LayoutActivity.java
│ ├── ListViewActivity2.java
│ ├── ListViewActivity3.java
│ ├── ListViewActivity4.java
│ ├── ListViewActivity.java
│ ├── RadioGroupActivity.java
│ ├── SpinnerActivity.java
│ ├── StylesActivity.java
│ └── TextViewActivity.java
├── ProAndroid3_Ch07_Menus
│ └── TestMenus
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── testmenus
│ │ │ ├── IntentsUtils.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$dimen.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ └── SampleMenusActivity.class
│ │ ├── resources.ap_
│ │ └── TestMenus.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── testmenus
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── frame_animation.xml
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ ├── icon.png
│ │ │ ├── numbers11.png
│ │ │ ├── numbers12.png
│ │ │ ├── numbers13.png
│ │ │ ├── numbers14.png
│ │ │ ├── numbers15.png
│ │ │ ├── numbers16.png
│ │ │ ├── numbers17.png
│ │ │ ├── numbers18.png
│ │ │ ├── numbers19.png
│ │ │ ├── numbers1.png
│ │ │ ├── numbers2.png
│ │ │ ├── numbers3.png
│ │ │ ├── numbers4.png
│ │ │ ├── numbers5.png
│ │ │ ├── numbers6.png
│ │ │ ├── photo1.jpg
│ │ │ ├── photo2.jpg
│ │ │ ├── photo3.jpg
│ │ │ ├── photo4.jpg
│ │ │ ├── photo5.jpg
│ │ │ ├── photo6.jpg
│ │ │ ├── photo8.jpg
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── my_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── testmenus
│ ├── IntentsUtils.java
│ └── SampleMenusActivity.java
├── ProAndroid3_Ch08_Dialogs
│ └── SampleDialogs
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── sampledialogs
│ │ │ ├── Alerts.class
│ │ │ ├── DialogRegistry.class
│ │ │ ├── EmptyOnClickListener.class
│ │ │ ├── GenericManagedAlertDialog.class
│ │ │ ├── GenericPromptDialog.class
│ │ │ ├── IDialogFinishedCallBack.class
│ │ │ ├── IDialogProtocol.class
│ │ │ ├── IStringPrompterCallBack.class
│ │ │ ├── MainActivity.class
│ │ │ ├── ManagedActivityDialog.class
│ │ │ ├── ManagedDialogsActivity.class
│ │ │ ├── PromptListener.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── SampleDialogs.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── sampledialogs
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── main.xml
│ │ │ ├── promptdialog.xml
│ │ │ └── test
│ │ │ └── test.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ ├── values
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── test.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── sampledialogs
│ ├── Alerts.java
│ ├── DialogRegistry.java
│ ├── EmptyOnClickListener.java
│ ├── GenericManagedAlertDialog.java
│ ├── GenericPromptDialog.java
│ ├── IDialogFinishedCallBack.java
│ ├── IDialogProtocol.java
│ ├── IStringPrompterCallBack.java
│ ├── MainActivity.java
│ ├── ManagedActivityDialog.java
│ ├── ManagedDialogsActivity.java
│ └── PromptListener.java
├── ProAndroid3_Ch09_Preferences
│ ├── PreferencesDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ ├── arrays.xml
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ ├── chkbox.xml
│ │ │ ├── flightoptions.xml
│ │ │ ├── foodoptions1.xml
│ │ │ ├── foodoptions2.xml
│ │ │ ├── packagepref.xml
│ │ │ └── ringtone.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── CheckBoxPreferenceActivity.java
│ │ ├── EditTextPreferenceActivity.java
│ │ ├── FlightPreferenceActivity.java
│ │ ├── FoodPreferenceActivity.java
│ │ ├── MainActivity.java
│ │ └── RingtonePreferenceActivity.java
│ ├── PreferencesProgDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── flightoptions.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── FlightPreferenceActivity.java
│ │ └── MainActivity.java
│ ├── PreferencesWithDefaultsDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ ├── arrays.xml
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── flightoptions.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── FlightPreferenceActivity.java
│ │ └── MainActivity.java
│ └── SavingStateDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── preferences
│ └── sample
│ └── MainActivity.java
├── ProAndroid3_Ch10_Security
│ ├── ClientofCustomPermission
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── client
│ │ │ └── cust
│ │ │ └── perm
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── client
│ │ └── cust
│ │ └── perm
│ │ └── ClientCustPermMainActivity.java
│ └── CustomPermission
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── cust
│ │ └── perm
│ │ ├── Manifest.java
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── cust
│ └── perm
│ ├── CustPermMainActivity.java
│ └── PrivActivity.java
├── ProAndroid3_Ch11_Services
│ ├── ApplicationEx
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── ApplicationEx2.2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── ApplicationExAndroidHttpClient
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── AsyncTaskDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── asynctask
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── asynctask
│ │ ├── CustomHttpClient.java
│ │ ├── DownloadImageTask.java
│ │ └── HttpActivity.java
│ ├── AsyncTaskRotateDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── asynctaskrotate
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── asynctaskrotate
│ │ ├── CustomHttpClient.java
│ │ ├── DownloadImageTask.java
│ │ └── HttpActivity.java
│ ├── DownloadManagerDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── download
│ │ │ └── R.java
│ │ ├── proguard.cfg
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── download
│ │ └── MainActivity.java
│ ├── HttpSingleton
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httpsingleton
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httpsingleton
│ │ ├── CustomHttpClient.java
│ │ └── HttpActivity.java
│ ├── MultiPartPost
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── data.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── multipart
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── multipart
│ │ └── TestMultipartPost.java
│ ├── SimpleHTTPGet
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httpget
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httpget
│ │ └── HttpGetDemo.java
│ ├── SimpleHTTPPost
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httppost
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httppost
│ │ └── HttpPostDemo.java
│ ├── SimpleLocalService
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── simplelocal
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── emo_im_winking.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── simplelocal
│ │ ├── BackgroundService.java
│ │ └── MainActivity.java
│ ├── StockQuoteClient
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ ├── stockquoteclient
│ │ │ │ └── R.java
│ │ │ └── stockquoteservice
│ │ │ └── IStockQuoteService.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ ├── stockquoteclient
│ │ │ └── MainActivity.java
│ │ └── stockquoteservice
│ │ └── IStockQuoteService.aidl
│ ├── StockQuoteClient2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ ├── sayed
│ │ │ │ └── R.java
│ │ │ └── syh
│ │ │ └── IStockQuoteService.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ ├── sayed
│ │ │ └── MainActivity.java
│ │ └── syh
│ │ ├── IStockQuoteService.aidl
│ │ ├── Person.aidl
│ │ └── Person.java
│ ├── StockQuoteService
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── stockquoteservice
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── stockquoteservice
│ │ ├── IStockQuoteService.aidl
│ │ └── StockQuoteService.java
│ ├── StockQuoteService2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── stock2
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── emo_im_happy.png
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── stock2
│ │ ├── IStockQuoteService.aidl
│ │ ├── MainActivity.java
│ │ ├── Person.aidl
│ │ ├── Person.java
│ │ └── StockQuoteService2.java
│ ├── StockQuoteService3
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── stock3
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── emo_im_happy.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── stock3
│ │ ├── IStockQuoteService.aidl
│ │ ├── MainActivity.java
│ │ ├── Person.aidl
│ │ ├── Person.java
│ │ └── StockQuoteService3.java
│ └── TranslateDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── translation
│ │ ├── ITranslate.java
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ ├── arrays.xml
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── translation
│ ├── ITranslate.aidl
│ ├── MainActivity.java
│ ├── TranslateService.java
│ └── Translator.java
├── ProAndroid3_Ch12_Libraries
│ ├── TestLibrary
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ └── testlibrary
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ └── TestLibActivity.class
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ └── testlibrary
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ └── lib_main.xml
│ │ │ └── menu
│ │ │ └── lib_main_menu.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── library
│ │ └── testlibrary
│ │ └── TestLibActivity.java
│ └── TestLibraryApp
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ ├── testlibrary
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R.class
│ │ │ │ └── TestLibActivity.class
│ │ │ └── testlibraryapp
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ └── TestAppActivity.class
│ │ ├── resources.ap_
│ │ └── TestLibraryApp.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── library
│ │ ├── testlibrary
│ │ │ └── R.java
│ │ └── testlibraryapp
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── library
│ └── testlibraryapp
│ └── TestAppActivity.java
├── ProAndroid3_Ch13_Handlers
│ └── TestHandlers
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── handlers
│ │ │ ├── DeferWorkHandler.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── ReportStatusHandler.class
│ │ │ ├── TestHandlersDriverActivity.class
│ │ │ ├── Utils.class
│ │ │ └── WorkerThreadRunnable.class
│ │ ├── resources.ap_
│ │ └── TestHandlersBook3v2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── handlers
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── main_menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── handlers
│ ├── DeferWorkHandler.java
│ ├── ReportStatusHandler.java
│ ├── TestHandlersDriverActivity.java
│ ├── Utils.java
│ └── WorkerThreadRunnable.java
├── ProAndroid3_Ch14_TestReceivers
│ ├── StandaloneBCR
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── salbcr
│ │ │ │ ├── ALongRunningNonStickyBroadcastService.class
│ │ │ │ ├── ALongRunningReceiver.class
│ │ │ │ ├── GreenRoomOriginal.class
│ │ │ │ ├── LightedGreenRoom.class
│ │ │ │ ├── NotificationReceiver.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R.class
│ │ │ │ ├── StandaloneReceiver.class
│ │ │ │ ├── Test30SecBCR.class
│ │ │ │ ├── Test30SecBCRService.class
│ │ │ │ ├── Test60SecBCR.class
│ │ │ │ ├── Test60SecBCRService.class
│ │ │ │ ├── TestLRBCR.class
│ │ │ │ ├── TestLRBCRService.class
│ │ │ │ ├── TestPlain30SecBCR.class
│ │ │ │ ├── TestPlain30SecBCRService.class
│ │ │ │ └── Utils.class
│ │ │ ├── resources.ap_
│ │ │ └── StandaloneBroadcastReceiver.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── salbcr
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ ├── layout_multi_view_test_view.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── salbcr
│ │ ├── ALongRunningNonStickyBroadcastService.java
│ │ ├── ALongRunningReceiver.java
│ │ ├── GreenRoomOriginal.java
│ │ ├── LightedGreenRoom.java
│ │ ├── NotificationReceiver.java
│ │ ├── StandaloneReceiver.java
│ │ ├── Test30SecBCR.java
│ │ ├── Test30SecBCRService.java
│ │ ├── Test60SecBCR.java
│ │ ├── Test60SecBCRService.java
│ │ ├── TestLRBCR.java
│ │ ├── TestLRBCRService.java
│ │ ├── TestPlain30SecBCR.java
│ │ ├── TestPlain30SecBCRService.java
│ │ └── Utils.java
│ └── TestBCR
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── bcr
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ ├── TestBCRActivity.class
│ │ │ ├── TestReceiver2.class
│ │ │ ├── TestReceiver.class
│ │ │ ├── TestTimeDelayReceiver.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestBroadcastReceiverBook3V2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── bcr
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── bcr
│ ├── TestBCRActivity.java
│ ├── TestReceiver2.java
│ ├── TestReceiver.java
│ ├── TestTimeDelayReceiver.java
│ └── Utils.java
├── ProAndroid3_Ch15_AlarmManager
│ └── TestAlarmManager
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── alarms
│ │ │ ├── AlarmIntentPrimacyTester.class
│ │ │ ├── BaseTester.class
│ │ │ ├── CancelRepeatingAlarmTester.class
│ │ │ ├── IReportBack.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── ScheduleIntentMultipleTimesTester.class
│ │ │ ├── SendAlarmOnceTester.class
│ │ │ ├── SendRepeatingAlarmTester.class
│ │ │ ├── TestAlarmsDriverActivity.class
│ │ │ ├── TestReceiver.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestAlarmManager.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── alarms
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── main_menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── alarms
│ ├── AlarmIntentPrimacyTester.java
│ ├── BaseTester.java
│ ├── CancelRepeatingAlarmTester.java
│ ├── IReportBack.java
│ ├── ScheduleIntentMultipleTimesTester.java
│ ├── SendAlarmOnceTester.java
│ ├── SendRepeatingAlarmTester.java
│ ├── TestAlarmsDriverActivity.java
│ ├── TestReceiver.java
│ └── Utils.java
├── ProAndroid3_Ch16_Animation
│ ├── SampleFrameAnimation
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── sample.txt
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── ai
│ │ │ │ └── android
│ │ │ │ └── frameanimation
│ │ │ │ ├── FrameAnimationActivity$1.class
│ │ │ │ ├── FrameAnimationActivity.class
│ │ │ │ ├── MainActivity.class
│ │ │ │ ├── R$anim.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$raw.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ └── R.class
│ │ │ ├── resources.ap_
│ │ │ └── SampleFrameAnimation.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── frameanimation
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── anim
│ │ │ │ ├── layout_bottom_to_top_slide.xml
│ │ │ │ └── slide_right.xml
│ │ │ ├── drawable
│ │ │ │ ├── colored_ball1.png
│ │ │ │ ├── colored_ball2.png
│ │ │ │ ├── colored_ball3.png
│ │ │ │ ├── colored_ball4.png
│ │ │ │ ├── colored_ball5.png
│ │ │ │ ├── colored_ball6.png
│ │ │ │ ├── colored_ball7.png
│ │ │ │ ├── colored_ball8.png
│ │ │ │ ├── colored_ball9.png
│ │ │ │ ├── frame_animation.xml
│ │ │ │ ├── icon48x48_1.png
│ │ │ │ ├── icon48x48_2.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── animations_main_screen.xml
│ │ │ │ ├── frame_animations_layout.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ ├── raw
│ │ │ │ └── test.txt
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── test.xml
│ │ └── src
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── frameanimation
│ │ ├── FrameAnimationActivity.java
│ │ └── MainActivity.java
│ ├── SampleLayoutAnimation
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── ai
│ │ │ │ └── android
│ │ │ │ └── SampleLayoutAnimation
│ │ │ │ ├── LayoutAnimationActivity.class
│ │ │ │ ├── MainActivity.class
│ │ │ │ ├── R$anim.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$raw.class
│ │ │ │ ├── R$string.class
│ │ │ │ └── R.class
│ │ │ ├── resources.ap_
│ │ │ └── SampleLayoutAnimation.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── SampleLayoutAnimation
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── anim
│ │ │ │ ├── alpha_translate.xml
│ │ │ │ ├── alpha.xml
│ │ │ │ ├── list_layout_controller.xml
│ │ │ │ ├── rotate.xml
│ │ │ │ └── scale.xml
│ │ │ ├── drawable
│ │ │ │ ├── icon48x48_1.png
│ │ │ │ ├── icon48x48_2.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── list_layout.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ ├── raw
│ │ │ │ └── test.txt
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── SampleLayoutAnimation
│ │ ├── LayoutAnimationActivity.java
│ │ └── MainActivity.java
│ └── SampleViewAnimation
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── ExerciseSystemIntents
│ │ │ ├── IntentsUtils.class
│ │ │ ├── MainActivity.class
│ │ │ ├── R$anim.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ ├── ViewAnimation1.class
│ │ │ ├── ViewAnimation2.class
│ │ │ ├── ViewAnimation3.class
│ │ │ ├── ViewAnimationActivity$1.class
│ │ │ ├── ViewAnimationActivity.class
│ │ │ ├── ViewAnimation.class
│ │ │ └── ViewAnimationListener.class
│ │ ├── resources.ap_
│ │ └── SampleViewAnimation.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── ExerciseSystemIntents
│ │ └── R.java
│ ├── res
│ │ ├── anim
│ │ │ ├── alpha_translate.xml
│ │ │ ├── alpha.xml
│ │ │ ├── list_layout_controller.xml
│ │ │ ├── rotate.xml
│ │ │ └── scale.xml
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── list_layout.xml
│ │ │ ├── main.xml
│ │ │ ├── promptdialog.xml
│ │ │ └── test
│ │ │ └── test.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── ExerciseSystemIntents
│ ├── IntentsUtils.java
│ ├── MainActivity.java
│ ├── ViewAnimation1.java
│ ├── ViewAnimation2.java
│ ├── ViewAnimation3.java
│ ├── ViewAnimationActivity.java
│ ├── ViewAnimation.java
│ └── ViewAnimationListener.java
├── ProAndroid3_Ch17_Maps
│ ├── GeocodingDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── geocode.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ ├── FirstGeocodingDemoActivity.java
│ │ └── GeocodingDemoActivity.java
│ ├── LocationManagerDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── update
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── update
│ │ └── LocationUpdateDemoActivity.java
│ ├── MapViewDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── MapViewDemoActivity.java
│ ├── MyLocationDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── myoverlay
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── myoverlay
│ │ └── MyLocationDemoActivity.java
│ ├── MyLocationDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── myoverlay
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── myoverlay
│ │ ├── MyCustomLocationOverlay.java
│ │ └── MyLocationDemoActivity.java
│ ├── OverlayDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── androidmarker.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── mapmarker.PNG
│ │ │ │ ├── mm_blue.png
│ │ │ │ └── mm_pink.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── MappingOverlayActivity.java
│ └── ProximityAlertDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── proximity
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── location
│ └── proximity
│ ├── ProximityActivity.java
│ └── ProximityReceiver.java
├── ProAndroid3_Ch18_Telephony
│ ├── EmailviaIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── email
│ │ │ └── intent
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── email
│ │ └── intent
│ │ └── MainActivity.java
│ ├── PhoneCalls
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── phonecall
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── phonecall
│ │ └── demo
│ │ └── PhoneCallActivity.java
│ ├── SMSFolders
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sms
│ │ │ └── folders
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── sms_inbox.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sms
│ │ └── folders
│ │ └── SMSInboxDemo.java
│ └── TelephonyDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── telephony
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── telephony
│ ├── MySMSMonitor.java
│ └── TelephonyDemo.java
├── ProAndroid3_Ch19_Media
│ ├── AsyncPlayer
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── asyncplayer
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── asyncplayer
│ │ └── MainActivity.java
│ ├── AudioRecord
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── audiorecord
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── audiorecord
│ │ └── MainActivity.java
│ ├── AudioRecordWithCallbacks
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── audiorecord
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── audiorecord
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent3
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent4
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── MediaDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── mediademo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ └── music_file.mp3
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── mediademo
│ │ └── MainActivity.java
│ ├── MediaScanner
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── scanner
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── scanner
│ │ └── MediaScannerActivity.java
│ ├── MediaScannerBroadcast
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── scanner
│ │ │ └── broadcast
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── scanner
│ │ └── broadcast
│ │ └── MainActivity.java
│ ├── RecordAudio
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── audio
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── record.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── audio
│ │ └── RecorderActivity.java
│ ├── RecordAudioWithIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── audio
│ │ │ └── intent
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── audio
│ │ └── intent
│ │ └── UsingMediaStoreActivity.java
│ ├── RecordVideo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── video
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mainold.xml
│ │ │ ├── layout-land
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── video
│ │ └── MainActivity.java
│ ├── SoundPoolDemo
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── dogbark.mp3
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── soundpool
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ ├── chimp.mp3
│ │ │ │ ├── crickets.mp3
│ │ │ │ ├── roar.mp3
│ │ │ │ └── rooster.mp3
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── soundpool
│ │ └── MainActivity.java
│ └── VideoDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── videodemo
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── videodemo
│ └── MainActivity.java
├── ProAndroid3_Ch20_OpenGL
│ └── TestOpenGL
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── OpenGL
│ │ │ ├── AbstractRenderer.class
│ │ │ ├── AbstractSingleTexturedRenderer.class
│ │ │ ├── AnimatedSimpleTriangleRenderer.class
│ │ │ ├── AnimatedTriangleActivity.class
│ │ │ ├── ES20AbstractRenderer.class
│ │ │ ├── ES20SimpleTriangleRenderer.class
│ │ │ ├── GLES20TestRenderer.class
│ │ │ ├── GLES20TriangleRenderer.class
│ │ │ ├── MultiViewTestHarnessActivity.class
│ │ │ ├── OpenGL15TestHarnessActivity.class
│ │ │ ├── OpenGL20MultiViewTestHarnessActivity.class
│ │ │ ├── OpenGLTestHarnessActivity.class
│ │ │ ├── PolygonRenderer.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R.class
│ │ │ ├── RegularPolygon.class
│ │ │ ├── SimpleRectangleRenderer.class
│ │ │ ├── SimpleTriangleRenderer2.class
│ │ │ ├── SimpleTriangleRenderer.class
│ │ │ ├── SquareRenderer.class
│ │ │ ├── TestOpenGLMainDriverActivity.class
│ │ │ ├── TexturedPolygonRenderer.class
│ │ │ └── TexturedSquareRenderer.class
│ │ ├── resources.ap_
│ │ └── TestOpenGL.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── OpenGL
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── raw
│ │ └── robot.png
│ └── src
│ └── com
│ └── androidbook
│ └── OpenGL
│ ├── AbstractRenderer.java
│ ├── AbstractSingleTexturedRenderer.java
│ ├── AnimatedSimpleTriangleRenderer.java
│ ├── AnimatedTriangleActivity.java
│ ├── ES20AbstractRenderer.java
│ ├── ES20SimpleTriangleRenderer.java
│ ├── GLES20TestRenderer.java
│ ├── GLES20TriangleRenderer.java
│ ├── MultiViewTestHarnessActivity.java
│ ├── OpenGL15TestHarnessActivity.java
│ ├── OpenGL20MultiViewTestHarnessActivity.java
│ ├── OpenGLTestHarnessActivity.java
│ ├── PolygonRenderer.java
│ ├── RegularPolygon.java
│ ├── SimpleRectangleRenderer.java
│ ├── SimpleTriangleRenderer2.java
│ ├── SimpleTriangleRenderer.java
│ ├── SquareRenderer.java
│ ├── TestOpenGLMainDriverActivity.java
│ ├── TexturedPolygonRenderer.java
│ └── TexturedSquareRenderer.java
├── ProAndroid3_Ch21_LiveFolders
│ └── TestLiveFolders
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── livefolders
│ │ │ ├── AllContactsLiveFolderCreatorActivity.class
│ │ │ ├── BetterCursorWrapper.class
│ │ │ ├── MyContactsProvider.class
│ │ │ ├── MyCursor.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$string.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestLiveFolders.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── livefolders
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── livefolders
│ ├── AllContactsLiveFolderCreatorActivity.java
│ ├── BetterCursorWrapper.java
│ ├── MyContactsProvider.java
│ └── MyCursor.java
├── ProAndroid3_Ch22_Widgets
│ └── TestWidgets
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── BDayWidget
│ │ │ ├── APrefWidgetModel.class
│ │ │ ├── BDayWidgetModel.class
│ │ │ ├── BDayWidgetProvider.class
│ │ │ ├── ConfigureBDayWidgetActivity$1.class
│ │ │ ├── ConfigureBDayWidgetActivity.class
│ │ │ ├── IWidgetModelSaveContract.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestWidgets.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── BDayWidget
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── box1.xml
│ │ │ ├── icon.png
│ │ │ ├── robot.png
│ │ │ ├── shape_1.xml
│ │ │ ├── shape1.xml
│ │ │ ├── shape_2.xml
│ │ │ ├── shape_3.xml
│ │ │ ├── shape_4.xml
│ │ │ └── shape_5.xml
│ │ ├── layout
│ │ │ ├── bday_widget.xml
│ │ │ ├── edit_bday_widget.xml
│ │ │ ├── layout_multi_view_test_view_1.xml
│ │ │ ├── layout_multi_view_test_view.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── bday_appwidget_provider.xml
│ └── src
│ └── com
│ └── androidbook
│ └── BDayWidget
│ ├── APrefWidgetModel.java
│ ├── BDayWidgetModel.java
│ ├── BDayWidgetProvider.java
│ ├── ConfigureBDayWidgetActivity.java
│ ├── IWidgetModelSaveContract.java
│ └── Utils.java
├── ProAndroid3_Ch23_Search
│ ├── CustomSuggestionProvider
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── search
│ │ │ │ └── custom
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ ├── R.class
│ │ │ │ ├── SearchActivity.class
│ │ │ │ └── SuggestUrlProvider.class
│ │ │ ├── CustomSuggestionProvider.apk
│ │ │ └── resources.ap_
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── custom
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ └── layout_test_search_activity.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── searchable.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── custom
│ │ ├── SearchActivity.java
│ │ └── SuggestUrlProvider.java
│ ├── SearchRegularActivities
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── search
│ │ │ │ └── nosearch
│ │ │ │ ├── LocalSearchEnabledActivity.class
│ │ │ │ ├── NoSearchActivity.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ ├── R.class
│ │ │ │ ├── RegularActivity.class
│ │ │ │ ├── SearchActivity.class
│ │ │ │ └── SearchInvokerActivity.class
│ │ │ ├── resources.ap_
│ │ │ └── SearchRegularActivities.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── nosearch
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ ├── local_search_enabled_activity.xml
│ │ │ │ ├── main.xml
│ │ │ │ ├── no_search_activity.xml
│ │ │ │ ├── search_activity.xml
│ │ │ │ └── search_invoker_activity.xml
│ │ │ ├── menu
│ │ │ │ ├── main_menu.xml
│ │ │ │ └── search_invoker_menu.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── searchable.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── nosearch
│ │ ├── LocalSearchEnabledActivity.java
│ │ ├── NoSearchActivity.java
│ │ ├── RegularActivity.java
│ │ ├── SearchActivity.java
│ │ └── SearchInvokerActivity.java
│ └── SimpleSuggestionProvider
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── simplesp
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── SearchActivity.class
│ │ │ ├── SimpleMainActivity.class
│ │ │ └── SimpleSuggestionProvider.class
│ │ ├── resources.ap_
│ │ └── SimpleSuggestionProvider.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── simplesp
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ ├── layout_test_search_activity.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── reset_suggestions_menu.xml
│ │ ├── values
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── searchable.xml
│ └── src
│ └── com
│ └── androidbook
│ └── search
│ └── simplesp
│ ├── SearchActivity.java
│ ├── SimpleMainActivity.java
│ └── SimpleSuggestionProvider.java
├── ProAndroid3_Ch24_TextToSpeech
│ ├── TTSDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ ├── TTSDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ ├── TTSDemo2ShowLanguages
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ └── TTSDemo3
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── tts
│ └── demo
│ └── MainActivity.java
├── ProAndroid3_Ch25_Touchscreens
│ ├── GestureRevealer
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── gestures
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ ├── gesturelibrary
│ │ │ │ └── gestures_letters
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── gestures
│ │ └── MainActivity.java
│ ├── MultiTouchDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── multitouch
│ │ │ └── demo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── multitouch
│ │ └── demo1
│ │ └── MainActivity.java
│ ├── MultiTouchDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── multitouch
│ │ │ └── demo2
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── multitouch
│ │ └── demo2
│ │ └── MainActivity.java
│ ├── ScaleDetector
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── scaledetector
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── scaledetector
│ │ └── MainActivity.java
│ ├── StreetViewMaps
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── StreetViewMapsPinchZoom
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── StreetViewMapsPinchZoom2.2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── TouchDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── demo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── demo1
│ │ ├── BooleanButton.java
│ │ ├── FalseButton.java
│ │ ├── MainActivity.java
│ │ └── TrueButton.java
│ ├── TouchDragDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── dragdemo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── dragdemo1
│ │ ├── Dot.java
│ │ └── MainActivity.java
│ └── VelocityTracker
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── velocity
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── touch
│ └── velocity
│ └── MainActivity.java
├── ProAndroid3_Ch26_Sensors
│ ├── AccelerometerRecordToFile2.1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accel
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accel
│ │ └── MainActivity.java
│ ├── AccelerometerRecordToFileAlwaysOn
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accel
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accel
│ │ └── MainActivity.java
│ ├── AccelerometerSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accelerometer
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accelerometer
│ │ └── MainActivity.java
│ ├── CompassSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── compass
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── compass
│ │ └── MainActivity.java
│ ├── GravityDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── gravity
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── gravity
│ │ └── MainActivity.java
│ ├── GyroSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── gyro
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── gyro
│ │ └── MainActivity.java
│ ├── LightSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── light
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── light
│ │ └── MainActivity.java
│ ├── ProximitySensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── proximity
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── proximity
│ │ └── MainActivity.java
│ ├── SensorList
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensors
│ │ │ └── list
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensors
│ │ └── list
│ │ └── MainActivity.java
│ ├── TemperatureSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── temperature
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── temperature
│ │ └── MainActivity.java
│ └── VirtualJax
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── android
│ │ └── sensor
│ │ └── virtualjax
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── layout-land
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── android
│ └── sensor
│ └── virtualjax
│ └── MainActivity.java
├── ProAndroid3_Ch27_Contacts
│ └── TestContacts
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── contacts
│ │ │ ├── AccountsFunctionTester.class
│ │ │ ├── AddContactFunctionTester.class
│ │ │ ├── AggregatedContact.class
│ │ │ ├── AggregatedContactFunctionTester.class
│ │ │ ├── BaseTester.class
│ │ │ ├── ContactData.class
│ │ │ ├── ContactDataFunctionTester.class
│ │ │ ├── DebugActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── RawContact.class
│ │ │ ├── RawContactFunctionTester.class
│ │ │ ├── R.class
│ │ │ ├── TestContactsDriverActivity.class
│ │ │ ├── URIFunctionTester.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestContactsNext.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── contacts
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── debug_activity_layout.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── contacts
│ ├── AccountsFunctionTester.java
│ ├── AddContactFunctionTester.java
│ ├── AggregatedContactFunctionTester.java
│ ├── AggregatedContact.java
│ ├── BaseTester.java
│ ├── ContactDataFunctionTester.java
│ ├── ContactData.java
│ ├── DebugActivity.java
│ ├── IReportBack.java
│ ├── RawContactFunctionTester.java
│ ├── RawContact.java
│ ├── TestContactsDriverActivity.java
│ ├── URIFunctionTester.java
│ └── Utils.java
├── ProAndroid3_Ch29_Fragments
│ ├── DialogFragmentDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── fragments
│ │ │ └── dialogs
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── help_dialog.xml
│ │ │ │ ├── main.xml
│ │ │ │ └── prompt_dialog.xml
│ │ │ ├── menu
│ │ │ │ └── menu.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── dialogs
│ │ ├── AlertDialogFragment.java
│ │ ├── HelpDialogFragment.java
│ │ ├── MainActivity.java
│ │ ├── OnDialogDoneListener.java
│ │ └── PromptDialogFragment.java
│ ├── ShakespeareInstrumented
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── fragments
│ │ │ └── bard
│ │ │ └── R.java
│ │ ├── proguard.cfg
│ │ ├── res
│ │ │ ├── animator
│ │ │ │ ├── bounce_in_down.xml
│ │ │ │ ├── fade_in.xml
│ │ │ │ ├── fade_out.xml
│ │ │ │ ├── slide_in_left.xml
│ │ │ │ ├── slide_out_down.xml
│ │ │ │ └── slide_out_right.xml
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── details.xml
│ │ │ │ └── main.xml
│ │ │ ├── layout-land
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── bard
│ │ ├── DetailsActivity.java
│ │ ├── DetailsFragment.java
│ │ ├── MainActivity.java
│ │ ├── Shakespeare.java
│ │ └── TitlesFragment.java
│ └── ShakespeareSDK
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── bard
│ │ └── R.java
│ ├── proguard.cfg
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── details.xml
│ │ │ └── main.xml
│ │ ├── layout-land
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── fragments
│ └── bard
│ ├── DetailsActivity.java
│ ├── DetailsFragment.java
│ ├── MainActivity.java
│ ├── Shakespeare.java
│ └── TitlesFragment.java
├── ProAndroid3_Ch30_Actionbar
│ └── TestActionBar30
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── actionbar
│ │ │ ├── BaseActionBarActivity.class
│ │ │ ├── BaseListener.class
│ │ │ ├── DebugActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── ListListener.class
│ │ │ ├── ListNavigationActionBarActivity.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── SimpleSpinnerArrayAdapter.class
│ │ │ ├── StandardNavigationActionBarActivity.class
│ │ │ ├── TabListener.class
│ │ │ └── TabNavigationActionBarActivity.class
│ │ ├── resources.ap_
│ │ └── TestActionBar30_v2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── actionbar
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── creep001.png
│ │ │ ├── creep002.png
│ │ │ ├── creep003.png
│ │ │ ├── creep004.png
│ │ │ ├── creep005.png
│ │ │ ├── creep006.png
│ │ │ ├── creep007.png
│ │ │ ├── creep008.png
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── actionbar
│ ├── BaseActionBarActivity.java
│ ├── BaseListener.java
│ ├── DebugActivity.java
│ ├── IReportBack.java
│ ├── ListListener.java
│ ├── ListNavigationActionBarActivity.java
│ ├── SimpleSpinnerArrayAdapter.java
│ ├── StandardNavigationActionBarActivity.java
│ ├── TabListener.java
│ └── TabNavigationActionBarActivity.java
├── ProAndroid3_Ch31_ListWidgets
│ └── TestListWidget
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── homewidgets
│ │ │ └── listwidget
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── TestListWidgetProvider.class
│ │ │ ├── TestRemoteViewsFactory.class
│ │ │ └── TestRemoteViewsService.class
│ │ ├── resources.ap_
│ │ └── TestListWidget.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── homewidgets
│ │ └── listwidget
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── box1.xml
│ │ │ ├── icon.png
│ │ │ ├── robot.png
│ │ │ ├── shape_1.xml
│ │ │ ├── shape1.xml
│ │ │ ├── shape_2.xml
│ │ │ ├── shape_3.xml
│ │ │ ├── shape_4.xml
│ │ │ └── shape_5.xml
│ │ ├── layout
│ │ │ ├── list_item_layout.xml
│ │ │ └── test_list_widget_layout.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── test_list_appwidget_provider.xml
│ └── src
│ └── com
│ └── androidbook
│ └── homewidgets
│ └── listwidget
│ ├── TestListWidgetProvider.java
│ ├── TestRemoteViewsFactory.java
│ └── TestRemoteViewsService.java
└── ProAndroid3_Ch31_TestDragAndDrop
└── DragDropFragDemo
├── AndroidManifest.xml
├── default.properties
├── gen
│ └── com
│ └── androidbook
│ └── drag
│ └── drop
│ └── demo
│ └── R.java
├── proguard.cfg
├── res
│ ├── drawable-hdpi
│ │ └── icon.png
│ ├── drawable-ldpi
│ │ └── icon.png
│ ├── drawable-mdpi
│ │ └── icon.png
│ ├── layout
│ │ ├── dropzone.xml
│ │ ├── main.xml
│ │ └── palette.xml
│ └── values
│ ├── attrs.xml
│ └── strings.xml
└── src
└── com
└── androidbook
└── drag
└── drop
└── demo
├── Dot.java
├── DropZone.java
├── MainActivity.java
└── Palette.java
1757 directories, 1679 files
《精通 Android 3》 是一本好书,这个书上的例子便是学号这本书的媒介,所有源代码都在这个附件中!
【实例截图】
【核心代码】
ProAndroid3源代码
└── Pro Android 3 Source Code
├── First_Readme.txt
├── ProAndroid3_Ch03_Resources
│ └── TestResources
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── test.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── book
│ │ │ └── resources
│ │ │ ├── BaseTester.class
│ │ │ ├── HelloWorldActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── MonitoredActivity.class
│ │ │ ├── MonitoredDebugActivity.class
│ │ │ ├── MyApplication.class
│ │ │ ├── R$array.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$dimen.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$plurals.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── ResourceTester.class
│ │ │ └── TestActivity.class
│ │ ├── resources.ap_
│ │ └── TestResources.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── book
│ │ └── resources
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ ├── my_rounded_rectangle.xml
│ │ │ ├── robot.png
│ │ │ └── sample_image.png
│ │ ├── layout
│ │ │ ├── debug_activity_layout.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ ├── values
│ │ │ ├── strings1.xml
│ │ │ └── strings.xml
│ │ ├── values-en
│ │ │ └── strings_en.xml
│ │ ├── values-en-port
│ │ │ └── strings_en_port.xml
│ │ ├── values-en-rUS
│ │ │ └── strings_en_us.xml
│ │ ├── values-port
│ │ │ └── strings_port.xml
│ │ └── xml
│ │ └── test.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── book
│ └── resources
│ ├── BaseTester.java
│ ├── HelloWorldActivity.java
│ ├── IReportBack.java
│ ├── MonitoredActivity.java
│ ├── MonitoredDebugActivity.java
│ ├── MyApplication.java
│ ├── ResourceTester.java
│ └── TestActivity.java
├── ProAndroid3_Ch04_ContentProviders
│ └── TestProvider
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── book
│ │ │ └── provider
│ │ │ ├── BaseTester.class
│ │ │ ├── BookProvider$DatabaseHelper.class
│ │ │ ├── BookProvider.class
│ │ │ ├── BookProviderMetaData$BookTableMetaData.class
│ │ │ ├── BookProviderMetaData.class
│ │ │ ├── HelloWorld.class
│ │ │ ├── IReportBack.class
│ │ │ ├── MonitoredActivity.class
│ │ │ ├── MonitoredDebugActivity.class
│ │ │ ├── MyApplication.class
│ │ │ ├── ProviderTester.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestProvider.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── book
│ │ └── provider
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ ├── debug_activity_layout.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── book
│ └── provider
│ ├── BaseTester.java
│ ├── BookProvider.java
│ ├── BookProviderMetaData.java
│ ├── HelloWorld.java
│ ├── IReportBack.java
│ ├── MonitoredActivity.java
│ ├── MonitoredDebugActivity.java
│ ├── MyApplication.java
│ └── ProviderTester.java
├── ProAndroid3_Ch05_Intents
│ └── TestIntents
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── testintents
│ │ │ ├── BasicViewActivity.class
│ │ │ ├── IntentsUtils.class
│ │ │ ├── MainActivity$1.class
│ │ │ ├── MainActivity.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestIntents.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── testintents
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── basic_view.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── testintents
│ ├── BasicViewActivity.java
│ ├── IntentsUtils.java
│ └── MainActivity.java
├── ProAndroid3_Ch06_Controls
│ └── Common Controls
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── commoncontrols
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── button_focused.png
│ │ │ ├── button_pressed.png
│ │ │ ├── icon.png
│ │ │ ├── imagebuttonselector.xml
│ │ │ ├── manatee00.jpg
│ │ │ ├── manatee01.jpg
│ │ │ ├── manatee02.jpg
│ │ │ ├── manatee03.jpg
│ │ │ ├── manatee04.jpg
│ │ │ ├── manatee05.jpg
│ │ │ ├── manatee06.jpg
│ │ │ ├── manatee07.jpg
│ │ │ ├── manatee08.jpg
│ │ │ ├── manatee09.jpg
│ │ │ ├── manatee10.jpg
│ │ │ ├── manatee11.jpg
│ │ │ ├── manatee12.jpg
│ │ │ ├── manatee13.jpg
│ │ │ ├── manatee14.jpg
│ │ │ ├── manatee15.jpg
│ │ │ ├── manatee16.jpg
│ │ │ ├── manatee17.jpg
│ │ │ ├── manatee18.jpg
│ │ │ ├── manatee19.jpg
│ │ │ ├── manatee20.jpg
│ │ │ ├── manatee21.jpg
│ │ │ ├── manatee22.jpg
│ │ │ ├── manatee23.jpg
│ │ │ ├── manatee24.jpg
│ │ │ ├── manatee25.jpg
│ │ │ ├── manatee26.jpg
│ │ │ ├── manatee27.jpg
│ │ │ ├── manatee28.jpg
│ │ │ ├── manatee29.jpg
│ │ │ ├── manatee30.jpg
│ │ │ ├── manatee31.jpg
│ │ │ ├── manatee32.jpg
│ │ │ └── manatee33.jpg
│ │ ├── layout
│ │ │ ├── buttons.xml
│ │ │ ├── checkbox.xml
│ │ │ ├── datetimepicker.xml
│ │ │ ├── gallery.xml
│ │ │ ├── gridimage.xml
│ │ │ ├── gridviewcustom.xml
│ │ │ ├── gridview.xml
│ │ │ ├── imageview.xml
│ │ │ ├── listing6_41.xml
│ │ │ ├── listing6_42.xml
│ │ │ ├── listing6_43.xml
│ │ │ ├── listing6_45.xml
│ │ │ ├── listing6_46.xml
│ │ │ ├── list.xml
│ │ │ ├── radiogroup.xml
│ │ │ ├── spinner.xml
│ │ │ ├── styles.xml
│ │ │ └── textview.xml
│ │ └── values
│ │ ├── planets.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── src
│ └── com
│ └── androidbook
│ └── commoncontrols
│ ├── ButtonActivity.java
│ ├── CheckBoxActivity.java
│ ├── DateTimePickerActivity.java
│ ├── FrameLayoutActivity.java
│ ├── GalleryActivity.java
│ ├── GridViewActivity.java
│ ├── GridViewCustomAdapter.java
│ ├── ImageViewActivity.java
│ ├── LayoutActivity.java
│ ├── ListViewActivity2.java
│ ├── ListViewActivity3.java
│ ├── ListViewActivity4.java
│ ├── ListViewActivity.java
│ ├── RadioGroupActivity.java
│ ├── SpinnerActivity.java
│ ├── StylesActivity.java
│ └── TextViewActivity.java
├── ProAndroid3_Ch07_Menus
│ └── TestMenus
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── testmenus
│ │ │ ├── IntentsUtils.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$dimen.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ └── SampleMenusActivity.class
│ │ ├── resources.ap_
│ │ └── TestMenus.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── testmenus
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── frame_animation.xml
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ ├── icon.png
│ │ │ ├── numbers11.png
│ │ │ ├── numbers12.png
│ │ │ ├── numbers13.png
│ │ │ ├── numbers14.png
│ │ │ ├── numbers15.png
│ │ │ ├── numbers16.png
│ │ │ ├── numbers17.png
│ │ │ ├── numbers18.png
│ │ │ ├── numbers19.png
│ │ │ ├── numbers1.png
│ │ │ ├── numbers2.png
│ │ │ ├── numbers3.png
│ │ │ ├── numbers4.png
│ │ │ ├── numbers5.png
│ │ │ ├── numbers6.png
│ │ │ ├── photo1.jpg
│ │ │ ├── photo2.jpg
│ │ │ ├── photo3.jpg
│ │ │ ├── photo4.jpg
│ │ │ ├── photo5.jpg
│ │ │ ├── photo6.jpg
│ │ │ ├── photo8.jpg
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── my_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── testmenus
│ ├── IntentsUtils.java
│ └── SampleMenusActivity.java
├── ProAndroid3_Ch08_Dialogs
│ └── SampleDialogs
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── sampledialogs
│ │ │ ├── Alerts.class
│ │ │ ├── DialogRegistry.class
│ │ │ ├── EmptyOnClickListener.class
│ │ │ ├── GenericManagedAlertDialog.class
│ │ │ ├── GenericPromptDialog.class
│ │ │ ├── IDialogFinishedCallBack.class
│ │ │ ├── IDialogProtocol.class
│ │ │ ├── IStringPrompterCallBack.class
│ │ │ ├── MainActivity.class
│ │ │ ├── ManagedActivityDialog.class
│ │ │ ├── ManagedDialogsActivity.class
│ │ │ ├── PromptListener.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── SampleDialogs.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── sampledialogs
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── main.xml
│ │ │ ├── promptdialog.xml
│ │ │ └── test
│ │ │ └── test.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ ├── values
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── test.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── sampledialogs
│ ├── Alerts.java
│ ├── DialogRegistry.java
│ ├── EmptyOnClickListener.java
│ ├── GenericManagedAlertDialog.java
│ ├── GenericPromptDialog.java
│ ├── IDialogFinishedCallBack.java
│ ├── IDialogProtocol.java
│ ├── IStringPrompterCallBack.java
│ ├── MainActivity.java
│ ├── ManagedActivityDialog.java
│ ├── ManagedDialogsActivity.java
│ └── PromptListener.java
├── ProAndroid3_Ch09_Preferences
│ ├── PreferencesDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ ├── arrays.xml
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ ├── chkbox.xml
│ │ │ ├── flightoptions.xml
│ │ │ ├── foodoptions1.xml
│ │ │ ├── foodoptions2.xml
│ │ │ ├── packagepref.xml
│ │ │ └── ringtone.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── CheckBoxPreferenceActivity.java
│ │ ├── EditTextPreferenceActivity.java
│ │ ├── FlightPreferenceActivity.java
│ │ ├── FoodPreferenceActivity.java
│ │ ├── MainActivity.java
│ │ └── RingtonePreferenceActivity.java
│ ├── PreferencesProgDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── flightoptions.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── FlightPreferenceActivity.java
│ │ └── MainActivity.java
│ ├── PreferencesWithDefaultsDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── preferences
│ │ │ └── sample
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── mainmenu.xml
│ │ │ ├── values
│ │ │ │ ├── arrays.xml
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── flightoptions.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ ├── FlightPreferenceActivity.java
│ │ └── MainActivity.java
│ └── SavingStateDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── preferences
│ │ └── sample
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── preferences
│ └── sample
│ └── MainActivity.java
├── ProAndroid3_Ch10_Security
│ ├── ClientofCustomPermission
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── client
│ │ │ └── cust
│ │ │ └── perm
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── client
│ │ └── cust
│ │ └── perm
│ │ └── ClientCustPermMainActivity.java
│ └── CustomPermission
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── cust
│ │ └── perm
│ │ ├── Manifest.java
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── cust
│ └── perm
│ ├── CustPermMainActivity.java
│ └── PrivActivity.java
├── ProAndroid3_Ch11_Services
│ ├── ApplicationEx
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── ApplicationEx2.2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── ApplicationExAndroidHttpClient
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── applicationex
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── applicationex
│ │ ├── ApplicationEx.java
│ │ └── HttpActivity.java
│ ├── AsyncTaskDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── asynctask
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── asynctask
│ │ ├── CustomHttpClient.java
│ │ ├── DownloadImageTask.java
│ │ └── HttpActivity.java
│ ├── AsyncTaskRotateDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── asynctaskrotate
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── asynctaskrotate
│ │ ├── CustomHttpClient.java
│ │ ├── DownloadImageTask.java
│ │ └── HttpActivity.java
│ ├── DownloadManagerDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── download
│ │ │ └── R.java
│ │ ├── proguard.cfg
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── download
│ │ └── MainActivity.java
│ ├── HttpSingleton
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httpsingleton
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httpsingleton
│ │ ├── CustomHttpClient.java
│ │ └── HttpActivity.java
│ ├── MultiPartPost
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── data.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── multipart
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── multipart
│ │ └── TestMultipartPost.java
│ ├── SimpleHTTPGet
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httpget
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httpget
│ │ └── HttpGetDemo.java
│ ├── SimpleHTTPPost
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── httppost
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── httppost
│ │ └── HttpPostDemo.java
│ ├── SimpleLocalService
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── simplelocal
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── emo_im_winking.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── simplelocal
│ │ ├── BackgroundService.java
│ │ └── MainActivity.java
│ ├── StockQuoteClient
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ ├── stockquoteclient
│ │ │ │ └── R.java
│ │ │ └── stockquoteservice
│ │ │ └── IStockQuoteService.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ ├── stockquoteclient
│ │ │ └── MainActivity.java
│ │ └── stockquoteservice
│ │ └── IStockQuoteService.aidl
│ ├── StockQuoteClient2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ ├── sayed
│ │ │ │ └── R.java
│ │ │ └── syh
│ │ │ └── IStockQuoteService.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ ├── sayed
│ │ │ └── MainActivity.java
│ │ └── syh
│ │ ├── IStockQuoteService.aidl
│ │ ├── Person.aidl
│ │ └── Person.java
│ ├── StockQuoteService
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── stockquoteservice
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── stockquoteservice
│ │ ├── IStockQuoteService.aidl
│ │ └── StockQuoteService.java
│ ├── StockQuoteService2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── stock2
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── emo_im_happy.png
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── stock2
│ │ ├── IStockQuoteService.aidl
│ │ ├── MainActivity.java
│ │ ├── Person.aidl
│ │ ├── Person.java
│ │ └── StockQuoteService2.java
│ ├── StockQuoteService3
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── services
│ │ │ └── stock3
│ │ │ ├── IStockQuoteService.java
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ ├── emo_im_happy.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── services
│ │ └── stock3
│ │ ├── IStockQuoteService.aidl
│ │ ├── MainActivity.java
│ │ ├── Person.aidl
│ │ ├── Person.java
│ │ └── StockQuoteService3.java
│ └── TranslateDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── translation
│ │ ├── ITranslate.java
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ ├── arrays.xml
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── translation
│ ├── ITranslate.aidl
│ ├── MainActivity.java
│ ├── TranslateService.java
│ └── Translator.java
├── ProAndroid3_Ch12_Libraries
│ ├── TestLibrary
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ └── testlibrary
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ └── TestLibActivity.class
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ └── testlibrary
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ └── lib_main.xml
│ │ │ └── menu
│ │ │ └── lib_main_menu.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── library
│ │ └── testlibrary
│ │ └── TestLibActivity.java
│ └── TestLibraryApp
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── library
│ │ │ ├── testlibrary
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R.class
│ │ │ │ └── TestLibActivity.class
│ │ │ └── testlibraryapp
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ └── TestAppActivity.class
│ │ ├── resources.ap_
│ │ └── TestLibraryApp.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── library
│ │ ├── testlibrary
│ │ │ └── R.java
│ │ └── testlibraryapp
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── library
│ └── testlibraryapp
│ └── TestAppActivity.java
├── ProAndroid3_Ch13_Handlers
│ └── TestHandlers
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── handlers
│ │ │ ├── DeferWorkHandler.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── ReportStatusHandler.class
│ │ │ ├── TestHandlersDriverActivity.class
│ │ │ ├── Utils.class
│ │ │ └── WorkerThreadRunnable.class
│ │ ├── resources.ap_
│ │ └── TestHandlersBook3v2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── handlers
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── main_menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── handlers
│ ├── DeferWorkHandler.java
│ ├── ReportStatusHandler.java
│ ├── TestHandlersDriverActivity.java
│ ├── Utils.java
│ └── WorkerThreadRunnable.java
├── ProAndroid3_Ch14_TestReceivers
│ ├── StandaloneBCR
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── salbcr
│ │ │ │ ├── ALongRunningNonStickyBroadcastService.class
│ │ │ │ ├── ALongRunningReceiver.class
│ │ │ │ ├── GreenRoomOriginal.class
│ │ │ │ ├── LightedGreenRoom.class
│ │ │ │ ├── NotificationReceiver.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R.class
│ │ │ │ ├── StandaloneReceiver.class
│ │ │ │ ├── Test30SecBCR.class
│ │ │ │ ├── Test30SecBCRService.class
│ │ │ │ ├── Test60SecBCR.class
│ │ │ │ ├── Test60SecBCRService.class
│ │ │ │ ├── TestLRBCR.class
│ │ │ │ ├── TestLRBCRService.class
│ │ │ │ ├── TestPlain30SecBCR.class
│ │ │ │ ├── TestPlain30SecBCRService.class
│ │ │ │ └── Utils.class
│ │ │ ├── resources.ap_
│ │ │ └── StandaloneBroadcastReceiver.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── salbcr
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ ├── layout_multi_view_test_view.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── salbcr
│ │ ├── ALongRunningNonStickyBroadcastService.java
│ │ ├── ALongRunningReceiver.java
│ │ ├── GreenRoomOriginal.java
│ │ ├── LightedGreenRoom.java
│ │ ├── NotificationReceiver.java
│ │ ├── StandaloneReceiver.java
│ │ ├── Test30SecBCR.java
│ │ ├── Test30SecBCRService.java
│ │ ├── Test60SecBCR.java
│ │ ├── Test60SecBCRService.java
│ │ ├── TestLRBCR.java
│ │ ├── TestLRBCRService.java
│ │ ├── TestPlain30SecBCR.java
│ │ ├── TestPlain30SecBCRService.java
│ │ └── Utils.java
│ └── TestBCR
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── bcr
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ ├── TestBCRActivity.class
│ │ │ ├── TestReceiver2.class
│ │ │ ├── TestReceiver.class
│ │ │ ├── TestTimeDelayReceiver.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestBroadcastReceiverBook3V2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── bcr
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── bcr
│ ├── TestBCRActivity.java
│ ├── TestReceiver2.java
│ ├── TestReceiver.java
│ ├── TestTimeDelayReceiver.java
│ └── Utils.java
├── ProAndroid3_Ch15_AlarmManager
│ └── TestAlarmManager
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── alarms
│ │ │ ├── AlarmIntentPrimacyTester.class
│ │ │ ├── BaseTester.class
│ │ │ ├── CancelRepeatingAlarmTester.class
│ │ │ ├── IReportBack.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── ScheduleIntentMultipleTimesTester.class
│ │ │ ├── SendAlarmOnceTester.class
│ │ │ ├── SendRepeatingAlarmTester.class
│ │ │ ├── TestAlarmsDriverActivity.class
│ │ │ ├── TestReceiver.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestAlarmManager.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── alarms
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── main_menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── alarms
│ ├── AlarmIntentPrimacyTester.java
│ ├── BaseTester.java
│ ├── CancelRepeatingAlarmTester.java
│ ├── IReportBack.java
│ ├── ScheduleIntentMultipleTimesTester.java
│ ├── SendAlarmOnceTester.java
│ ├── SendRepeatingAlarmTester.java
│ ├── TestAlarmsDriverActivity.java
│ ├── TestReceiver.java
│ └── Utils.java
├── ProAndroid3_Ch16_Animation
│ ├── SampleFrameAnimation
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── sample.txt
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── ai
│ │ │ │ └── android
│ │ │ │ └── frameanimation
│ │ │ │ ├── FrameAnimationActivity$1.class
│ │ │ │ ├── FrameAnimationActivity.class
│ │ │ │ ├── MainActivity.class
│ │ │ │ ├── R$anim.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$raw.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ └── R.class
│ │ │ ├── resources.ap_
│ │ │ └── SampleFrameAnimation.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── frameanimation
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── anim
│ │ │ │ ├── layout_bottom_to_top_slide.xml
│ │ │ │ └── slide_right.xml
│ │ │ ├── drawable
│ │ │ │ ├── colored_ball1.png
│ │ │ │ ├── colored_ball2.png
│ │ │ │ ├── colored_ball3.png
│ │ │ │ ├── colored_ball4.png
│ │ │ │ ├── colored_ball5.png
│ │ │ │ ├── colored_ball6.png
│ │ │ │ ├── colored_ball7.png
│ │ │ │ ├── colored_ball8.png
│ │ │ │ ├── colored_ball9.png
│ │ │ │ ├── frame_animation.xml
│ │ │ │ ├── icon48x48_1.png
│ │ │ │ ├── icon48x48_2.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── animations_main_screen.xml
│ │ │ │ ├── frame_animations_layout.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ ├── raw
│ │ │ │ └── test.txt
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── test.xml
│ │ └── src
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── frameanimation
│ │ ├── FrameAnimationActivity.java
│ │ └── MainActivity.java
│ ├── SampleLayoutAnimation
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── ai
│ │ │ │ └── android
│ │ │ │ └── SampleLayoutAnimation
│ │ │ │ ├── LayoutAnimationActivity.class
│ │ │ │ ├── MainActivity.class
│ │ │ │ ├── R$anim.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$raw.class
│ │ │ │ ├── R$string.class
│ │ │ │ └── R.class
│ │ │ ├── resources.ap_
│ │ │ └── SampleLayoutAnimation.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── SampleLayoutAnimation
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── anim
│ │ │ │ ├── alpha_translate.xml
│ │ │ │ ├── alpha.xml
│ │ │ │ ├── list_layout_controller.xml
│ │ │ │ ├── rotate.xml
│ │ │ │ └── scale.xml
│ │ │ ├── drawable
│ │ │ │ ├── icon48x48_1.png
│ │ │ │ ├── icon48x48_2.png
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── list_layout.xml
│ │ │ │ └── main.xml
│ │ │ ├── menu
│ │ │ │ └── main_menu.xml
│ │ │ ├── raw
│ │ │ │ └── test.txt
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── SampleLayoutAnimation
│ │ ├── LayoutAnimationActivity.java
│ │ └── MainActivity.java
│ └── SampleViewAnimation
│ ├── AndroidManifest.xml
│ ├── assets
│ │ └── sample.txt
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── ai
│ │ │ └── android
│ │ │ └── ExerciseSystemIntents
│ │ │ ├── IntentsUtils.class
│ │ │ ├── MainActivity.class
│ │ │ ├── R$anim.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R$string.class
│ │ │ ├── R.class
│ │ │ ├── ViewAnimation1.class
│ │ │ ├── ViewAnimation2.class
│ │ │ ├── ViewAnimation3.class
│ │ │ ├── ViewAnimationActivity$1.class
│ │ │ ├── ViewAnimationActivity.class
│ │ │ ├── ViewAnimation.class
│ │ │ └── ViewAnimationListener.class
│ │ ├── resources.ap_
│ │ └── SampleViewAnimation.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── ai
│ │ └── android
│ │ └── ExerciseSystemIntents
│ │ └── R.java
│ ├── res
│ │ ├── anim
│ │ │ ├── alpha_translate.xml
│ │ │ ├── alpha.xml
│ │ │ ├── list_layout_controller.xml
│ │ │ ├── rotate.xml
│ │ │ └── scale.xml
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── list_layout.xml
│ │ │ ├── main.xml
│ │ │ ├── promptdialog.xml
│ │ │ └── test
│ │ │ └── test.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── raw
│ │ │ └── test.txt
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── ai
│ └── android
│ └── ExerciseSystemIntents
│ ├── IntentsUtils.java
│ ├── MainActivity.java
│ ├── ViewAnimation1.java
│ ├── ViewAnimation2.java
│ ├── ViewAnimation3.java
│ ├── ViewAnimationActivity.java
│ ├── ViewAnimation.java
│ └── ViewAnimationListener.java
├── ProAndroid3_Ch17_Maps
│ ├── GeocodingDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── geocode.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ ├── FirstGeocodingDemoActivity.java
│ │ └── GeocodingDemoActivity.java
│ ├── LocationManagerDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── update
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── update
│ │ └── LocationUpdateDemoActivity.java
│ ├── MapViewDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── MapViewDemoActivity.java
│ ├── MyLocationDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── myoverlay
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── myoverlay
│ │ └── MyLocationDemoActivity.java
│ ├── MyLocationDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── location
│ │ │ └── myoverlay
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── myoverlay
│ │ ├── MyCustomLocationOverlay.java
│ │ └── MyLocationDemoActivity.java
│ ├── OverlayDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── androidmarker.png
│ │ │ │ ├── icon.png
│ │ │ │ ├── mapmarker.PNG
│ │ │ │ ├── mm_blue.png
│ │ │ │ └── mm_pink.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── MappingOverlayActivity.java
│ └── ProximityAlertDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── location
│ │ └── proximity
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── location
│ └── proximity
│ ├── ProximityActivity.java
│ └── ProximityReceiver.java
├── ProAndroid3_Ch18_Telephony
│ ├── EmailviaIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── intent
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── intent
│ │ └── MainActivity.java
│ ├── PhoneCalls
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── phonecall
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── phonecall
│ │ └── demo
│ │ └── PhoneCallActivity.java
│ ├── SMSFolders
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sms
│ │ │ └── folders
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── sms_inbox.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sms
│ │ └── folders
│ │ └── SMSInboxDemo.java
│ └── TelephonyDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── telephony
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── telephony
│ ├── MySMSMonitor.java
│ └── TelephonyDemo.java
├── ProAndroid3_Ch19_Media
│ ├── AsyncPlayer
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── asyncplayer
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── asyncplayer
│ │ └── MainActivity.java
│ ├── AudioRecord
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── audiorecord
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── audiorecord
│ │ └── MainActivity.java
│ ├── AudioRecordWithCallbacks
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── audiorecord
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── audiorecord
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent3
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── CaptureImageWithIntent4
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── image
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── image
│ │ └── MainActivity.java
│ ├── MediaDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── mediademo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ └── music_file.mp3
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── mediademo
│ │ └── MainActivity.java
│ ├── MediaScanner
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── scanner
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── scanner
│ │ └── MediaScannerActivity.java
│ ├── MediaScannerBroadcast
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── scanner
│ │ │ └── broadcast
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── scanner
│ │ └── broadcast
│ │ └── MainActivity.java
│ ├── RecordAudio
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── audio
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── record.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── audio
│ │ └── RecorderActivity.java
│ ├── RecordAudioWithIntent
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── audio
│ │ │ └── intent
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── audio
│ │ └── intent
│ │ └── UsingMediaStoreActivity.java
│ ├── RecordVideo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── record
│ │ │ └── video
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mainold.xml
│ │ │ ├── layout-land
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── record
│ │ └── video
│ │ └── MainActivity.java
│ ├── SoundPoolDemo
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ └── dogbark.mp3
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── media
│ │ │ └── soundpool
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ ├── chimp.mp3
│ │ │ │ ├── crickets.mp3
│ │ │ │ ├── roar.mp3
│ │ │ │ └── rooster.mp3
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── media
│ │ └── soundpool
│ │ └── MainActivity.java
│ └── VideoDemo
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── videodemo
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── videodemo
│ └── MainActivity.java
├── ProAndroid3_Ch20_OpenGL
│ └── TestOpenGL
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── OpenGL
│ │ │ ├── AbstractRenderer.class
│ │ │ ├── AbstractSingleTexturedRenderer.class
│ │ │ ├── AnimatedSimpleTriangleRenderer.class
│ │ │ ├── AnimatedTriangleActivity.class
│ │ │ ├── ES20AbstractRenderer.class
│ │ │ ├── ES20SimpleTriangleRenderer.class
│ │ │ ├── GLES20TestRenderer.class
│ │ │ ├── GLES20TriangleRenderer.class
│ │ │ ├── MultiViewTestHarnessActivity.class
│ │ │ ├── OpenGL15TestHarnessActivity.class
│ │ │ ├── OpenGL20MultiViewTestHarnessActivity.class
│ │ │ ├── OpenGLTestHarnessActivity.class
│ │ │ ├── PolygonRenderer.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$raw.class
│ │ │ ├── R.class
│ │ │ ├── RegularPolygon.class
│ │ │ ├── SimpleRectangleRenderer.class
│ │ │ ├── SimpleTriangleRenderer2.class
│ │ │ ├── SimpleTriangleRenderer.class
│ │ │ ├── SquareRenderer.class
│ │ │ ├── TestOpenGLMainDriverActivity.class
│ │ │ ├── TexturedPolygonRenderer.class
│ │ │ └── TexturedSquareRenderer.class
│ │ ├── resources.ap_
│ │ └── TestOpenGL.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── OpenGL
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── raw
│ │ └── robot.png
│ └── src
│ └── com
│ └── androidbook
│ └── OpenGL
│ ├── AbstractRenderer.java
│ ├── AbstractSingleTexturedRenderer.java
│ ├── AnimatedSimpleTriangleRenderer.java
│ ├── AnimatedTriangleActivity.java
│ ├── ES20AbstractRenderer.java
│ ├── ES20SimpleTriangleRenderer.java
│ ├── GLES20TestRenderer.java
│ ├── GLES20TriangleRenderer.java
│ ├── MultiViewTestHarnessActivity.java
│ ├── OpenGL15TestHarnessActivity.java
│ ├── OpenGL20MultiViewTestHarnessActivity.java
│ ├── OpenGLTestHarnessActivity.java
│ ├── PolygonRenderer.java
│ ├── RegularPolygon.java
│ ├── SimpleRectangleRenderer.java
│ ├── SimpleTriangleRenderer2.java
│ ├── SimpleTriangleRenderer.java
│ ├── SquareRenderer.java
│ ├── TestOpenGLMainDriverActivity.java
│ ├── TexturedPolygonRenderer.java
│ └── TexturedSquareRenderer.java
├── ProAndroid3_Ch21_LiveFolders
│ └── TestLiveFolders
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── livefolders
│ │ │ ├── AllContactsLiveFolderCreatorActivity.class
│ │ │ ├── BetterCursorWrapper.class
│ │ │ ├── MyContactsProvider.class
│ │ │ ├── MyCursor.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$string.class
│ │ │ └── R.class
│ │ ├── resources.ap_
│ │ └── TestLiveFolders.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── livefolders
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── livefolders
│ ├── AllContactsLiveFolderCreatorActivity.java
│ ├── BetterCursorWrapper.java
│ ├── MyContactsProvider.java
│ └── MyCursor.java
├── ProAndroid3_Ch22_Widgets
│ └── TestWidgets
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── BDayWidget
│ │ │ ├── APrefWidgetModel.class
│ │ │ ├── BDayWidgetModel.class
│ │ │ ├── BDayWidgetProvider.class
│ │ │ ├── ConfigureBDayWidgetActivity$1.class
│ │ │ ├── ConfigureBDayWidgetActivity.class
│ │ │ ├── IWidgetModelSaveContract.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestWidgets.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── BDayWidget
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── box1.xml
│ │ │ ├── icon.png
│ │ │ ├── robot.png
│ │ │ ├── shape_1.xml
│ │ │ ├── shape1.xml
│ │ │ ├── shape_2.xml
│ │ │ ├── shape_3.xml
│ │ │ ├── shape_4.xml
│ │ │ └── shape_5.xml
│ │ ├── layout
│ │ │ ├── bday_widget.xml
│ │ │ ├── edit_bday_widget.xml
│ │ │ ├── layout_multi_view_test_view_1.xml
│ │ │ ├── layout_multi_view_test_view.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── bday_appwidget_provider.xml
│ └── src
│ └── com
│ └── androidbook
│ └── BDayWidget
│ ├── APrefWidgetModel.java
│ ├── BDayWidgetModel.java
│ ├── BDayWidgetProvider.java
│ ├── ConfigureBDayWidgetActivity.java
│ ├── IWidgetModelSaveContract.java
│ └── Utils.java
├── ProAndroid3_Ch23_Search
│ ├── CustomSuggestionProvider
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── search
│ │ │ │ └── custom
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ ├── R.class
│ │ │ │ ├── SearchActivity.class
│ │ │ │ └── SuggestUrlProvider.class
│ │ │ ├── CustomSuggestionProvider.apk
│ │ │ └── resources.ap_
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── custom
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ └── layout_test_search_activity.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── searchable.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── custom
│ │ ├── SearchActivity.java
│ │ └── SuggestUrlProvider.java
│ ├── SearchRegularActivities
│ │ ├── AndroidManifest.xml
│ │ ├── bin
│ │ │ ├── classes.dex
│ │ │ ├── com
│ │ │ │ └── androidbook
│ │ │ │ └── search
│ │ │ │ └── nosearch
│ │ │ │ ├── LocalSearchEnabledActivity.class
│ │ │ │ ├── NoSearchActivity.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$layout.class
│ │ │ │ ├── R$menu.class
│ │ │ │ ├── R$string.class
│ │ │ │ ├── R$xml.class
│ │ │ │ ├── R.class
│ │ │ │ ├── RegularActivity.class
│ │ │ │ ├── SearchActivity.class
│ │ │ │ └── SearchInvokerActivity.class
│ │ │ ├── resources.ap_
│ │ │ └── SearchRegularActivities.apk
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── nosearch
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── icon.png
│ │ │ │ └── robot.png
│ │ │ ├── layout
│ │ │ │ ├── local_search_enabled_activity.xml
│ │ │ │ ├── main.xml
│ │ │ │ ├── no_search_activity.xml
│ │ │ │ ├── search_activity.xml
│ │ │ │ └── search_invoker_activity.xml
│ │ │ ├── menu
│ │ │ │ ├── main_menu.xml
│ │ │ │ └── search_invoker_menu.xml
│ │ │ ├── values
│ │ │ │ └── strings.xml
│ │ │ └── xml
│ │ │ └── searchable.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── nosearch
│ │ ├── LocalSearchEnabledActivity.java
│ │ ├── NoSearchActivity.java
│ │ ├── RegularActivity.java
│ │ ├── SearchActivity.java
│ │ └── SearchInvokerActivity.java
│ └── SimpleSuggestionProvider
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── search
│ │ │ └── simplesp
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── SearchActivity.class
│ │ │ ├── SimpleMainActivity.class
│ │ │ └── SimpleSuggestionProvider.class
│ │ ├── resources.ap_
│ │ └── SimpleSuggestionProvider.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── search
│ │ └── simplesp
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ ├── layout_test_search_activity.xml
│ │ │ └── main.xml
│ │ ├── menu
│ │ │ └── reset_suggestions_menu.xml
│ │ ├── values
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── searchable.xml
│ └── src
│ └── com
│ └── androidbook
│ └── search
│ └── simplesp
│ ├── SearchActivity.java
│ ├── SimpleMainActivity.java
│ └── SimpleSuggestionProvider.java
├── ProAndroid3_Ch24_TextToSpeech
│ ├── TTSDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ ├── TTSDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ ├── TTSDemo2ShowLanguages
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── tts
│ │ │ └── demo
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── MainActivity.java
│ └── TTSDemo3
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── tts
│ │ └── demo
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── tts
│ └── demo
│ └── MainActivity.java
├── ProAndroid3_Ch25_Touchscreens
│ ├── GestureRevealer
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── gestures
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ ├── raw
│ │ │ │ ├── gesturelibrary
│ │ │ │ └── gestures_letters
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── gestures
│ │ └── MainActivity.java
│ ├── MultiTouchDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── multitouch
│ │ │ └── demo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── multitouch
│ │ └── demo1
│ │ └── MainActivity.java
│ ├── MultiTouchDemo2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── multitouch
│ │ │ └── demo2
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── multitouch
│ │ └── demo2
│ │ └── MainActivity.java
│ ├── ScaleDetector
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── scaledetector
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── scaledetector
│ │ └── MainActivity.java
│ ├── StreetViewMaps
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── StreetViewMapsPinchZoom
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── StreetViewMapsPinchZoom2.2
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── maps
│ │ │ └── streetview
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── mapview.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── maps
│ │ └── streetview
│ │ ├── ClickReceiver.java
│ │ └── MainActivity.java
│ ├── TouchDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── demo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── demo1
│ │ ├── BooleanButton.java
│ │ ├── FalseButton.java
│ │ ├── MainActivity.java
│ │ └── TrueButton.java
│ ├── TouchDragDemo1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── touch
│ │ │ └── dragdemo1
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── dragdemo1
│ │ ├── Dot.java
│ │ └── MainActivity.java
│ └── VelocityTracker
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── touch
│ │ └── velocity
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── touch
│ └── velocity
│ └── MainActivity.java
├── ProAndroid3_Ch26_Sensors
│ ├── AccelerometerRecordToFile2.1
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accel
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accel
│ │ └── MainActivity.java
│ ├── AccelerometerRecordToFileAlwaysOn
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accel
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accel
│ │ └── MainActivity.java
│ ├── AccelerometerSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── accelerometer
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── accelerometer
│ │ └── MainActivity.java
│ ├── CompassSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── compass
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── compass
│ │ └── MainActivity.java
│ ├── GravityDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── gravity
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── gravity
│ │ └── MainActivity.java
│ ├── GyroSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── gyro
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── gyro
│ │ └── MainActivity.java
│ ├── LightSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── light
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── light
│ │ └── MainActivity.java
│ ├── ProximitySensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── proximity
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── proximity
│ │ └── MainActivity.java
│ ├── SensorList
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensors
│ │ │ └── list
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensors
│ │ └── list
│ │ └── MainActivity.java
│ ├── TemperatureSensor
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── sensor
│ │ │ └── temperature
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── sensor
│ │ └── temperature
│ │ └── MainActivity.java
│ └── VirtualJax
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── android
│ │ └── sensor
│ │ └── virtualjax
│ │ └── R.java
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ ├── layout-land
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── android
│ └── sensor
│ └── virtualjax
│ └── MainActivity.java
├── ProAndroid3_Ch27_Contacts
│ └── TestContacts
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── contacts
│ │ │ ├── AccountsFunctionTester.class
│ │ │ ├── AddContactFunctionTester.class
│ │ │ ├── AggregatedContact.class
│ │ │ ├── AggregatedContactFunctionTester.class
│ │ │ ├── BaseTester.class
│ │ │ ├── ContactData.class
│ │ │ ├── ContactDataFunctionTester.class
│ │ │ ├── DebugActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── RawContact.class
│ │ │ ├── RawContactFunctionTester.class
│ │ │ ├── R.class
│ │ │ ├── TestContactsDriverActivity.class
│ │ │ ├── URIFunctionTester.class
│ │ │ └── Utils.class
│ │ ├── resources.ap_
│ │ └── TestContactsNext.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── contacts
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── debug_activity_layout.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── contacts
│ ├── AccountsFunctionTester.java
│ ├── AddContactFunctionTester.java
│ ├── AggregatedContactFunctionTester.java
│ ├── AggregatedContact.java
│ ├── BaseTester.java
│ ├── ContactDataFunctionTester.java
│ ├── ContactData.java
│ ├── DebugActivity.java
│ ├── IReportBack.java
│ ├── RawContactFunctionTester.java
│ ├── RawContact.java
│ ├── TestContactsDriverActivity.java
│ ├── URIFunctionTester.java
│ └── Utils.java
├── ProAndroid3_Ch29_Fragments
│ ├── DialogFragmentDemo
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── fragments
│ │ │ └── dialogs
│ │ │ └── R.java
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── help_dialog.xml
│ │ │ │ ├── main.xml
│ │ │ │ └── prompt_dialog.xml
│ │ │ ├── menu
│ │ │ │ └── menu.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── dialogs
│ │ ├── AlertDialogFragment.java
│ │ ├── HelpDialogFragment.java
│ │ ├── MainActivity.java
│ │ ├── OnDialogDoneListener.java
│ │ └── PromptDialogFragment.java
│ ├── ShakespeareInstrumented
│ │ ├── AndroidManifest.xml
│ │ ├── default.properties
│ │ ├── gen
│ │ │ └── com
│ │ │ └── androidbook
│ │ │ └── fragments
│ │ │ └── bard
│ │ │ └── R.java
│ │ ├── proguard.cfg
│ │ ├── res
│ │ │ ├── animator
│ │ │ │ ├── bounce_in_down.xml
│ │ │ │ ├── fade_in.xml
│ │ │ │ ├── fade_out.xml
│ │ │ │ ├── slide_in_left.xml
│ │ │ │ ├── slide_out_down.xml
│ │ │ │ └── slide_out_right.xml
│ │ │ ├── drawable-hdpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-ldpi
│ │ │ │ └── icon.png
│ │ │ ├── drawable-mdpi
│ │ │ │ └── icon.png
│ │ │ ├── layout
│ │ │ │ ├── details.xml
│ │ │ │ └── main.xml
│ │ │ ├── layout-land
│ │ │ │ └── main.xml
│ │ │ └── values
│ │ │ └── strings.xml
│ │ └── src
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── bard
│ │ ├── DetailsActivity.java
│ │ ├── DetailsFragment.java
│ │ ├── MainActivity.java
│ │ ├── Shakespeare.java
│ │ └── TitlesFragment.java
│ └── ShakespeareSDK
│ ├── AndroidManifest.xml
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── fragments
│ │ └── bard
│ │ └── R.java
│ ├── proguard.cfg
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── icon.png
│ │ ├── drawable-ldpi
│ │ │ └── icon.png
│ │ ├── drawable-mdpi
│ │ │ └── icon.png
│ │ ├── layout
│ │ │ ├── details.xml
│ │ │ └── main.xml
│ │ ├── layout-land
│ │ │ └── main.xml
│ │ └── values
│ │ └── strings.xml
│ └── src
│ └── com
│ └── androidbook
│ └── fragments
│ └── bard
│ ├── DetailsActivity.java
│ ├── DetailsFragment.java
│ ├── MainActivity.java
│ ├── Shakespeare.java
│ └── TitlesFragment.java
├── ProAndroid3_Ch30_Actionbar
│ └── TestActionBar30
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── actionbar
│ │ │ ├── BaseActionBarActivity.class
│ │ │ ├── BaseListener.class
│ │ │ ├── DebugActivity.class
│ │ │ ├── IReportBack.class
│ │ │ ├── ListListener.class
│ │ │ ├── ListNavigationActionBarActivity.class
│ │ │ ├── R$attr.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R.class
│ │ │ ├── SimpleSpinnerArrayAdapter.class
│ │ │ ├── StandardNavigationActionBarActivity.class
│ │ │ ├── TabListener.class
│ │ │ └── TabNavigationActionBarActivity.class
│ │ ├── resources.ap_
│ │ └── TestActionBar30_v2.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── actionbar
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── balloons.jpg
│ │ │ ├── creep001.png
│ │ │ ├── creep002.png
│ │ │ ├── creep003.png
│ │ │ ├── creep004.png
│ │ │ ├── creep005.png
│ │ │ ├── creep006.png
│ │ │ ├── creep007.png
│ │ │ ├── creep008.png
│ │ │ ├── icon48x48_1.png
│ │ │ ├── icon48x48_2.png
│ │ │ ├── icon.png
│ │ │ └── robot.png
│ │ ├── layout
│ │ │ └── main.xml
│ │ └── menu
│ │ └── menu.xml
│ └── src
│ └── com
│ └── androidbook
│ └── actionbar
│ ├── BaseActionBarActivity.java
│ ├── BaseListener.java
│ ├── DebugActivity.java
│ ├── IReportBack.java
│ ├── ListListener.java
│ ├── ListNavigationActionBarActivity.java
│ ├── SimpleSpinnerArrayAdapter.java
│ ├── StandardNavigationActionBarActivity.java
│ ├── TabListener.java
│ └── TabNavigationActionBarActivity.java
├── ProAndroid3_Ch31_ListWidgets
│ └── TestListWidget
│ ├── AndroidManifest.xml
│ ├── bin
│ │ ├── classes.dex
│ │ ├── com
│ │ │ └── androidbook
│ │ │ └── homewidgets
│ │ │ └── listwidget
│ │ │ ├── R$attr.class
│ │ │ ├── R$color.class
│ │ │ ├── R$drawable.class
│ │ │ ├── R$id.class
│ │ │ ├── R$layout.class
│ │ │ ├── R$menu.class
│ │ │ ├── R$string.class
│ │ │ ├── R$xml.class
│ │ │ ├── R.class
│ │ │ ├── TestListWidgetProvider.class
│ │ │ ├── TestRemoteViewsFactory.class
│ │ │ └── TestRemoteViewsService.class
│ │ ├── resources.ap_
│ │ └── TestListWidget.apk
│ ├── default.properties
│ ├── gen
│ │ └── com
│ │ └── androidbook
│ │ └── homewidgets
│ │ └── listwidget
│ │ └── R.java
│ ├── res
│ │ ├── drawable
│ │ │ ├── box1.xml
│ │ │ ├── icon.png
│ │ │ ├── robot.png
│ │ │ ├── shape_1.xml
│ │ │ ├── shape1.xml
│ │ │ ├── shape_2.xml
│ │ │ ├── shape_3.xml
│ │ │ ├── shape_4.xml
│ │ │ └── shape_5.xml
│ │ ├── layout
│ │ │ ├── list_item_layout.xml
│ │ │ └── test_list_widget_layout.xml
│ │ ├── menu
│ │ │ └── main_menu.xml
│ │ ├── values
│ │ │ ├── colors.xml
│ │ │ └── strings.xml
│ │ └── xml
│ │ └── test_list_appwidget_provider.xml
│ └── src
│ └── com
│ └── androidbook
│ └── homewidgets
│ └── listwidget
│ ├── TestListWidgetProvider.java
│ ├── TestRemoteViewsFactory.java
│ └── TestRemoteViewsService.java
└── ProAndroid3_Ch31_TestDragAndDrop
└── DragDropFragDemo
├── AndroidManifest.xml
├── default.properties
├── gen
│ └── com
│ └── androidbook
│ └── drag
│ └── drop
│ └── demo
│ └── R.java
├── proguard.cfg
├── res
│ ├── drawable-hdpi
│ │ └── icon.png
│ ├── drawable-ldpi
│ │ └── icon.png
│ ├── drawable-mdpi
│ │ └── icon.png
│ ├── layout
│ │ ├── dropzone.xml
│ │ ├── main.xml
│ │ └── palette.xml
│ └── values
│ ├── attrs.xml
│ └── strings.xml
└── src
└── com
└── androidbook
└── drag
└── drop
└── demo
├── Dot.java
├── DropZone.java
├── MainActivity.java
└── Palette.java
1757 directories, 1679 files
标签:
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论