summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.mk4
-rw-r--r--api/current.txt127
-rw-r--r--cmds/input/src/com/android/commands/input/Input.java16
-rw-r--r--core/java/android/accessibilityservice/AccessibilityServiceInfo.java21
-rw-r--r--core/java/android/accounts/AccountManager.java2
-rw-r--r--core/java/android/app/ActivityThread.java3
-rw-r--r--core/java/android/app/FragmentManager.java2
-rw-r--r--core/java/android/app/PendingIntent.java18
-rw-r--r--core/java/android/appwidget/AppWidgetManager.java12
-rw-r--r--core/java/android/content/res/Configuration.java8
-rw-r--r--core/java/android/database/DatabaseUtils.java12
-rw-r--r--core/java/android/database/sqlite/SQLiteConnection.java2
-rw-r--r--core/java/android/hardware/TriggerEventListener.java9
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java2
-rw-r--r--core/java/android/net/EthernetDataTracker.java1
-rw-r--r--core/java/android/net/SSLCertificateSocketFactory.java6
-rw-r--r--core/java/android/net/SSLSessionCache.java6
-rw-r--r--core/java/android/net/http/CertificateChainValidator.java17
-rw-r--r--core/java/android/net/http/HttpResponseCache.java72
-rw-r--r--core/java/android/net/http/HttpsConnection.java6
-rw-r--r--core/java/android/net/http/X509TrustManagerExtensions.java2
-rw-r--r--core/java/android/preference/Preference.java3
-rw-r--r--core/java/android/text/format/DateFormat.java30
-rw-r--r--core/java/android/util/SparseArray.java18
-rw-r--r--core/java/android/util/TimeUtils.java2
-rw-r--r--core/java/android/view/KeyEvent.java4
-rw-r--r--core/java/android/view/View.java5
-rw-r--r--core/java/android/view/ViewGroup.java2
-rw-r--r--core/java/android/webkit/BrowserFrame.java21
-rw-r--r--core/java/android/webkit/ClientCertRequestHandler.java6
-rw-r--r--core/java/android/widget/CalendarView.java2
-rw-r--r--core/java/android/widget/DatePicker.java42
-rw-r--r--core/java/android/widget/HeaderViewListAdapter.java12
-rw-r--r--core/java/android/widget/TextView.java54
-rw-r--r--core/java/android/widget/TimePicker.java10
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java30
-rw-r--r--core/jni/Android.mk1
-rw-r--r--core/jni/android_os_SELinux.cpp10
-rw-r--r--core/res/AndroidManifest.xml167
-rw-r--r--core/res/res/values-mcc202-mnc05/config.xml40
-rw-r--r--core/res/res/values-mcc208-mnc01/config.xml3
-rw-r--r--core/res/res/values-mcc208-mnc10/config.xml2
-rw-r--r--core/res/res/values-mcc214-mnc01/config.xml40
-rw-r--r--core/res/res/values-mcc214-mnc03/config.xml3
-rw-r--r--core/res/res/values-mcc214-mnc07/config.xml3
-rw-r--r--core/res/res/values-mcc302-mnc370/config.xml3
-rw-r--r--core/res/res/values-mcc302-mnc720/config.xml3
-rw-r--r--core/res/res/values-mcc302-mnc780/config.xml40
-rw-r--r--core/res/res/values-mcc310-mnc260/config.xml40
-rw-r--r--core/res/res/values-mcc425-mnc01/config.xml40
-rw-r--r--core/res/res/values-mcc425-mnc07/config.xml40
-rw-r--r--core/res/res/values-mcc454-mnc00/config.xml40
-rw-r--r--core/res/res/values-mcc454-mnc03/config.xml40
-rw-r--r--core/res/res/values-mcc505-mnc01/config.xml40
-rw-r--r--core/res/res/values/public.xml1
-rw-r--r--core/res/res/xml/sms_short_codes.xml2
-rw-r--r--core/tests/ConnectivityManagerTest/AndroidManifest.xml16
-rw-r--r--core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java88
-rw-r--r--core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java25
-rw-r--r--core/tests/coretests/Android.mk2
-rw-r--r--core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java2
-rw-r--r--docs/html/_redirects.yaml15
-rw-r--r--docs/html/about/dashboards/index.jd45
-rw-r--r--docs/html/design/media/devices_displays_density.pngbin8236 -> 11719 bytes
-rw-r--r--docs/html/design/media/devices_displays_density@2x.pngbin0 -> 40816 bytes
-rw-r--r--docs/html/design/style/devices-displays.jd2
-rw-r--r--docs/html/design/style/iconography.jd190
-rw-r--r--docs/html/design/style/metrics-grids.jd24
-rw-r--r--docs/html/distribute/googleplay/spotlight/index.jd33
-rw-r--r--docs/html/google/gcm/ccs.jd70
-rw-r--r--docs/html/google/gcm/client.jd24
-rw-r--r--docs/html/google/gcm/demo.jd16
-rw-r--r--docs/html/google/gcm/gcm.jd347
-rw-r--r--docs/html/google/gcm/gs.jd364
-rw-r--r--docs/html/google/gcm/helper.jd17
-rw-r--r--docs/html/google/gcm/index.jd3
-rw-r--r--docs/html/google/gcm/notifications.jd3
-rw-r--r--docs/html/google/gcm/server.jd160
-rw-r--r--docs/html/google/google_toc.cs11
-rw-r--r--docs/html/google/play/billing/billing_subscriptions.jd96
-rw-r--r--docs/html/google/play/billing/gp-purchase-status-api.jd166
-rw-r--r--docs/html/google/play/billing/index.jd1
-rw-r--r--docs/html/google/play/billing/v2/billing_reference.jd2
-rw-r--r--docs/html/guide/guide_toc.cs4
-rw-r--r--docs/html/guide/topics/data/backup.jd2
-rw-r--r--docs/html/guide/topics/renderscript/advanced.jd158
-rw-r--r--docs/html/guide/topics/renderscript/compute.jd528
-rw-r--r--docs/html/guide/topics/renderscript/index.jd20
-rw-r--r--docs/html/guide/topics/resources/localization.jd2
-rw-r--r--docs/html/index.jd7
-rw-r--r--docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html20
-rw-r--r--docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html18
-rw-r--r--docs/html/reference/com/google/android/gcm/GCMConstants.html18
-rw-r--r--docs/html/reference/com/google/android/gcm/GCMRegistrar.html18
-rw-r--r--docs/html/reference/com/google/android/gcm/package-summary.html28
-rw-r--r--docs/html/reference/com/google/android/gcm/server/Constants.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/Message.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/Message.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/MulticastResult.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/Result.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/Sender.html16
-rw-r--r--docs/html/reference/com/google/android/gcm/server/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.attr.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.color.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.drawable.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.id.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.string.html16
-rw-r--r--docs/html/reference/com/google/android/gms/R.styleable.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/AppState.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/AppStateClient.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/AppStateClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/OnSignOutCompleteListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/OnStateDeletedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/OnStateListLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/OnStateLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/appstate/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/auth/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/AccountPicker.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/ConnectionResult.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/Scopes.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/SignInButton.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/data/DataBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/data/Freezable.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/data/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/images/ImageManager.ImageReceiver.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/images/ImageManager.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/images/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/common/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/Game.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GameBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GameEntity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GamesClient.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GamesClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/GamesClientSettings.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/OnGamesLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/OnPlayersLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/OnSignOutCompleteListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/PageDirection.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/Player.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/PlayerBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/PlayerEntity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/RealTimeSocket.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/achievement/Achievement.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/achievement/OnAchievementUpdatedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/achievement/OnAchievementsLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/achievement/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardMetadataLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardScoresLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/OnScoreSubmittedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.Result.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationsLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeReliableMessageSentListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/games/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html16
-rw-r--r--docs/html/reference/com/google/android/gms/gcm/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/ActivityRecognitionClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/DetectedActivity.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/Geofence.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/Geofence.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationClient.OnAddGeofencesResultListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationClient.OnRemoveGeofencesResultListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationRequest.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html16
-rw-r--r--docs/html/reference/com/google/android/gms/location/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/CameraUpdate.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMap.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/LocationSource.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/MapFragment.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/MapView.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/MapsInitializer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/Projection.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/UiSettings.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/Circle.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/LatLng.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/Marker.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/Polygon.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/Polyline.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/Tile.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/TileProvider.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/model/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/maps/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/panorama/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.OnAccessRevokedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.OnMomentsLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.OnPeopleLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.OnPersonLoadedListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusClient.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusOneButton.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/PlusShare.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Collection.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.Type.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.OrderBy.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/Person.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html16
-rw-r--r--docs/html/reference/com/google/android/gms/plus/package-summary.html16
-rw-r--r--docs/html/reference/gcm-packages.html26
-rw-r--r--docs/html/reference/gms-packages.html16
-rw-r--r--docs/html/sdk/installing/migrate.jd11
-rw-r--r--docs/html/sdk/installing/studio-tips.jd11
-rw-r--r--docs/html/tools/extras/support-library.jd7
-rw-r--r--docs/html/training/basics/data-storage/databases.jd66
-rw-r--r--docs/html/training/location/receive-location-updates.jd25
-rw-r--r--graphics/java/android/renderscript/Allocation.java567
-rw-r--r--graphics/java/android/renderscript/AllocationAdapter.java1
-rw-r--r--graphics/java/android/renderscript/BaseObj.java16
-rw-r--r--graphics/java/android/renderscript/Byte2.java2
-rw-r--r--graphics/java/android/renderscript/Byte3.java2
-rw-r--r--graphics/java/android/renderscript/Byte4.java2
-rw-r--r--graphics/java/android/renderscript/Double2.java2
-rw-r--r--graphics/java/android/renderscript/Double3.java2
-rw-r--r--graphics/java/android/renderscript/Double4.java2
-rw-r--r--graphics/java/android/renderscript/Element.java48
-rw-r--r--graphics/java/android/renderscript/FieldPacker.java2
-rw-r--r--graphics/java/android/renderscript/FileA3D.java8
-rw-r--r--graphics/java/android/renderscript/Float2.java2
-rw-r--r--graphics/java/android/renderscript/Float3.java2
-rw-r--r--graphics/java/android/renderscript/Float4.java2
-rw-r--r--graphics/java/android/renderscript/Font.java2
-rw-r--r--graphics/java/android/renderscript/Int2.java2
-rw-r--r--graphics/java/android/renderscript/Int3.java2
-rw-r--r--graphics/java/android/renderscript/Int4.java2
-rw-r--r--graphics/java/android/renderscript/Long2.java2
-rw-r--r--graphics/java/android/renderscript/Long3.java2
-rw-r--r--graphics/java/android/renderscript/Long4.java2
-rw-r--r--graphics/java/android/renderscript/Matrix2f.java2
-rw-r--r--graphics/java/android/renderscript/Matrix3f.java2
-rw-r--r--graphics/java/android/renderscript/Matrix4f.java2
-rw-r--r--graphics/java/android/renderscript/Mesh.java4
-rw-r--r--graphics/java/android/renderscript/Program.java2
-rw-r--r--graphics/java/android/renderscript/ProgramFragment.java2
-rw-r--r--graphics/java/android/renderscript/ProgramVertex.java6
-rw-r--r--graphics/java/android/renderscript/RSDriverException.java2
-rw-r--r--graphics/java/android/renderscript/RSIllegalArgumentException.java2
-rw-r--r--graphics/java/android/renderscript/RSInvalidStateException.java2
-rw-r--r--graphics/java/android/renderscript/RSRuntimeException.java2
-rw-r--r--graphics/java/android/renderscript/RSSurfaceView.java4
-rw-r--r--graphics/java/android/renderscript/RenderScript.java63
-rw-r--r--graphics/java/android/renderscript/RenderScriptGL.java6
-rw-r--r--graphics/java/android/renderscript/Sampler.java16
-rw-r--r--graphics/java/android/renderscript/Script.java54
-rw-r--r--graphics/java/android/renderscript/ScriptC.java3
-rw-r--r--graphics/java/android/renderscript/ScriptGroup.java65
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java9
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicBlend.java39
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicBlur.java2
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java2
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java2
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java2
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicLUT.java2
-rw-r--r--graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java2
-rw-r--r--graphics/java/android/renderscript/Short2.java2
-rw-r--r--graphics/java/android/renderscript/Short3.java2
-rw-r--r--graphics/java/android/renderscript/Short4.java2
-rw-r--r--graphics/java/android/renderscript/Type.java39
-rw-r--r--graphics/java/android/renderscript/package.html5
-rw-r--r--keystore/java/android/security/AndroidKeyPairGenerator.java2
-rw-r--r--keystore/java/android/security/AndroidKeyStore.java4
-rw-r--r--keystore/java/android/security/KeyChain.java6
-rw-r--r--keystore/tests/Android.mk2
-rw-r--r--keystore/tests/src/android/security/AndroidKeyStoreTest.java2
-rw-r--r--media/java/android/media/MediaCodec.java2
-rw-r--r--media/java/android/media/MediaPlayer.java78
-rw-r--r--media/java/android/media/audiofx/AudioEffect.java32
-rw-r--r--media/jni/android_media_MediaPlayer.cpp64
-rw-r--r--native/android/input.cpp24
-rw-r--r--packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm339
-rw-r--r--packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm379
-rw-r--r--packages/InputDevices/res/values/strings.xml6
-rw-r--r--packages/InputDevices/res/xml/keyboard_layouts.xml8
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_signal_full_lte.pngbin0 -> 3002 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/ic_qs_signal_lte.pngbin0 -> 3000 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_data_connected_lte.pngbin0 -> 1128 bytes
-rw-r--r--packages/SystemUI/res/drawable-hdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2961 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_full_lte.pngbin0 -> 3014 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_lte.pngbin0 -> 3006 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_connected_lte.pngbin0 -> 2945 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2955 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_full_lte.pngbin0 -> 2958 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_lte.pngbin0 -> 2974 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_connected_lte.pngbin0 -> 1047 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2941 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_full_lte.pngbin0 -> 3046 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_lte.pngbin0 -> 3043 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_connected_lte.pngbin0 -> 2941 bytes
-rw-r--r--packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2947 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_signal_full_lte.pngbin0 -> 2966 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/ic_qs_signal_lte.pngbin0 -> 2974 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_data_connected_lte.pngbin0 -> 1047 bytes
-rw-r--r--packages/SystemUI/res/drawable-mdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2941 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_full_lte.pngbin0 -> 3047 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_lte.pngbin0 -> 3050 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_data_connected_lte.pngbin0 -> 1062 bytes
-rw-r--r--packages/SystemUI/res/drawable-xhdpi/stat_sys_data_fully_connected_lte.pngbin0 -> 2956 bytes
-rw-r--r--packages/SystemUI/res/values/config.xml3
-rw-r--r--packages/SystemUI/res/values/strings.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java20
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java11
-rw-r--r--preloaded-classes228
-rw-r--r--services/input/InputReader.cpp12
-rw-r--r--services/java/com/android/server/DevicePolicyManagerService.java2
-rw-r--r--services/java/com/android/server/InputMethodManagerService.java4
-rw-r--r--services/java/com/android/server/MountService.java2
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java1
-rw-r--r--services/java/com/android/server/pm/SELinuxMMAC.java2
-rw-r--r--services/java/com/android/server/wm/WindowManagerService.java29
-rw-r--r--telephony/java/android/telephony/PhoneNumberUtils.java5
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java6
-rw-r--r--tests/CoreTests/android/Android.mk2
-rw-r--r--tests/CoreTests/android/core/SSLSocketTest.java6
-rw-r--r--tools/aapt/Main.cpp1
-rw-r--r--wifi/java/android/net/wifi/SupplicantStateTracker.java26
-rw-r--r--wifi/java/android/net/wifi/WifiConfiguration.java2
-rw-r--r--wifi/java/android/net/wifi/WifiEnterpriseConfig.java2
-rw-r--r--wifi/java/android/net/wifi/WifiMonitor.java14
-rw-r--r--wifi/java/android/net/wifi/WifiStateMachine.java8
421 files changed, 6989 insertions, 2521 deletions
diff --git a/Android.mk b/Android.mk
index 151621c36c8b..331b6c1e5eb3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -247,7 +247,7 @@ LOCAL_INTERMEDIATE_SOURCES := \
$(framework_res_source_path)/com/android/internal/R.java
LOCAL_NO_STANDARD_LIBRARIES := true
-LOCAL_JAVA_LIBRARIES := bouncycastle core core-junit ext
+LOCAL_JAVA_LIBRARIES := bouncycastle conscrypt core core-junit ext okhttp
LOCAL_MODULE := framework
LOCAL_MODULE_CLASS := JAVA_LIBRARIES
@@ -415,7 +415,9 @@ framework_docs_LOCAL_INTERMEDIATE_SOURCES := \
framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES := \
bouncycastle \
+ conscrypt \
core \
+ okhttp \
ext \
framework \
mms-common \
diff --git a/api/current.txt b/api/current.txt
index ed1983481262..4d9fe6f4f5a2 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -639,6 +639,7 @@ package android {
field public static final int layout = 16842994; // 0x10100f2
field public static final int layoutAnimation = 16842988; // 0x10100ec
field public static final int layoutDirection = 16843698; // 0x10103b2
+ field public static final int layoutMode = 16843738; // 0x10103da
field public static final int layout_above = 16843140; // 0x1010184
field public static final int layout_alignBaseline = 16843142; // 0x1010186
field public static final int layout_alignBottom = 16843146; // 0x101018a
@@ -31561,7 +31562,7 @@ package java.io {
ctor public CharConversionException(java.lang.String);
}
- public abstract interface Closeable {
+ public abstract interface Closeable implements java.lang.AutoCloseable {
method public abstract void close() throws java.io.IOException;
}
@@ -31731,7 +31732,7 @@ package java.io {
method public abstract boolean accept(java.io.File);
}
- public class FileInputStream extends java.io.InputStream implements java.io.Closeable {
+ public class FileInputStream extends java.io.InputStream {
ctor public FileInputStream(java.io.File) throws java.io.FileNotFoundException;
ctor public FileInputStream(java.io.FileDescriptor);
ctor public FileInputStream(java.lang.String) throws java.io.FileNotFoundException;
@@ -31745,7 +31746,7 @@ package java.io {
ctor public FileNotFoundException(java.lang.String);
}
- public class FileOutputStream extends java.io.OutputStream implements java.io.Closeable {
+ public class FileOutputStream extends java.io.OutputStream {
ctor public FileOutputStream(java.io.File) throws java.io.FileNotFoundException;
ctor public FileOutputStream(java.io.File, boolean) throws java.io.FileNotFoundException;
ctor public FileOutputStream(java.io.FileDescriptor);
@@ -31884,7 +31885,7 @@ package java.io {
ctor public NotSerializableException(java.lang.String);
}
- public abstract interface ObjectInput implements java.io.DataInput {
+ public abstract interface ObjectInput implements java.lang.AutoCloseable java.io.DataInput {
method public abstract int available() throws java.io.IOException;
method public abstract void close() throws java.io.IOException;
method public abstract int read() throws java.io.IOException;
@@ -31946,7 +31947,7 @@ package java.io {
method public abstract void validateObject() throws java.io.InvalidObjectException;
}
- public abstract interface ObjectOutput implements java.io.DataOutput {
+ public abstract interface ObjectOutput implements java.lang.AutoCloseable java.io.DataOutput {
method public abstract void close() throws java.io.IOException;
method public abstract void flush() throws java.io.IOException;
method public abstract void write(byte[]) throws java.io.IOException;
@@ -32445,6 +32446,7 @@ package java.lang {
public class AssertionError extends java.lang.Error {
ctor public AssertionError();
+ ctor public AssertionError(java.lang.String, java.lang.Throwable);
ctor public AssertionError(java.lang.Object);
ctor public AssertionError(boolean);
ctor public AssertionError(char);
@@ -32454,10 +32456,15 @@ package java.lang {
ctor public AssertionError(double);
}
+ public abstract interface AutoCloseable {
+ method public abstract void close() throws java.lang.Exception;
+ }
+
public final class Boolean implements java.lang.Comparable java.io.Serializable {
ctor public Boolean(java.lang.String);
ctor public Boolean(boolean);
method public boolean booleanValue();
+ method public static int compare(boolean, boolean);
method public int compareTo(java.lang.Boolean);
method public static boolean getBoolean(java.lang.String);
method public static boolean parseBoolean(java.lang.String);
@@ -32472,6 +32479,7 @@ package java.lang {
public final class Byte extends java.lang.Number implements java.lang.Comparable {
ctor public Byte(byte);
ctor public Byte(java.lang.String) throws java.lang.NumberFormatException;
+ method public static int compare(byte, byte);
method public int compareTo(java.lang.Byte);
method public static java.lang.Byte decode(java.lang.String) throws java.lang.NumberFormatException;
method public double doubleValue();
@@ -32509,16 +32517,20 @@ package java.lang {
method public static int codePointBefore(char[], int, int);
method public static int codePointCount(java.lang.CharSequence, int, int);
method public static int codePointCount(char[], int, int);
+ method public static int compare(char, char);
method public int compareTo(java.lang.Character);
method public static int digit(char, int);
method public static int digit(int, int);
method public static char forDigit(int, int);
method public static byte getDirectionality(char);
method public static byte getDirectionality(int);
+ method public static java.lang.String getName(int);
method public static int getNumericValue(char);
method public static int getNumericValue(int);
method public static int getType(char);
method public static int getType(int);
+ method public static char highSurrogate(int);
+ method public static boolean isBmpCodePoint(int);
method public static boolean isDefined(char);
method public static boolean isDefined(int);
method public static boolean isDigit(char);
@@ -32547,6 +32559,7 @@ package java.lang {
method public static boolean isSpaceChar(char);
method public static boolean isSpaceChar(int);
method public static boolean isSupplementaryCodePoint(int);
+ method public static boolean isSurrogate(char);
method public static boolean isSurrogatePair(char, char);
method public static boolean isTitleCase(char);
method public static boolean isTitleCase(int);
@@ -32559,6 +32572,7 @@ package java.lang {
method public static boolean isValidCodePoint(int);
method public static boolean isWhitespace(char);
method public static boolean isWhitespace(int);
+ method public static char lowSurrogate(int);
method public static int offsetByCodePoints(java.lang.CharSequence, int, int);
method public static int offsetByCodePoints(char[], int, int, int, int);
method public static char reverseBytes(char);
@@ -32887,7 +32901,7 @@ package java.lang {
method protected final void setSigners(java.lang.Class<?>, java.lang.Object[]);
}
- public class ClassNotFoundException extends java.lang.Exception {
+ public class ClassNotFoundException extends java.lang.ReflectiveOperationException {
ctor public ClassNotFoundException();
ctor public ClassNotFoundException(java.lang.String);
ctor public ClassNotFoundException(java.lang.String, java.lang.Throwable);
@@ -33029,7 +33043,7 @@ package java.lang {
ctor public IllegalAccessError(java.lang.String);
}
- public class IllegalAccessException extends java.lang.Exception {
+ public class IllegalAccessException extends java.lang.ReflectiveOperationException {
ctor public IllegalAccessException();
ctor public IllegalAccessException(java.lang.String);
}
@@ -33078,7 +33092,7 @@ package java.lang {
ctor public InstantiationError(java.lang.String);
}
- public class InstantiationException extends java.lang.Exception {
+ public class InstantiationException extends java.lang.ReflectiveOperationException {
ctor public InstantiationException();
ctor public InstantiationException(java.lang.String);
}
@@ -33087,6 +33101,7 @@ package java.lang {
ctor public Integer(int);
ctor public Integer(java.lang.String) throws java.lang.NumberFormatException;
method public static int bitCount(int);
+ method public static int compare(int, int);
method public int compareTo(java.lang.Integer);
method public static java.lang.Integer decode(java.lang.String) throws java.lang.NumberFormatException;
method public double doubleValue();
@@ -33138,12 +33153,14 @@ package java.lang {
public class LinkageError extends java.lang.Error {
ctor public LinkageError();
ctor public LinkageError(java.lang.String);
+ ctor public LinkageError(java.lang.String, java.lang.Throwable);
}
public final class Long extends java.lang.Number implements java.lang.Comparable {
ctor public Long(long);
ctor public Long(java.lang.String) throws java.lang.NumberFormatException;
method public static int bitCount(long);
+ method public static int compare(long, long);
method public int compareTo(java.lang.Long);
method public static java.lang.Long decode(java.lang.String) throws java.lang.NumberFormatException;
method public double doubleValue();
@@ -33252,7 +33269,7 @@ package java.lang {
ctor public NoSuchFieldError(java.lang.String);
}
- public class NoSuchFieldException extends java.lang.Exception {
+ public class NoSuchFieldException extends java.lang.ReflectiveOperationException {
ctor public NoSuchFieldException();
ctor public NoSuchFieldException(java.lang.String);
}
@@ -33262,7 +33279,7 @@ package java.lang {
ctor public NoSuchMethodError(java.lang.String);
}
- public class NoSuchMethodException extends java.lang.Exception {
+ public class NoSuchMethodException extends java.lang.ReflectiveOperationException {
ctor public NoSuchMethodException();
ctor public NoSuchMethodException(java.lang.String);
}
@@ -33357,6 +33374,13 @@ package java.lang {
method public abstract int read(java.nio.CharBuffer) throws java.io.IOException;
}
+ public class ReflectiveOperationException extends java.lang.Exception {
+ ctor public ReflectiveOperationException();
+ ctor public ReflectiveOperationException(java.lang.String);
+ ctor public ReflectiveOperationException(java.lang.Throwable);
+ ctor public ReflectiveOperationException(java.lang.String, java.lang.Throwable);
+ }
+
public abstract interface Runnable {
method public abstract void run();
}
@@ -33400,6 +33424,9 @@ package java.lang {
ctor public RuntimePermission(java.lang.String, java.lang.String);
}
+ public abstract class SafeVarargs implements java.lang.annotation.Annotation {
+ }
+
public class SecurityException extends java.lang.RuntimeException {
ctor public SecurityException();
ctor public SecurityException(java.lang.String);
@@ -33456,6 +33483,7 @@ package java.lang {
public final class Short extends java.lang.Number implements java.lang.Comparable {
ctor public Short(java.lang.String) throws java.lang.NumberFormatException;
ctor public Short(short);
+ method public static int compare(short, short);
method public int compareTo(java.lang.Short);
method public static java.lang.Short decode(java.lang.String) throws java.lang.NumberFormatException;
method public double doubleValue();
@@ -33727,6 +33755,7 @@ package java.lang {
method public static java.util.Map<java.lang.String, java.lang.String> getenv();
method public static int identityHashCode(java.lang.Object);
method public static java.nio.channels.Channel inheritedChannel() throws java.io.IOException;
+ method public static java.lang.String lineSeparator();
method public static void load(java.lang.String);
method public static void loadLibrary(java.lang.String);
method public static java.lang.String mapLibraryName(java.lang.String);
@@ -33859,11 +33888,14 @@ package java.lang {
ctor public Throwable(java.lang.String);
ctor public Throwable(java.lang.String, java.lang.Throwable);
ctor public Throwable(java.lang.Throwable);
+ ctor protected Throwable(java.lang.String, java.lang.Throwable, boolean, boolean);
+ method public final void addSuppressed(java.lang.Throwable);
method public java.lang.Throwable fillInStackTrace();
method public java.lang.Throwable getCause();
method public java.lang.String getLocalizedMessage();
method public java.lang.String getMessage();
method public java.lang.StackTraceElement[] getStackTrace();
+ method public final java.lang.Throwable[] getSuppressed();
method public java.lang.Throwable initCause(java.lang.Throwable);
method public void printStackTrace();
method public void printStackTrace(java.io.PrintStream);
@@ -34115,7 +34147,7 @@ package java.lang.reflect {
method public abstract java.lang.Object invoke(java.lang.Object, java.lang.reflect.Method, java.lang.Object[]) throws java.lang.Throwable;
}
- public class InvocationTargetException extends java.lang.Exception {
+ public class InvocationTargetException extends java.lang.ReflectiveOperationException {
ctor protected InvocationTargetException();
ctor public InvocationTargetException(java.lang.Throwable);
ctor public InvocationTargetException(java.lang.Throwable, java.lang.String);
@@ -34158,6 +34190,10 @@ package java.lang.reflect {
public class Modifier {
ctor public Modifier();
+ method public static int classModifiers();
+ method public static int constructorModifiers();
+ method public static int fieldModifiers();
+ method public static int interfaceModifiers();
method public static boolean isAbstract(int);
method public static boolean isFinal(int);
method public static boolean isInterface(int);
@@ -34170,6 +34206,7 @@ package java.lang.reflect {
method public static boolean isSynchronized(int);
method public static boolean isTransient(int);
method public static boolean isVolatile(int);
+ method public static int methodModifiers();
method public static java.lang.String toString(int);
field public static final int ABSTRACT = 1024; // 0x400
field public static final int FINAL = 16; // 0x10
@@ -34509,7 +34546,7 @@ package java.net {
method public synchronized void setSocketAddress(java.net.SocketAddress);
}
- public class DatagramSocket {
+ public class DatagramSocket implements java.io.Closeable {
ctor public DatagramSocket() throws java.net.SocketException;
ctor public DatagramSocket(int) throws java.net.SocketException;
ctor public DatagramSocket(int, java.net.InetAddress) throws java.net.SocketException;
@@ -34706,6 +34743,7 @@ package java.net {
method public java.lang.String getHostAddress();
method public java.lang.String getHostName();
method public static java.net.InetAddress getLocalHost() throws java.net.UnknownHostException;
+ method public static java.net.InetAddress getLoopbackAddress();
method public boolean isAnyLocalAddress();
method public boolean isLinkLocalAddress();
method public boolean isLoopbackAddress();
@@ -34728,6 +34766,7 @@ package java.net {
method public final boolean equals(java.lang.Object);
method public final java.net.InetAddress getAddress();
method public final java.lang.String getHostName();
+ method public final java.lang.String getHostString();
method public final int getPort();
method public final int hashCode();
method public final boolean isUnresolved();
@@ -34784,10 +34823,12 @@ package java.net {
}
public final class NetworkInterface {
+ method public static java.net.NetworkInterface getByIndex(int) throws java.net.SocketException;
method public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress) throws java.net.SocketException;
method public static java.net.NetworkInterface getByName(java.lang.String) throws java.net.SocketException;
method public java.lang.String getDisplayName();
method public byte[] getHardwareAddress() throws java.net.SocketException;
+ method public int getIndex();
method public java.util.Enumeration<java.net.InetAddress> getInetAddresses();
method public java.util.List<java.net.InterfaceAddress> getInterfaceAddresses();
method public int getMTU() throws java.net.SocketException;
@@ -34865,7 +34906,7 @@ package java.net {
method public abstract java.util.List<java.security.cert.Certificate> getServerCertificateChain() throws javax.net.ssl.SSLPeerUnverifiedException;
}
- public class ServerSocket {
+ public class ServerSocket implements java.io.Closeable {
ctor public ServerSocket() throws java.io.IOException;
ctor public ServerSocket(int) throws java.io.IOException;
ctor public ServerSocket(int, int) throws java.io.IOException;
@@ -34891,7 +34932,7 @@ package java.net {
method public static synchronized void setSocketFactory(java.net.SocketImplFactory) throws java.io.IOException;
}
- public class Socket {
+ public class Socket implements java.io.Closeable {
ctor public Socket();
ctor public Socket(java.net.Proxy);
ctor public Socket(java.lang.String, int) throws java.io.IOException, java.net.UnknownHostException;
@@ -35569,9 +35610,10 @@ package java.nio.channels {
field public static final java.nio.channels.FileChannel.MapMode READ_WRITE;
}
- public abstract class FileLock {
+ public abstract class FileLock implements java.lang.AutoCloseable {
ctor protected FileLock(java.nio.channels.FileChannel, long, long, boolean);
method public final java.nio.channels.FileChannel channel();
+ method public final void close() throws java.io.IOException;
method public final boolean isShared();
method public abstract boolean isValid();
method public final boolean overlaps(long, long);
@@ -35686,7 +35728,7 @@ package java.nio.channels {
field public static final int OP_WRITE = 4; // 0x4
}
- public abstract class Selector {
+ public abstract class Selector implements java.io.Closeable {
ctor protected Selector();
method public abstract void close() throws java.io.IOException;
method public abstract boolean isOpen();
@@ -37622,7 +37664,7 @@ package java.sql {
method public abstract void truncate(long) throws java.sql.SQLException;
}
- public abstract interface Connection implements java.sql.Wrapper {
+ public abstract interface Connection implements java.lang.AutoCloseable java.sql.Wrapper {
method public abstract void clearWarnings() throws java.sql.SQLException;
method public abstract void close() throws java.sql.SQLException;
method public abstract void commit() throws java.sql.SQLException;
@@ -38051,7 +38093,7 @@ package java.sql {
method public abstract void setObject(java.lang.Object) throws java.sql.SQLException;
}
- public abstract interface ResultSet implements java.sql.Wrapper {
+ public abstract interface ResultSet implements java.lang.AutoCloseable java.sql.Wrapper {
method public abstract boolean absolute(int) throws java.sql.SQLException;
method public abstract void afterLast() throws java.sql.SQLException;
method public abstract void beforeFirst() throws java.sql.SQLException;
@@ -38557,7 +38599,7 @@ package java.sql {
method public abstract java.lang.String getSavepointName() throws java.sql.SQLException;
}
- public abstract interface Statement implements java.sql.Wrapper {
+ public abstract interface Statement implements java.lang.AutoCloseable java.sql.Wrapper {
method public abstract void addBatch(java.lang.String) throws java.sql.SQLException;
method public abstract void cancel() throws java.sql.SQLException;
method public abstract void clearBatch() throws java.sql.SQLException;
@@ -39457,11 +39499,19 @@ package java.util {
method public int nextClearBit(int);
method public int nextSetBit(int);
method public void or(java.util.BitSet);
+ method public int previousClearBit(int);
+ method public int previousSetBit(int);
method public void set(int);
method public void set(int, boolean);
method public void set(int, int, boolean);
method public void set(int, int);
method public int size();
+ method public byte[] toByteArray();
+ method public long[] toLongArray();
+ method public static java.util.BitSet valueOf(long[]);
+ method public static java.util.BitSet valueOf(java.nio.LongBuffer);
+ method public static java.util.BitSet valueOf(byte[]);
+ method public static java.util.BitSet valueOf(java.nio.ByteBuffer);
method public void xor(java.util.BitSet);
}
@@ -39594,7 +39644,10 @@ package java.util {
method public static java.util.SortedSet<E> checkedSortedSet(java.util.SortedSet<E>, java.lang.Class<E>);
method public static void copy(java.util.List<? super T>, java.util.List<? extends T>);
method public static boolean disjoint(java.util.Collection<?>, java.util.Collection<?>);
+ method public static java.util.Enumeration<T> emptyEnumeration();
+ method public static java.util.Iterator<T> emptyIterator();
method public static final java.util.List<T> emptyList();
+ method public static java.util.ListIterator<T> emptyListIterator();
method public static final java.util.Map<K, V> emptyMap();
method public static final java.util.Set<T> emptySet();
method public static java.util.Enumeration<T> enumeration(java.util.Collection<T>);
@@ -39647,11 +39700,16 @@ package java.util {
public class ConcurrentModificationException extends java.lang.RuntimeException {
ctor public ConcurrentModificationException();
ctor public ConcurrentModificationException(java.lang.String);
+ ctor public ConcurrentModificationException(java.lang.String, java.lang.Throwable);
+ ctor public ConcurrentModificationException(java.lang.Throwable);
}
public final class Currency implements java.io.Serializable {
+ method public static java.util.Set<java.util.Currency> getAvailableCurrencies();
method public java.lang.String getCurrencyCode();
method public int getDefaultFractionDigits();
+ method public java.lang.String getDisplayName();
+ method public java.lang.String getDisplayName(java.util.Locale);
method public static java.util.Currency getInstance(java.lang.String);
method public static java.util.Currency getInstance(java.util.Locale);
method public java.lang.String getSymbol();
@@ -40316,7 +40374,7 @@ package java.util {
field public static final long TTL_NO_EXPIRATION_CONTROL = -2L; // 0xfffffffffffffffeL
}
- public final class Scanner implements java.util.Iterator {
+ public final class Scanner implements java.io.Closeable java.util.Iterator {
ctor public Scanner(java.io.File) throws java.io.FileNotFoundException;
ctor public Scanner(java.io.File, java.lang.String) throws java.io.FileNotFoundException;
ctor public Scanner(java.lang.String);
@@ -41958,6 +42016,7 @@ package java.util.logging {
method public static java.util.logging.Logger getAnonymousLogger();
method public static java.util.logging.Logger getAnonymousLogger(java.lang.String);
method public java.util.logging.Filter getFilter();
+ method public static java.util.logging.Logger getGlobal();
method public java.util.logging.Handler[] getHandlers();
method public java.util.logging.Level getLevel();
method public static java.util.logging.Logger getLogger(java.lang.String);
@@ -42304,6 +42363,7 @@ package java.util.zip {
ctor public Deflater(int, boolean);
method public int deflate(byte[]);
method public synchronized int deflate(byte[], int, int);
+ method public synchronized int deflate(byte[], int, int, int);
method public synchronized void end();
method public synchronized void finish();
method public synchronized boolean finished();
@@ -42326,8 +42386,11 @@ package java.util.zip {
field public static final int DEFAULT_STRATEGY = 0; // 0x0
field public static final int DEFLATED = 8; // 0x8
field public static final int FILTERED = 1; // 0x1
+ field public static final int FULL_FLUSH = 3; // 0x3
field public static final int HUFFMAN_ONLY = 2; // 0x2
field public static final int NO_COMPRESSION = 0; // 0x0
+ field public static final int NO_FLUSH = 0; // 0x0
+ field public static final int SYNC_FLUSH = 2; // 0x2
}
public class DeflaterInputStream extends java.io.FilterInputStream {
@@ -42339,9 +42402,12 @@ package java.util.zip {
}
public class DeflaterOutputStream extends java.io.FilterOutputStream {
- ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);
ctor public DeflaterOutputStream(java.io.OutputStream);
+ ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater);
ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int);
+ ctor public DeflaterOutputStream(java.io.OutputStream, boolean);
+ ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, boolean);
+ ctor public DeflaterOutputStream(java.io.OutputStream, java.util.zip.Deflater, int, boolean);
method protected void deflate() throws java.io.IOException;
method public void finish() throws java.io.IOException;
field protected byte[] buf;
@@ -42436,7 +42502,7 @@ package java.util.zip {
ctor public ZipException(java.lang.String);
}
- public class ZipFile {
+ public class ZipFile implements java.io.Closeable {
ctor public ZipFile(java.io.File) throws java.io.IOException, java.util.zip.ZipException;
ctor public ZipFile(java.lang.String) throws java.io.IOException;
ctor public ZipFile(java.io.File, int) throws java.io.IOException;
@@ -42472,6 +42538,11 @@ package java.util.zip {
package javax.crypto {
+ public class AEADBadTagException extends javax.crypto.BadPaddingException {
+ ctor public AEADBadTagException();
+ ctor public AEADBadTagException(java.lang.String);
+ }
+
public class BadPaddingException extends java.security.GeneralSecurityException {
ctor public BadPaddingException(java.lang.String);
ctor public BadPaddingException();
@@ -42512,6 +42583,9 @@ package javax.crypto {
method public final int update(byte[], int, int, byte[]) throws javax.crypto.ShortBufferException;
method public final int update(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
method public final int update(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
+ method public final void updateAAD(byte[]);
+ method public final void updateAAD(byte[], int, int);
+ method public final void updateAAD(java.nio.ByteBuffer);
method public final byte[] wrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
field public static final int DECRYPT_MODE = 2; // 0x2
field public static final int ENCRYPT_MODE = 1; // 0x1
@@ -42551,6 +42625,8 @@ package javax.crypto {
method protected abstract byte[] engineUpdate(byte[], int, int);
method protected abstract int engineUpdate(byte[], int, int, byte[], int) throws javax.crypto.ShortBufferException;
method protected int engineUpdate(java.nio.ByteBuffer, java.nio.ByteBuffer) throws javax.crypto.ShortBufferException;
+ method protected void engineUpdateAAD(byte[], int, int);
+ method protected void engineUpdateAAD(java.nio.ByteBuffer);
method protected byte[] engineWrap(java.security.Key) throws javax.crypto.IllegalBlockSizeException, java.security.InvalidKeyException;
}
@@ -42809,6 +42885,13 @@ package javax.crypto.spec {
method public java.math.BigInteger getY();
}
+ public class GCMParameterSpec implements java.security.spec.AlgorithmParameterSpec {
+ ctor public GCMParameterSpec(int, byte[]);
+ ctor public GCMParameterSpec(int, byte[], int, int);
+ method public byte[] getIV();
+ method public int getTLen();
+ }
+
public class IvParameterSpec implements java.security.spec.AlgorithmParameterSpec {
ctor public IvParameterSpec(byte[]);
ctor public IvParameterSpec(byte[], int, int);
diff --git a/cmds/input/src/com/android/commands/input/Input.java b/cmds/input/src/com/android/commands/input/Input.java
index e43501cb6568..80ac53962c88 100644
--- a/cmds/input/src/com/android/commands/input/Input.java
+++ b/cmds/input/src/com/android/commands/input/Input.java
@@ -56,12 +56,14 @@ public class Input {
return;
}
} else if (command.equals("keyevent")) {
- if (args.length == 2) {
- int keyCode = KeyEvent.keyCodeFromString(args[1]);
- if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
- keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[1]);
+ if (args.length >= 2) {
+ for (int i=1; i < args.length; i++) {
+ int keyCode = KeyEvent.keyCodeFromString(args[i]);
+ if (keyCode == KeyEvent.KEYCODE_UNKNOWN) {
+ keyCode = KeyEvent.keyCodeFromString("KEYCODE_" + args[i]);
+ }
+ sendKeyEvent(keyCode);
}
- sendKeyEvent(keyCode);
return;
}
} else if (command.equals("tap")) {
@@ -237,7 +239,7 @@ public class Input {
DEFAULT_META_STATE, DEFAULT_PRECISION_X, DEFAULT_PRECISION_Y, DEFAULT_DEVICE_ID,
DEFAULT_EDGE_FLAGS);
event.setSource(inputSource);
- Log.i("Input", "injectMotionEvent: " + event);
+ Log.i(TAG, "injectMotionEvent: " + event);
InputManager.getInstance().injectInputEvent(event,
InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH);
}
@@ -249,7 +251,7 @@ public class Input {
private void showUsage() {
System.err.println("usage: input ...");
System.err.println(" input text <string>");
- System.err.println(" input keyevent <key code number or name>");
+ System.err.println(" input keyevent <key code number or name> ...");
System.err.println(" input [touchscreen|touchpad|touchnavigation] tap <x> <y>");
System.err.println(" input [touchscreen|touchpad|touchnavigation] swipe "
+ "<x1> <y1> <x2> <y2> [duration(ms)]");
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index de58a3331519..059945fc66f4 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -58,6 +58,18 @@ import java.util.List;
* developer guide.</p>
* </div>
*
+ * @attr ref android.R.styleable#AccessibilityService_accessibilityEventTypes
+ * @attr ref android.R.styleable#AccessibilityService_accessibilityFeedbackType
+ * @attr ref android.R.styleable#AccessibilityService_accessibilityFlags
+ * @attr ref android.R.styleable#AccessibilityService_canRequestEnhancedWebAccessibility
+ * @attr ref android.R.styleable#AccessibilityService_canRequestFilterKeyEvents
+ * @attr ref android.R.styleable#AccessibilityService_canRequestTouchExplorationMode
+ * @attr ref android.R.styleable#AccessibilityService_canRetrieveWindowContent
+ * @attr ref android.R.styleable#AccessibilityService_description
+ * @attr ref android.R.styleable#AccessibilityService_notificationTimeout
+ * @attr ref android.R.styleable#AccessibilityService_packageNames
+ * @attr ref android.R.styleable#AccessibilityService_settingsActivity
+ *
* @see AccessibilityService
* @see android.view.accessibility.AccessibilityEvent
* @see android.view.accessibility.AccessibilityManager
@@ -68,23 +80,27 @@ public class AccessibilityServiceInfo implements Parcelable {
/**
* Capability: This accessibility service can retrieve the active window content.
+ * @see android.R.styleable#AccessibilityService_canRetrieveWindowContent
*/
public static final int CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 0x00000001;
/**
* Capability: This accessibility service can request touch exploration mode in which
* touched items are spoken aloud and the UI can be explored via gestures.
+ * @see android.R.styleable#AccessibilityService_canRequestTouchExplorationMode
*/
public static final int CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 0x00000002;
/**
* Capability: This accessibility service can request enhanced web accessibility
* enhancements. For example, installing scripts to make app content more accessible.
+ * @see android.R.styleable#AccessibilityService_canRequestEnhancedWebAccessibility
*/
public static final int CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 0x00000004;
/**
- * Capability: This accessibility service can request to filter the key event stream.
+ * Capability: This accessibility service can request to filter the key event stream.
+ * @see android.R.styleable#AccessibilityService_canRequestFilterKeyEvents
*/
public static final int CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 0x00000008;
@@ -213,6 +229,7 @@ public class AccessibilityServiceInfo implements Parcelable {
* the first time they are run, if this flag is specified, a dialog is
* shown to the user to confirm enabling explore by touch.
* </p>
+ * @see android.R.styleable#AccessibilityService_canRequestTouchExplorationMode
*/
public static final int FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 0x0000004;
@@ -232,6 +249,7 @@ public class AccessibilityServiceInfo implements Parcelable {
* true, otherwise this flag will be ignored. For how to declare the meta-data
* of a service refer to {@value AccessibilityService#SERVICE_META_DATA}.
* </p>
+ * @see android.R.styleable#AccessibilityService_canRequestEnhancedWebAccessibility
*/
public static final int FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 0x00000008;
@@ -260,6 +278,7 @@ public class AccessibilityServiceInfo implements Parcelable {
* otherwise this flag will be ignored. For how to declare the meta-data
* of a service refer to {@value AccessibilityService#SERVICE_META_DATA}.
* </p>
+ * @see android.R.styleable#AccessibilityService_canRequestFilterKeyEvents
*/
public static final int FLAG_REQUEST_FILTER_KEY_EVENTS = 0x00000020;
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index b4a12c4bdbff..12fcdcfc7b57 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -822,7 +822,7 @@ public class AccountManager {
* {@link android.Manifest.permission#USE_CREDENTIALS}.
*
* @param account The account to fetch an auth token for
- * @param authTokenType The auth token type, see {#link getAuthToken}
+ * @param authTokenType The auth token type, see {@link #getAuthToken getAuthToken()}
* @param notifyAuthFailure If true, display a notification and return null
* if authentication fails; if false, prompt and wait for the user to
* re-enter correct credentials before returning
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index d4056c98beec..4268fa6211ae 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -92,8 +92,7 @@ import com.android.internal.os.BinderInternal;
import com.android.internal.os.RuntimeInit;
import com.android.internal.os.SamplingProfilerIntegration;
import com.android.internal.util.Objects;
-
-import org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl;
+import com.android.org.conscrypt.OpenSSLSocketImpl;
import java.io.File;
import java.io.FileDescriptor;
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 10ea109edc08..72c91562d647 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -1169,7 +1169,7 @@ final class FragmentManagerImpl extends FragmentManager {
if (!fragment.mHidden) {
fragment.mHidden = true;
if (fragment.mView != null) {
- Animator anim = loadAnimator(fragment, transition, true,
+ Animator anim = loadAnimator(fragment, transition, false,
transitionStyle);
if (anim != null) {
anim.setTarget(fragment.mView);
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index 25c790fd1232..bdd0adbbb436 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -207,8 +207,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should start
* the activity.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intent Intent of the activity to be launched.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
@@ -239,8 +238,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should start
* the activity.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intent Intent of the activity to be launched.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
@@ -332,8 +330,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should start
* the activity.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intents Array of Intents of the activities to be launched.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
@@ -383,8 +380,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should start
* the activity.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intents Array of Intents of the activities to be launched.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
@@ -454,8 +450,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should perform
* the broadcast.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intent The Intent to be broadcast.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
@@ -509,8 +504,7 @@ public final class PendingIntent implements Parcelable {
*
* @param context The Context in which this PendingIntent should start
* the service.
- * @param requestCode Private request code for the sender (currently
- * not used).
+ * @param requestCode Private request code for the sender
* @param intent An Intent describing the service to be started.
* @param flags May be {@link #FLAG_ONE_SHOT}, {@link #FLAG_NO_CREATE},
* {@link #FLAG_CANCEL_CURRENT}, {@link #FLAG_UPDATE_CURRENT},
diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java
index 1166e4b80319..d1c7becd8dfb 100644
--- a/core/java/android/appwidget/AppWidgetManager.java
+++ b/core/java/android/appwidget/AppWidgetManager.java
@@ -529,9 +529,9 @@ public class AppWidgetManager {
/**
* Notifies the specified collection view in all the specified AppWidget instances
- * to invalidate their currently data.
+ * to invalidate their data.
*
- * @param appWidgetIds The AppWidget instances for which to notify of view data changes.
+ * @param appWidgetIds The AppWidget instances to notify of view data changes.
* @param viewId The collection view id.
*/
public void notifyAppWidgetViewDataChanged(int[] appWidgetIds, int viewId) {
@@ -544,11 +544,11 @@ public class AppWidgetManager {
}
/**
- * Notifies the specified collection view in all the specified AppWidget instance
- * to invalidate it's currently data.
+ * Notifies the specified collection view in the specified AppWidget instance
+ * to invalidate its data.
*
- * @param appWidgetId The AppWidget instance for which to notify of view data changes.
- * @param viewId The collection view id.
+ * @param appWidgetId The AppWidget instance to notify of view data changes.
+ * @param viewId The collection view id.
*/
public void notifyAppWidgetViewDataChanged(int appWidgetId, int viewId) {
notifyAppWidgetViewDataChanged(new int[] { appWidgetId }, viewId);
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 905ae0ddec87..68db33a2e630 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -853,11 +853,13 @@ public final class Configuration implements Parcelable, Comparable<Configuration
changed |= ActivityInfo.CONFIG_SCREEN_SIZE;
screenHeightDp = delta.screenHeightDp;
}
- if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
- changed |= ActivityInfo.CONFIG_SCREEN_SIZE;
+ if (delta.smallestScreenWidthDp != SMALLEST_SCREEN_WIDTH_DP_UNDEFINED
+ && smallestScreenWidthDp != delta.smallestScreenWidthDp) {
+ changed |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
smallestScreenWidthDp = delta.smallestScreenWidthDp;
}
- if (delta.densityDpi != DENSITY_DPI_UNDEFINED) {
+ if (delta.densityDpi != DENSITY_DPI_UNDEFINED &&
+ densityDpi != delta.densityDpi) {
changed |= ActivityInfo.CONFIG_DENSITY;
densityDpi = delta.densityDpi;
}
diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java
index 1fc12263e4ee..e2d972451976 100644
--- a/core/java/android/database/DatabaseUtils.java
+++ b/core/java/android/database/DatabaseUtils.java
@@ -792,6 +792,18 @@ public class DatabaseUtils {
}
/**
+ * Query the table to check whether a table is empty or not
+ * @param db the database the table is in
+ * @param table the name of the table to query
+ * @return True if the table is empty
+ * @hide
+ */
+ public static boolean queryIsEmpty(SQLiteDatabase db, String table) {
+ long isEmpty = longForQuery(db, "select exists(select 1 from " + table + ")", null);
+ return isEmpty == 0;
+ }
+
+ /**
* Utility method to run the query on the db and return the value in the
* first column of the first row.
*/
diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java
index 4f59e8e7ceec..725a1ff6c9c0 100644
--- a/core/java/android/database/sqlite/SQLiteConnection.java
+++ b/core/java/android/database/sqlite/SQLiteConnection.java
@@ -30,9 +30,9 @@ import android.util.Log;
import android.util.LruCache;
import android.util.Printer;
-import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Date;
import java.util.Map;
import java.util.regex.Pattern;
diff --git a/core/java/android/hardware/TriggerEventListener.java b/core/java/android/hardware/TriggerEventListener.java
index 76b2796ff037..8fa970276c85 100644
--- a/core/java/android/hardware/TriggerEventListener.java
+++ b/core/java/android/hardware/TriggerEventListener.java
@@ -21,15 +21,14 @@ package android.hardware;
* Trigger Sensors are sensors that trigger an event and are automatically
* disabled. {@link Sensor#TYPE_SIGNIFICANT_MOTION} is one such example.
* <p>
- * SensorManager lets you access the device's {@link android.hardware.Sensor
- * sensors}. Get an instance of this class by calling
+ * {@link SensorManager} lets you access the device's {@link android.hardware.Sensor
+ * sensors}. Get an instance of {@link SensorManager} by calling
* {@link android.content.Context#getSystemService(java.lang.String)
* Context.getSystemService()} with the argument
* {@link android.content.Context#SENSOR_SERVICE}.
- * Usage details are explained in the example below.
- * </p>
+ * <p>Here's an example setup for a TriggerEventListener:
*
- * <pre class="prettyprint">
+ * <pre>
* class TriggerListener extends TriggerEventListener {
* public void onTrigger(TriggerEvent event) {
* // Do Work.
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 2b15afdde9ea..4881d1433489 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -431,7 +431,7 @@ public class InputMethodService extends AbstractInputMethodService {
}
}
// If user uses hard keyboard, IME button should always be shown.
- boolean showing = onEvaluateInputViewShown();
+ boolean showing = isInputViewShown();
mImm.setImeWindowStatus(mToken, IME_ACTIVE | (showing ? IME_VISIBLE : 0),
mBackDisposition);
if (resultReceiver != null) {
diff --git a/core/java/android/net/EthernetDataTracker.java b/core/java/android/net/EthernetDataTracker.java
index 27d5a58e4918..7b803a870092 100644
--- a/core/java/android/net/EthernetDataTracker.java
+++ b/core/java/android/net/EthernetDataTracker.java
@@ -178,6 +178,7 @@ public class EthernetDataTracker implements NetworkStateTracker {
}
mLinkProperties = dhcpResults.linkProperties;
+ mNetworkInfo.setIsAvailable(true);
mNetworkInfo.setDetailedState(DetailedState.CONNECTED, null, mHwAddr);
Message msg = mCsHandler.obtainMessage(EVENT_STATE_CHANGED, mNetworkInfo);
msg.sendToTarget();
diff --git a/core/java/android/net/SSLCertificateSocketFactory.java b/core/java/android/net/SSLCertificateSocketFactory.java
index 2a2f7cf81f84..37f04d308773 100644
--- a/core/java/android/net/SSLCertificateSocketFactory.java
+++ b/core/java/android/net/SSLCertificateSocketFactory.java
@@ -18,6 +18,9 @@ package android.net;
import android.os.SystemProperties;
import android.util.Log;
+import com.android.org.conscrypt.OpenSSLContextImpl;
+import com.android.org.conscrypt.OpenSSLSocketImpl;
+import com.android.org.conscrypt.SSLClientSessionCache;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
@@ -36,9 +39,6 @@ import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl;
-import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;
/**
* SSLSocketFactory implementation with several extra features:
diff --git a/core/java/android/net/SSLSessionCache.java b/core/java/android/net/SSLSessionCache.java
index 4cbeb947b8e3..15421de71111 100644
--- a/core/java/android/net/SSLSessionCache.java
+++ b/core/java/android/net/SSLSessionCache.java
@@ -16,12 +16,12 @@
package android.net;
-import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache;
-import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;
-
import android.content.Context;
import android.util.Log;
+import com.android.org.conscrypt.FileClientSessionCache;
+import com.android.org.conscrypt.SSLClientSessionCache;
+
import java.io.File;
import java.io.IOException;
diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java
index f66075d66b75..3652a4c12a19 100644
--- a/core/java/android/net/http/CertificateChainValidator.java
+++ b/core/java/android/net/http/CertificateChainValidator.java
@@ -16,21 +16,22 @@
package android.net.http;
+import com.android.org.conscrypt.SSLParametersImpl;
+import com.android.org.conscrypt.TrustManagerImpl;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import javax.net.ssl.DefaultHostnameVerifier;
import javax.net.ssl.SSLHandshakeException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.X509TrustManager;
-import org.apache.harmony.security.provider.cert.X509CertImpl;
-import org.apache.harmony.xnet.provider.jsse.SSLParametersImpl;
-import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl;
/**
* Class responsible for all server certificate validation functionality
@@ -118,8 +119,14 @@ public class CertificateChainValidator {
X509Certificate[] serverCertificates = new X509Certificate[certChain.length];
- for (int i = 0; i < certChain.length; ++i) {
- serverCertificates[i] = new X509CertImpl(certChain[i]);
+ try {
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ for (int i = 0; i < certChain.length; ++i) {
+ serverCertificates[i] = (X509Certificate) cf.generateCertificate(
+ new ByteArrayInputStream(certChain[i]));
+ }
+ } catch (CertificateException e) {
+ throw new IOException("can't read certificate", e);
}
return verifyServerDomainAndCertificates(serverCertificates, domain, authType);
diff --git a/core/java/android/net/http/HttpResponseCache.java b/core/java/android/net/http/HttpResponseCache.java
index 73f3d7cc339a..bd50bcf22890 100644
--- a/core/java/android/net/http/HttpResponseCache.java
+++ b/core/java/android/net/http/HttpResponseCache.java
@@ -17,21 +17,21 @@
package android.net.http;
import android.content.Context;
+import com.android.okhttp.ResponseSource;
+import com.android.okhttp.internal.DiskLruCache;
+import com.android.okhttp.internal.http.OkResponseCache;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.net.CacheRequest;
import java.net.CacheResponse;
-import java.net.ExtendedResponseCache;
import java.net.HttpURLConnection;
import java.net.ResponseCache;
-import java.net.ResponseSource;
import java.net.URI;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import javax.net.ssl.HttpsURLConnection;
-import libcore.io.DiskLruCache;
import libcore.io.IoUtils;
import org.apache.http.impl.client.DefaultHttpClient;
@@ -151,13 +151,12 @@ import org.apache.http.impl.client.DefaultHttpClient;
* } catch (Exception httpResponseCacheNotAvailable) {
* }}</pre>
*/
-public final class HttpResponseCache extends ResponseCache
- implements Closeable, ExtendedResponseCache {
+public final class HttpResponseCache extends ResponseCache implements Closeable {
- private final libcore.net.http.HttpResponseCache delegate;
+ private final com.android.okhttp.HttpResponseCache delegate;
- private HttpResponseCache(File directory, long maxSize) throws IOException {
- this.delegate = new libcore.net.http.HttpResponseCache(directory, maxSize);
+ private HttpResponseCache(com.android.okhttp.HttpResponseCache delegate) {
+ this.delegate = delegate;
}
/**
@@ -166,7 +165,12 @@ public final class HttpResponseCache extends ResponseCache
*/
public static HttpResponseCache getInstalled() {
ResponseCache installed = ResponseCache.getDefault();
- return installed instanceof HttpResponseCache ? (HttpResponseCache) installed : null;
+ if (installed instanceof com.android.okhttp.HttpResponseCache) {
+ return new HttpResponseCache(
+ (com.android.okhttp.HttpResponseCache) installed);
+ }
+
+ return null;
}
/**
@@ -181,22 +185,25 @@ public final class HttpResponseCache extends ResponseCache
* warning.
*/
public static HttpResponseCache install(File directory, long maxSize) throws IOException {
- HttpResponseCache installed = getInstalled();
- if (installed != null) {
+ ResponseCache installed = ResponseCache.getDefault();
+ if (installed instanceof com.android.okhttp.HttpResponseCache) {
+ com.android.okhttp.HttpResponseCache installedCache =
+ (com.android.okhttp.HttpResponseCache) installed;
// don't close and reopen if an equivalent cache is already installed
- DiskLruCache installedCache = installed.delegate.getCache();
if (installedCache.getDirectory().equals(directory)
- && installedCache.maxSize() == maxSize
+ && installedCache.getMaxSize() == maxSize
&& !installedCache.isClosed()) {
- return installed;
+ return new HttpResponseCache(installedCache);
} else {
- IoUtils.closeQuietly(installed);
+ // The HttpResponseCache that owns this object is about to be replaced.
+ installedCache.close();
}
}
- HttpResponseCache result = new HttpResponseCache(directory, maxSize);
- ResponseCache.setDefault(result);
- return result;
+ com.android.okhttp.HttpResponseCache responseCache =
+ new com.android.okhttp.HttpResponseCache(directory, maxSize);
+ ResponseCache.setDefault(responseCache);
+ return new HttpResponseCache(responseCache);
}
@Override public CacheResponse get(URI uri, String requestMethod,
@@ -214,7 +221,7 @@ public final class HttpResponseCache extends ResponseCache
* deletion is pending.
*/
public long size() {
- return delegate.getCache().size();
+ return delegate.getSize();
}
/**
@@ -222,7 +229,7 @@ public final class HttpResponseCache extends ResponseCache
* its data.
*/
public long maxSize() {
- return delegate.getCache().maxSize();
+ return delegate.getMaxSize();
}
/**
@@ -232,7 +239,7 @@ public final class HttpResponseCache extends ResponseCache
*/
public void flush() {
try {
- delegate.getCache().flush();
+ delegate.flush();
} catch (IOException ignored) {
}
}
@@ -263,39 +270,24 @@ public final class HttpResponseCache extends ResponseCache
return delegate.getRequestCount();
}
- /** @hide */
- @Override public void trackResponse(ResponseSource source) {
- delegate.trackResponse(source);
- }
-
- /** @hide */
- @Override public void trackConditionalCacheHit() {
- delegate.trackConditionalCacheHit();
- }
-
- /** @hide */
- @Override public void update(CacheResponse conditionalCacheHit, HttpURLConnection connection) {
- delegate.update(conditionalCacheHit, connection);
- }
-
/**
* Uninstalls the cache and releases any active resources. Stored contents
* will remain on the filesystem.
*/
@Override public void close() throws IOException {
- if (ResponseCache.getDefault() == this) {
+ if (ResponseCache.getDefault() == this.delegate) {
ResponseCache.setDefault(null);
}
- delegate.getCache().close();
+ delegate.close();
}
/**
* Uninstalls the cache and deletes all of its stored contents.
*/
public void delete() throws IOException {
- if (ResponseCache.getDefault() == this) {
+ if (ResponseCache.getDefault() == this.delegate) {
ResponseCache.setDefault(null);
}
- delegate.getCache().delete();
+ delegate.delete();
}
}
diff --git a/core/java/android/net/http/HttpsConnection.java b/core/java/android/net/http/HttpsConnection.java
index 84765a5cbcd2..f421d29dcabc 100644
--- a/core/java/android/net/http/HttpsConnection.java
+++ b/core/java/android/net/http/HttpsConnection.java
@@ -18,9 +18,9 @@ package android.net.http;
import android.content.Context;
import android.util.Log;
-import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl;
-import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;
+import com.android.org.conscrypt.FileClientSessionCache;
+import com.android.org.conscrypt.OpenSSLContextImpl;
+import com.android.org.conscrypt.SSLClientSessionCache;
import org.apache.http.Header;
import org.apache.http.HttpException;
import org.apache.http.HttpHost;
diff --git a/core/java/android/net/http/X509TrustManagerExtensions.java b/core/java/android/net/http/X509TrustManagerExtensions.java
index 64eacbc9ba0a..cfe5f27b9e86 100644
--- a/core/java/android/net/http/X509TrustManagerExtensions.java
+++ b/core/java/android/net/http/X509TrustManagerExtensions.java
@@ -16,7 +16,7 @@
package android.net.http;
-import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl;
+import com.android.org.conscrypt.TrustManagerImpl;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index e343e830d894..6c0296537b50 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -1072,6 +1072,9 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis
|| (mOrder == DEFAULT_ORDER && another.mOrder != DEFAULT_ORDER)) {
// Do order comparison
return mOrder - another.mOrder;
+ } else if (mTitle == another.mTitle) {
+ // If titles are null or share same object comparison
+ return 0;
} else if (mTitle == null) {
return 1;
} else if (another.mTitle == null) {
diff --git a/core/java/android/text/format/DateFormat.java b/core/java/android/text/format/DateFormat.java
index c497e35f7077..36b7d16e49a1 100644
--- a/core/java/android/text/format/DateFormat.java
+++ b/core/java/android/text/format/DateFormat.java
@@ -313,39 +313,13 @@ public class DateFormat {
* Gets the current date format stored as a char array. The array will contain
* 3 elements ({@link #DATE}, {@link #MONTH}, and {@link #YEAR}) in the order
* specified by the user's format preference. Note that this order is
- * only appropriate for all-numeric dates; spelled-out (MEDIUM and LONG)
+ * <i>only</i> appropriate for all-numeric dates; spelled-out (MEDIUM and LONG)
* dates will generally contain other punctuation, spaces, or words,
* not just the day, month, and year, and not necessarily in the same
* order returned here.
*/
public static char[] getDateFormatOrder(Context context) {
- char[] order = new char[] {DATE, MONTH, YEAR};
- String value = getDateFormatString(context);
- int index = 0;
- boolean foundDate = false;
- boolean foundMonth = false;
- boolean foundYear = false;
-
- for (char c : value.toCharArray()) {
- if (!foundDate && (c == DATE)) {
- foundDate = true;
- order[index] = DATE;
- index++;
- }
-
- if (!foundMonth && (c == MONTH || c == STANDALONE_MONTH)) {
- foundMonth = true;
- order[index] = MONTH;
- index++;
- }
-
- if (!foundYear && (c == YEAR)) {
- foundYear = true;
- order[index] = YEAR;
- index++;
- }
- }
- return order;
+ return ICU.getDateFormatOrder(getDateFormatString(context));
}
private static String getDateFormatString(Context context) {
diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java
index 366abd36294d..7e8fee56ea95 100644
--- a/core/java/android/util/SparseArray.java
+++ b/core/java/android/util/SparseArray.java
@@ -118,7 +118,7 @@ public class SparseArray<E> implements Cloneable {
mGarbage = true;
}
}
-
+
private void gc() {
// Log.e("SparseArray", "gc start with " + mSize);
@@ -214,7 +214,7 @@ public class SparseArray<E> implements Cloneable {
/**
* Given an index in the range <code>0...size()-1</code>, returns
* the key from the <code>index</code>th key-value mapping that this
- * SparseArray stores.
+ * SparseArray stores.
*/
public int keyAt(int index) {
if (mGarbage) {
@@ -223,11 +223,11 @@ public class SparseArray<E> implements Cloneable {
return mKeys[index];
}
-
+
/**
* Given an index in the range <code>0...size()-1</code>, returns
* the value from the <code>index</code>th key-value mapping that this
- * SparseArray stores.
+ * SparseArray stores.
*/
@SuppressWarnings("unchecked")
public E valueAt(int index) {
@@ -241,7 +241,7 @@ public class SparseArray<E> implements Cloneable {
/**
* Given an index in the range <code>0...size()-1</code>, sets a new
* value for the <code>index</code>th key-value mapping that this
- * SparseArray stores.
+ * SparseArray stores.
*/
public void setValueAt(int index, E value) {
if (mGarbage) {
@@ -250,7 +250,7 @@ public class SparseArray<E> implements Cloneable {
mValues[index] = value;
}
-
+
/**
* Returns the index for which {@link #keyAt} would return the
* specified key, or a negative number if the specified
@@ -268,9 +268,11 @@ public class SparseArray<E> implements Cloneable {
* Returns an index for which {@link #valueAt} would return the
* specified key, or a negative number if no keys map to the
* specified value.
- * Beware that this is a linear search, unlike lookups by key,
+ * <p>Beware that this is a linear search, unlike lookups by key,
* and that multiple keys can map to the same value and this will
* find only one of them.
+ * <p>Note also that unlike most collections' {@code indexOf} methods,
+ * this method compares values using {@code ==} rather than {@code equals}.
*/
public int indexOfValue(E value) {
if (mGarbage) {
@@ -332,7 +334,7 @@ public class SparseArray<E> implements Cloneable {
mValues[pos] = value;
mSize = pos + 1;
}
-
+
private static int binarySearch(int[] a, int start, int len, int key) {
int high = start + len, low = start - 1, guess;
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index 5a4f3227ec90..33964a067818 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -235,7 +235,7 @@ public class TimeUtils {
* during the lifetime of an activity.
*/
public static String getTimeZoneDatabaseVersion() {
- return ZoneInfoDB.getVersion();
+ return ZoneInfoDB.getInstance().getVersion();
}
/** @hide Field length that can hold 999 days of time */
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 0546d249dbe3..5db3909b0d0b 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -634,8 +634,8 @@ public class KeyEvent extends InputEvent implements Parcelable {
// NOTE: If you add a new keycode here you must also add it to:
// isSystem()
- // native/include/android/keycodes.h
- // frameworks/base/include/ui/KeycodeLabels.h
+ // frameworks/native/include/android/keycodes.h
+ // frameworks/base/include/androidfw/KeycodeLabels.h
// external/webkit/WebKit/android/plugins/ANPKeyCodes.h
// frameworks/base/core/res/res/values/attrs.xml
// emulator?
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 01d80ac337c8..50638aaf4491 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -10680,8 +10680,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
* handler can be used to pump events in the UI events queue.
*/
public Handler getHandler() {
- if (mAttachInfo != null) {
- return mAttachInfo.mHandler;
+ final AttachInfo attachInfo = mAttachInfo;
+ if (attachInfo != null) {
+ return attachInfo.mHandler;
}
return null;
}
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 382710da55e8..426c9d463f14 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -1507,9 +1507,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
if (lastHoverTarget != null) {
lastHoverTarget.next = hoverTarget;
} else {
- lastHoverTarget = hoverTarget;
mFirstHoverTarget = hoverTarget;
}
+ lastHoverTarget = hoverTarget;
// Dispatch the event to the child.
if (action == MotionEvent.ACTION_HOVER_ENTER) {
diff --git a/core/java/android/webkit/BrowserFrame.java b/core/java/android/webkit/BrowserFrame.java
index ce886f289a79..6955d149fbfd 100644
--- a/core/java/android/webkit/BrowserFrame.java
+++ b/core/java/android/webkit/BrowserFrame.java
@@ -40,13 +40,13 @@ import android.view.WindowManager;
import junit.framework.Assert;
+import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.URLEncoder;
-import java.nio.charset.Charsets;
import java.security.PrivateKey;
-import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashMap;
@@ -55,9 +55,8 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import org.apache.harmony.security.provider.cert.X509CertImpl;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLKey;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder;
+import com.android.org.conscrypt.OpenSSLKey;
+import com.android.org.conscrypt.OpenSSLKeyHolder;
class BrowserFrame extends Handler {
@@ -1081,10 +1080,12 @@ class BrowserFrame extends Handler {
String url) {
final SslError sslError;
try {
- X509Certificate cert = new X509CertImpl(certDER);
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ X509Certificate cert = (X509Certificate) cf.generateCertificate(
+ new ByteArrayInputStream(certDER));
SslCertificate sslCert = new SslCertificate(cert);
sslError = SslError.SslErrorFromChromiumErrorCode(certError, sslCert, url);
- } catch (IOException e) {
+ } catch (Exception e) {
// Can't get the certificate, not much to do.
Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling");
nativeSslCertErrorCancel(handle, certError);
@@ -1202,9 +1203,11 @@ class BrowserFrame extends Handler {
*/
private void setCertificate(byte cert_der[]) {
try {
- X509Certificate cert = new X509CertImpl(cert_der);
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ X509Certificate cert = (X509Certificate) cf.generateCertificate(
+ new ByteArrayInputStream(cert_der));
mCallbackProxy.onReceivedCertificate(new SslCertificate(cert));
- } catch (IOException e) {
+ } catch (Exception e) {
// Can't get the certificate, not much to do.
Log.e(LOGTAG, "Can't get the certificate from WebKit, canceling");
return;
diff --git a/core/java/android/webkit/ClientCertRequestHandler.java b/core/java/android/webkit/ClientCertRequestHandler.java
index f5a60f6e871d..d7a68060bf65 100644
--- a/core/java/android/webkit/ClientCertRequestHandler.java
+++ b/core/java/android/webkit/ClientCertRequestHandler.java
@@ -20,9 +20,9 @@ import android.os.Handler;
import java.security.PrivateKey;
import java.security.cert.CertificateEncodingException;
import java.security.cert.X509Certificate;
-import org.apache.harmony.xnet.provider.jsse.NativeCrypto;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLKey;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder;
+import com.android.org.conscrypt.NativeCrypto;
+import com.android.org.conscrypt.OpenSSLKey;
+import com.android.org.conscrypt.OpenSSLKeyHolder;
/**
* ClientCertRequestHandler: class responsible for handling client
diff --git a/core/java/android/widget/CalendarView.java b/core/java/android/widget/CalendarView.java
index 36d33e718e51..6970cdeab534 100644
--- a/core/java/android/widget/CalendarView.java
+++ b/core/java/android/widget/CalendarView.java
@@ -247,7 +247,7 @@ public class CalendarView extends FrameLayout {
/**
* Which month should be displayed/highlighted [0-11].
*/
- private int mCurrentMonthDisplayed;
+ private int mCurrentMonthDisplayed = -1;
/**
* Used for tracking during a scroll.
diff --git a/core/java/android/widget/DatePicker.java b/core/java/android/widget/DatePicker.java
index 8f515f53a295..d03161e4bc46 100644
--- a/core/java/android/widget/DatePicker.java
+++ b/core/java/android/widget/DatePicker.java
@@ -23,6 +23,7 @@ import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
+import android.text.InputType;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
import android.util.AttributeSet;
@@ -38,6 +39,7 @@ import android.widget.NumberPicker.OnValueChangeListener;
import com.android.internal.R;
+import java.text.DateFormatSymbols;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
@@ -45,6 +47,8 @@ import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;
+import libcore.icu.ICU;
+
/**
* This class is a widget for selecting a date. The date can be selected by a
* year, month, and day spinners or a {@link CalendarView}. The set of spinners
@@ -477,14 +481,27 @@ public class DatePicker extends FrameLayout {
mCurrentDate = getCalendarForLocale(mCurrentDate, locale);
mNumberOfMonths = mTempDate.getActualMaximum(Calendar.MONTH) + 1;
- mShortMonths = new String[mNumberOfMonths];
- for (int i = 0; i < mNumberOfMonths; i++) {
- mShortMonths[i] = DateUtils.getMonthString(Calendar.JANUARY + i,
- DateUtils.LENGTH_MEDIUM);
+ mShortMonths = new DateFormatSymbols().getShortMonths();
+
+ if (usingNumericMonths()) {
+ // We're in a locale where a date should either be all-numeric, or all-text.
+ // All-text would require custom NumberPicker formatters for day and year.
+ mShortMonths = new String[mNumberOfMonths];
+ for (int i = 0; i < mNumberOfMonths; ++i) {
+ mShortMonths[i] = String.format("%d", i + 1);
+ }
}
}
/**
+ * Tests whether the current locale is one where there are no real month names,
+ * such as Chinese, Japanese, or Korean locales.
+ */
+ private boolean usingNumericMonths() {
+ return Character.isDigit(mShortMonths[Calendar.JANUARY].charAt(0));
+ }
+
+ /**
* Gets a calendar for locale bootstrapped with the value of a given calendar.
*
* @param oldCalendar The old calendar.
@@ -508,24 +525,27 @@ public class DatePicker extends FrameLayout {
*/
private void reorderSpinners() {
mSpinners.removeAllViews();
- char[] order = DateFormat.getDateFormatOrder(getContext());
+ // We use numeric spinners for year and day, but textual months. Ask icu4c what
+ // order the user's locale uses for that combination. http://b/7207103.
+ String pattern = ICU.getBestDateTimePattern("yyyyMMMdd", Locale.getDefault().toString());
+ char[] order = ICU.getDateFormatOrder(pattern);
final int spinnerCount = order.length;
for (int i = 0; i < spinnerCount; i++) {
switch (order[i]) {
- case DateFormat.DATE:
+ case 'd':
mSpinners.addView(mDaySpinner);
setImeOptions(mDaySpinner, spinnerCount, i);
break;
- case DateFormat.MONTH:
+ case 'M':
mSpinners.addView(mMonthSpinner);
setImeOptions(mMonthSpinner, spinnerCount, i);
break;
- case DateFormat.YEAR:
+ case 'y':
mSpinners.addView(mYearSpinner);
setImeOptions(mYearSpinner, spinnerCount, i);
break;
default:
- throw new IllegalArgumentException();
+ throw new IllegalArgumentException(Arrays.toString(order));
}
}
}
@@ -660,6 +680,10 @@ public class DatePicker extends FrameLayout {
mYearSpinner.setValue(mCurrentDate.get(Calendar.YEAR));
mMonthSpinner.setValue(mCurrentDate.get(Calendar.MONTH));
mDaySpinner.setValue(mCurrentDate.get(Calendar.DAY_OF_MONTH));
+
+ if (usingNumericMonths()) {
+ mMonthSpinnerInput.setRawInputType(InputType.TYPE_CLASS_NUMBER);
+ }
}
/**
diff --git a/core/java/android/widget/HeaderViewListAdapter.java b/core/java/android/widget/HeaderViewListAdapter.java
index e2a269ea13ef..f9d8f920f883 100644
--- a/core/java/android/widget/HeaderViewListAdapter.java
+++ b/core/java/android/widget/HeaderViewListAdapter.java
@@ -144,7 +144,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
public boolean isEnabled(int position) {
- // Header (negative positions will throw an ArrayIndexOutOfBoundsException)
+ // Header (negative positions will throw an IndexOutOfBoundsException)
int numHeaders = getHeadersCount();
if (position < numHeaders) {
return mHeaderViewInfos.get(position).isSelectable;
@@ -160,12 +160,12 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
}
- // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
+ // Footer (off-limits positions will throw an IndexOutOfBoundsException)
return mFooterViewInfos.get(adjPosition - adapterCount).isSelectable;
}
public Object getItem(int position) {
- // Header (negative positions will throw an ArrayIndexOutOfBoundsException)
+ // Header (negative positions will throw an IndexOutOfBoundsException)
int numHeaders = getHeadersCount();
if (position < numHeaders) {
return mHeaderViewInfos.get(position).data;
@@ -181,7 +181,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
}
- // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
+ // Footer (off-limits positions will throw an IndexOutOfBoundsException)
return mFooterViewInfos.get(adjPosition - adapterCount).data;
}
@@ -205,7 +205,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
public View getView(int position, View convertView, ViewGroup parent) {
- // Header (negative positions will throw an ArrayIndexOutOfBoundsException)
+ // Header (negative positions will throw an IndexOutOfBoundsException)
int numHeaders = getHeadersCount();
if (position < numHeaders) {
return mHeaderViewInfos.get(position).view;
@@ -221,7 +221,7 @@ public class HeaderViewListAdapter implements WrapperListAdapter, Filterable {
}
}
- // Footer (off-limits positions will throw an ArrayIndexOutOfBoundsException)
+ // Footer (off-limits positions will throw an IndexOutOfBoundsException)
return mFooterViewInfos.get(adjPosition - adapterCount).view;
}
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 53cf82d6ff1d..04c407032d63 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -145,6 +145,13 @@ import static android.os.Build.VERSION_CODES.JELLY_BEAN_MR1;
* view for editing.
*
* <p>
+ * To allow users to copy some or all of the TextView's value and paste it somewhere else, set the
+ * XML attribute {@link android.R.styleable#TextView_textIsSelectable
+ * android:textIsSelectable} to "true" or call
+ * {@link #setTextIsSelectable setTextIsSelectable(true)}. The {@code textIsSelectable} flag
+ * allows users to make selection gestures in the TextView, which in turn triggers the system's
+ * built-in copy/paste controls.
+ * <p>
* <b>XML attributes</b>
* <p>
* See {@link android.R.styleable#TextView TextView Attributes},
@@ -4799,17 +4806,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
/**
- * When a TextView is used to display a useful piece of information to the user (such as a
- * contact's address), it should be made selectable, so that the user can select and copy this
- * content.
- *
- * Use {@link #setTextIsSelectable(boolean)} or the
- * {@link android.R.styleable#TextView_textIsSelectable} XML attribute to make this TextView
- * selectable (text is not selectable by default).
*
- * Note that this method simply returns the state of this flag. Although this flag has to be set
- * in order to select text in non-editable TextView, the content of an {@link EditText} can
- * always be selected, independently of the value of this flag.
+ * Returns the state of the {@code textIsSelectable} flag (See
+ * {@link #setTextIsSelectable setTextIsSelectable()}). Although you have to set this flag
+ * to allow users to select and copy text in a non-editable TextView, the content of an
+ * {@link EditText} can always be selected, independently of the value of this flag.
+ * <p>
*
* @return True if the text displayed in this TextView can be selected by the user.
*
@@ -4820,16 +4822,28 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
/**
- * Sets whether or not (default) the content of this view is selectable by the user.
- *
- * Note that this methods affect the {@link #setFocusable(boolean)},
- * {@link #setFocusableInTouchMode(boolean)} {@link #setClickable(boolean)} and
- * {@link #setLongClickable(boolean)} states and you may want to restore these if they were
- * customized.
- *
- * See {@link #isTextSelectable} for details.
- *
- * @param selectable Whether or not the content of this TextView should be selectable.
+ * Sets whether the content of this view is selectable by the user. The default is
+ * {@code false}, meaning that the content is not selectable.
+ * <p>
+ * When you use a TextView to display a useful piece of information to the user (such as a
+ * contact's address), make it selectable, so that the user can select and copy its
+ * content. You can also use set the XML attribute
+ * {@link android.R.styleable#TextView_textIsSelectable} to "true".
+ * <p>
+ * When you call this method to set the value of {@code textIsSelectable}, it sets
+ * the flags {@code focusable}, {@code focusableInTouchMode}, {@code clickable},
+ * and {@code longClickable} to the same value. These flags correspond to the attributes
+ * {@link android.R.styleable#View_focusable android:focusable},
+ * {@link android.R.styleable#View_focusableInTouchMode android:focusableInTouchMode},
+ * {@link android.R.styleable#View_clickable android:clickable}, and
+ * {@link android.R.styleable#View_longClickable android:longClickable}. To restore any of these
+ * flags to a state you had set previously, call one or more of the following methods:
+ * {@link #setFocusable(boolean) setFocusable()},
+ * {@link #setFocusableInTouchMode(boolean) setFocusableInTouchMode()},
+ * {@link #setClickable(boolean) setClickable()} or
+ * {@link #setLongClickable(boolean) setLongClickable()}.
+ *
+ * @param selectable Whether the content of this TextView should be selectable.
*/
public void setTextIsSelectable(boolean selectable) {
if (!selectable && mEditor == null) return; // false is default value with no edit data
diff --git a/core/java/android/widget/TimePicker.java b/core/java/android/widget/TimePicker.java
index e6796cb343df..e33c4d4da7a6 100644
--- a/core/java/android/widget/TimePicker.java
+++ b/core/java/android/widget/TimePicker.java
@@ -237,6 +237,7 @@ public class TimePicker extends FrameLayout {
// update controls to initial state
updateHourControl();
+ updateMinuteControl();
updateAmPmControl();
setOnTimeChangedListener(NO_OP_CHANGE_LISTENER);
@@ -428,6 +429,7 @@ public class TimePicker extends FrameLayout {
updateHourControl();
// set value after spinner range is updated
setCurrentHour(currentHour);
+ updateMinuteControl();
updateAmPmControl();
}
@@ -508,6 +510,14 @@ public class TimePicker extends FrameLayout {
}
}
+ private void updateMinuteControl() {
+ if (is24HourView()) {
+ mMinuteSpinnerInput.setImeOptions(EditorInfo.IME_ACTION_DONE);
+ } else {
+ mMinuteSpinnerInput.setImeOptions(EditorInfo.IME_ACTION_NEXT);
+ }
+ }
+
private void updateAmPmControl() {
if (is24HourView()) {
if (mAmPmSpinner != null) {
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 2184fd2e30d5..fb22df7e4850 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -34,6 +34,7 @@ import dalvik.system.Zygote;
import libcore.io.IoUtils;
import libcore.io.Libcore;
+import libcore.io.OsConstants;
import java.io.BufferedReader;
import java.io.FileDescriptor;
@@ -472,12 +473,25 @@ public class ZygoteInit {
*/
private static boolean startSystemServer()
throws MethodAndArgsCaller, RuntimeException {
+ long capabilities = posixCapabilitiesAsBits(
+ OsConstants.CAP_KILL,
+ OsConstants.CAP_NET_ADMIN,
+ OsConstants.CAP_NET_BIND_SERVICE,
+ OsConstants.CAP_NET_BROADCAST,
+ OsConstants.CAP_NET_RAW,
+ OsConstants.CAP_SYS_BOOT,
+ OsConstants.CAP_SYS_MODULE,
+ OsConstants.CAP_SYS_NICE,
+ OsConstants.CAP_SYS_RESOURCE,
+ OsConstants.CAP_SYS_TIME,
+ OsConstants.CAP_SYS_TTY_CONFIG
+ );
/* Hardcoded command line to start the system server */
String args[] = {
"--setuid=1000",
"--setgid=1000",
"--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,3001,3002,3003,3006,3007",
- "--capabilities=130104352,130104352",
+ "--capabilities=" + capabilities + "," + capabilities,
"--runtime-init",
"--nice-name=system_server",
"com.android.server.SystemServer",
@@ -511,6 +525,20 @@ public class ZygoteInit {
return true;
}
+ /**
+ * Gets the bit array representation of the provided list of POSIX capabilities.
+ */
+ private static long posixCapabilitiesAsBits(int... capabilities) {
+ long result = 0;
+ for (int capability : capabilities) {
+ if ((capability < 0) || (capability > OsConstants.CAP_LAST_CAP)) {
+ throw new IllegalArgumentException(String.valueOf(capability));
+ }
+ result |= (1L << capability);
+ }
+ return result;
+ }
+
public static void main(String argv[]) {
try {
// Start profiling the zygote initialization.
diff --git a/core/jni/Android.mk b/core/jni/Android.mk
index 594d5789517a..337c1ec994c3 100644
--- a/core/jni/Android.mk
+++ b/core/jni/Android.mk
@@ -230,6 +230,7 @@ endif
LOCAL_MODULE:= libandroid_runtime
+include external/stlport/libstlport.mk
include $(BUILD_SHARED_LIBRARY)
include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/core/jni/android_os_SELinux.cpp b/core/jni/android_os_SELinux.cpp
index 0a97f3922113..ca278cf00d4f 100644
--- a/core/jni/android_os_SELinux.cpp
+++ b/core/jni/android_os_SELinux.cpp
@@ -102,7 +102,7 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) {
return NULL;
}
- security_context_t tmp;
+ security_context_t tmp = NULL;
int ret = getpeercon(fd, &tmp);
Unique_SecurityContext context(tmp);
@@ -111,7 +111,7 @@ static jstring getPeerCon(JNIEnv *env, jobject, jobject fileDescriptor) {
contextStr.reset(env->NewStringUTF(context.get()));
}
- ALOGV("getPeerCon(%d) => %s", fd, contextStr.get());
+ ALOGV("getPeerCon(%d) => %s", fd, context.get());
return contextStr.release();
}
@@ -198,7 +198,7 @@ static jstring getFileCon(JNIEnv *env, jobject, jstring pathStr) {
return NULL;
}
- security_context_t tmp;
+ security_context_t tmp = NULL;
int ret = getfilecon(path.c_str(), &tmp);
Unique_SecurityContext context(tmp);
@@ -224,7 +224,7 @@ static jstring getCon(JNIEnv *env, jobject) {
return NULL;
}
- security_context_t tmp;
+ security_context_t tmp = NULL;
int ret = getcon(&tmp);
Unique_SecurityContext context(tmp);
@@ -251,7 +251,7 @@ static jstring getPidCon(JNIEnv *env, jobject, jint pid) {
return NULL;
}
- security_context_t tmp;
+ security_context_t tmp = NULL;
int ret = getpidcon(static_cast<pid_t>(pid), &tmp);
Unique_SecurityContext context(tmp);
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 619a10b9ef75..86e0a2c9af9d 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -216,7 +216,8 @@
android:description="@string/permdesc_sendSms" />
<!-- Allows an application (Phone) to send a request to other applications
- to handle the respond-via-message action during incoming calls. -->
+ to handle the respond-via-message action during incoming calls.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SEND_RESPOND_VIA_MESSAGE"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="signature|system"
@@ -240,7 +241,8 @@
android:description="@string/permdesc_receiveMms" />
<!-- Allows an application to receive emergency cell broadcast messages,
- to record or display them to the user. Reserved for system apps.
+ to record or display them to the user.
+ <p>Not for use by third-party applications.
@hide Pending API council approval -->
<permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST"
android:permissionGroup="android.permission-group.MESSAGES"
@@ -319,7 +321,8 @@
android:description="@string/permdesc_writeContacts" />
<!-- Allows an application to execute contacts directory search.
- This should only be used by ContactsProvider. -->
+ This should only be used by ContactsProvider.
+ <p>Not for use by third-party applications. -->
<!-- @hide -->
<permission android:name="android.permission.BIND_DIRECTORY_SEARCH"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
@@ -598,15 +601,16 @@
android:label="@string/permlab_accessLocationExtraCommands"
android:description="@string/permdesc_accessLocationExtraCommands" />
- <!-- Allows an application to install a location provider into the Location Manager -->
+ <!-- Allows an application to install a location provider into the Location Manager.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"
android:protectionLevel="signature|system"
android:label="@string/permlab_installLocationProvider"
android:description="@string/permdesc_installLocationProvider" />
<!-- Allows an application to use location features in hardware,
- such as the geofencing api
- Protected by signature|system protection level -->
+ such as the geofencing api.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.LOCATION_HARDWARE"
android:permissionGroup="android.permission-group.LOCATION"
android:protectionLevel="signature|system" />
@@ -769,8 +773,8 @@
android:label="@string/permlab_manageAccounts"
android:description="@string/permdesc_manageAccounts" />
- <!-- Allows applications to call into AccountAuthenticators. Only
- the system can get this permission. -->
+ <!-- Allows applications to call into AccountAuthenticators.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCOUNT_MANAGER"
android:permissionGroup="android.permission-group.ACCOUNTS"
android:protectionLevel="signature"
@@ -870,7 +874,8 @@
android:label="@string/permlab_accessMtp"
android:description="@string/permdesc_accessMtp" />
- <!-- Allows access to hardware peripherals. Intended only for hardware testing -->
+ <!-- Allows access to hardware peripherals. Intended only for hardware testing.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.HARDWARE_TEST"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="signature"
@@ -971,7 +976,8 @@
android:description="@string/permdesc_processOutgoingCalls" />
<!-- Allows modification of the telephony state - power on, mmi, etc.
- Does not include placing calls. -->
+ Does not include placing calls.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MODIFY_PHONE_STATE"
android:permissionGroup="android.permission-group.PHONE_CALLS"
android:protectionLevel="signature|system"
@@ -1257,7 +1263,8 @@
android:description="@string/permgroupdesc_systemClock"
android:priority="140" />
- <!-- Allows applications to set the system time -->
+ <!-- Allows applications to set the system time.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_TIME"
android:protectionLevel="signature|system"
android:label="@string/permlab_setTime"
@@ -1370,7 +1377,8 @@
android:label="@string/permlab_writeSettings"
android:description="@string/permdesc_writeSettings" />
- <!-- Allows an application to modify the Google service map. -->
+ <!-- Allows an application to modify the Google service map.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_GSERVICES"
android:protectionLevel="signature|system"
android:label="@string/permlab_writeGservices"
@@ -1393,7 +1401,8 @@
android:label="@string/permlab_retrieve_window_content"
android:description="@string/permdesc_retrieve_window_content" />
- <!-- Modify the global animation scaling factor. -->
+ <!-- Modify the global animation scaling factor.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ANIMATION_SCALE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1451,14 +1460,16 @@
android:label="@string/permlab_broadcastSticky"
android:description="@string/permdesc_broadcastSticky" />
- <!-- Allows mounting and unmounting file systems for removable storage. -->
+ <!-- Allows mounting and unmounting file systems for removable storage.
+ <p>Not for use by third-party applications.-->
<permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="system|signature"
android:label="@string/permlab_mount_unmount_filesystems"
android:description="@string/permdesc_mount_unmount_filesystems" />
- <!-- Allows formatting file systems for removable storage. -->
+ <!-- Allows formatting file systems for removable storage.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="system|signature"
@@ -1505,7 +1516,8 @@
android:label="@string/permlab_asec_rename"
android:description="@string/permdesc_asec_rename" />
- <!-- Allows applications to write the apn settings -->
+ <!-- Allows applications to write the apn settings.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_APN_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system"
@@ -1553,7 +1565,7 @@
<eat-comment />
<!-- Group of permissions that are related to development features. These
- are not permissions that should appear in normal applications; they
+ are not permissions that should appear in third-party applications; they
protect APIs that are intended only to be used for development
purposes. -->
<permission-group android:name="android.permission-group.DEVELOPMENT_TOOLS"
@@ -1561,15 +1573,16 @@
android:description="@string/permgroupdesc_developmentTools"
android:priority="310" />
- <!-- Allows an application to read or write the secure system settings. -->
+ <!-- Allows an application to read or write the secure system settings.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_SECURE_SETTINGS"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_writeSecureSettings"
android:description="@string/permdesc_writeSecureSettings" />
- <!-- Allows an application to retrieve state dump information from system
- services. -->
+ <!-- Allows an application to retrieve state dump information from system services.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DUMP"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1577,15 +1590,16 @@
android:description="@string/permdesc_dump" />
<!-- Allows an application to read the low-level system log files.
- Log entries can contain the user's private information,
- which is why this permission is not available to normal apps. -->
+ <p>Not for use by third-party applications, because
+ Log entries can contain the user's private information. -->
<permission android:name="android.permission.READ_LOGS"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_readLogs"
android:description="@string/permdesc_readLogs" />
- <!-- Configure an application for debugging. -->
+ <!-- Configure an application for debugging.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_DEBUG_APP"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1593,7 +1607,8 @@
android:description="@string/permdesc_setDebugApp" />
<!-- Allows an application to set the maximum number of (not needed)
- application processes that can be running. -->
+ application processes that can be running.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_PROCESS_LIMIT"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1601,14 +1616,16 @@
android:description="@string/permdesc_setProcessLimit" />
<!-- Allows an application to control whether activities are immediately
- finished when put in the background. -->
+ finished when put in the background.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ALWAYS_FINISH"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_setAlwaysFinish"
android:description="@string/permdesc_setAlwaysFinish" />
- <!-- Allow an application to request that a signal be sent to all persistent processes -->
+ <!-- Allow an application to request that a signal be sent to all persistent processes.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1620,7 +1637,8 @@
<!-- ==================================== -->
<eat-comment />
- <!-- Allows applications to RW to diagnostic resources. -->
+ <!-- Allows applications to RW to diagnostic resources.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DIAGNOSTIC"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature"
@@ -1628,7 +1646,8 @@
android:label="@string/permlab_diagnostic" />
<!-- Allows an application to open, close, or disable the status bar
- and its icons. -->
+ and its icons.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.STATUS_BAR"
android:label="@string/permlab_statusBar"
android:description="@string/permdesc_statusBar"
@@ -1642,14 +1661,15 @@
android:protectionLevel="signature" />
<!-- Allows an application to force a BACK operation on whatever is the
- top activity. -->
+ top activity.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.FORCE_BACK"
android:label="@string/permlab_forceBack"
android:description="@string/permdesc_forceBack"
android:protectionLevel="signature" />
- <!-- Allows an application to update device statistics. Not for
- use by third party apps. -->
+ <!-- Allows an application to update device statistics.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.UPDATE_DEVICE_STATS"
android:label="@string/permlab_updateBatteryStats"
android:description="@string/permdesc_updateBatteryStats"
@@ -1670,15 +1690,16 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to open windows that are for use by parts
- of the system user interface. Not for use by third party apps. -->
+ of the system user interface.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"
android:label="@string/permlab_internalSystemWindow"
android:description="@string/permdesc_internalSystemWindow"
android:protectionLevel="signature" />
<!-- Allows an application to manage (create, destroy,
- Z-order) application tokens in the window manager. This is only
- for use by the system. -->
+ Z-order) application tokens in the window manager.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MANAGE_APP_TOKENS"
android:label="@string/permlab_manageAppTokens"
android:description="@string/permdesc_manageAppTokens"
@@ -1694,7 +1715,7 @@
<!-- Allows an application to inject user events (keys, touch, trackball)
into the event stream and deliver them to ANY window. Without this
permission, you can only deliver events to windows in your own process.
- Very few applications should need to use this permission. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INJECT_EVENTS"
android:label="@string/permlab_injectEvents"
android:description="@string/permdesc_injectEvents"
@@ -1727,7 +1748,8 @@
<!-- Allows an application to watch and control how activities are
started globally in the system. Only for is in debugging
- (usually the monkey command). -->
+ (usually the monkey command).
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ACTIVITY_WATCHER"
android:label="@string/permlab_runSetActivityWatcher"
android:description="@string/permdesc_runSetActivityWatcher"
@@ -1752,14 +1774,16 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to retrieve private information about
- the current top activity, such as any assist context it can provide. -->
+ the current top activity, such as any assist context it can provide.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.GET_TOP_ACTIVITY_INFO"
android:label="@string/permlab_getTopActivityInfo"
android:description="@string/permdesc_getTopActivityInfo"
android:protectionLevel="signature" />
<!-- Allows an application to retrieve the current state of keys and
- switches. This is only for use by the system.
+ switches.
+ <p>Not for use by third-party applications.
@deprecated The API that used this permission has been removed. -->
<permission android:name="android.permission.READ_INPUT_STATE"
android:label="@string/permlab_readInputState"
@@ -1809,46 +1833,51 @@
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the orientation (actually
- rotation) of the screen. Not for use by normal applications. -->
+ rotation) of the screen.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ORIENTATION"
android:label="@string/permlab_setOrientation"
android:description="@string/permdesc_setOrientation"
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the pointer speed.
- Not for use by normal applications. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_POINTER_SPEED"
android:label="@string/permlab_setPointerSpeed"
android:description="@string/permdesc_setPointerSpeed"
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the keyboard layout.
- Not for use by normal applications.
+ <p>Not for use by third-party applications.
@hide -->
<permission android:name="android.permission.SET_KEYBOARD_LAYOUT"
android:label="@string/permlab_setKeyboardLayout"
android:description="@string/permdesc_setKeyboardLayout"
android:protectionLevel="signature" />
- <!-- Allows an application to install packages. -->
+ <!-- Allows an application to install packages.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INSTALL_PACKAGES"
android:label="@string/permlab_installPackages"
android:description="@string/permdesc_installPackages"
android:protectionLevel="signature|system" />
- <!-- Allows an application to clear user data -->
+ <!-- Allows an application to clear user data.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CLEAR_APP_USER_DATA"
android:label="@string/permlab_clearAppUserData"
android:description="@string/permdesc_clearAppUserData"
android:protectionLevel="signature" />
- <!-- Allows an application to delete cache files. -->
+ <!-- Allows an application to delete cache files.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DELETE_CACHE_FILES"
android:label="@string/permlab_deleteCacheFiles"
android:description="@string/permdesc_deleteCacheFiles"
android:protectionLevel="signature|system" />
- <!-- Allows an application to delete packages. -->
+ <!-- Allows an application to delete packages.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DELETE_PACKAGES"
android:label="@string/permlab_deletePackages"
android:description="@string/permdesc_deletePackages"
@@ -1862,7 +1891,8 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to change whether an application component (other than its own) is
- enabled or not. -->
+ enabled or not.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"
android:label="@string/permlab_changeComponentState"
android:description="@string/permdesc_changeComponentState"
@@ -1874,14 +1904,16 @@
android:description="@string/permdesc_grantRevokePermissions"
android:protectionLevel="signature" />
- <!-- Allows an application to use SurfaceFlinger's low level features -->
+ <!-- Allows an application to use SurfaceFlinger's low level features.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCESS_SURFACE_FLINGER"
android:label="@string/permlab_accessSurfaceFlinger"
android:description="@string/permdesc_accessSurfaceFlinger"
android:protectionLevel="signature" />
<!-- Allows an application to take screen shots and more generally
- get access to the frame buffer data -->
+ get access to the frame buffer data.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.READ_FRAME_BUFFER"
android:label="@string/permlab_readFrameBuffer"
android:description="@string/permdesc_readFrameBuffer"
@@ -1903,19 +1935,22 @@
android:description="@string/permdesc_controlWifiDisplay"
android:protectionLevel="signature" />
- <!-- Required to be able to disable the device (very dangerous!). -->
+ <!-- Required to be able to disable the device (very dangerous!).
+ <p>Not for use by third-party applications.. -->
<permission android:name="android.permission.BRICK"
android:label="@string/permlab_brick"
android:description="@string/permdesc_brick"
android:protectionLevel="signature" />
- <!-- Required to be able to reboot the device. -->
+ <!-- Required to be able to reboot the device.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.REBOOT"
android:label="@string/permlab_reboot"
android:description="@string/permdesc_reboot"
android:protectionLevel="signature|system" />
- <!-- Allows low-level access to power management -->
+ <!-- Allows low-level access to power management.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DEVICE_POWER"
android:label="@string/permlab_devicePower"
android:description="@string/permdesc_devicePower"
@@ -1927,34 +1962,39 @@
android:protectionLevel="signature" />
<!-- Run as a manufacturer test application, running as the root user.
- Only available when the device is running in manufacturer test mode. -->
+ Only available when the device is running in manufacturer test mode.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.FACTORY_TEST"
android:label="@string/permlab_factoryTest"
android:description="@string/permdesc_factoryTest"
android:protectionLevel="signature" />
<!-- Allows an application to broadcast a notification that an application
- package has been removed. -->
+ package has been removed.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:label="@string/permlab_broadcastPackageRemoved"
android:description="@string/permdesc_broadcastPackageRemoved"
android:protectionLevel="signature" />
- <!-- Allows an application to broadcast an SMS receipt notification -->
+ <!-- Allows an application to broadcast an SMS receipt notification.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_SMS"
android:permissionGroup="android.permission-group.MESSAGES"
android:label="@string/permlab_broadcastSmsReceived"
android:description="@string/permdesc_broadcastSmsReceived"
android:protectionLevel="signature" />
- <!-- Allows an application to broadcast a WAP PUSH receipt notification -->
+ <!-- Allows an application to broadcast a WAP PUSH receipt notification.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_WAP_PUSH"
android:permissionGroup="android.permission-group.MESSAGES"
android:label="@string/permlab_broadcastWapPush"
android:description="@string/permdesc_broadcastWapPush"
android:protectionLevel="signature" />
+ <!-- Not for use by third-party applications. -->
<permission android:name="android.permission.MASTER_CLEAR"
android:label="@string/permlab_masterClear"
android:description="@string/permdesc_masterClear"
@@ -1962,7 +2002,8 @@
<!-- Allows an application to call any phone number, including emergency
numbers, without going through the Dialer user interface for the user
- to confirm the call being placed. Not for use by third party apps. -->
+ to confirm the call being placed.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CALL_PRIVILEGED"
android:label="@string/permlab_callPrivileged"
android:description="@string/permdesc_callPrivileged"
@@ -1975,14 +2016,16 @@
android:protectionLevel="signature|system" />
<!-- Allows enabling/disabling location update notifications from
- the radio. Not for use by normal applications. -->
+ the radio.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CONTROL_LOCATION_UPDATES"
android:label="@string/permlab_locationUpdates"
android:description="@string/permdesc_locationUpdates"
android:protectionLevel="signature|system" />
<!-- Allows read/write access to the "properties" table in the checkin
- database, to change values that get uploaded. -->
+ database, to change values that get uploaded.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"
android:label="@string/permlab_checkinProperties"
android:description="@string/permdesc_checkinProperties"
@@ -2002,7 +2045,8 @@
android:description="@string/permdesc_batteryStats"
android:protectionLevel="dangerous" />
- <!-- Allows an application to control the backup and restore process
+ <!-- Allows an application to control the backup and restore process.
+ <p>Not for use by third-party applications.
@hide pending API council -->
<permission android:name="android.permission.BACKUP"
android:label="@string/permlab_backup"
@@ -2029,7 +2073,7 @@
picks an AppWidget to go into a particular host, thereby giving that
host application access to the private data from the AppWidget app.
An application that has this permission should honor that contract.
- Very few applications should need to use this permission. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BIND_APPWIDGET"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:label="@string/permlab_bindGadget"
@@ -2050,7 +2094,8 @@
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system" />
- <!-- Allows applications to change the background data setting
+ <!-- Allows applications to change the background data setting.
+ <p>Not for use by third-party applications.
@hide pending API council -->
<permission android:name="android.permission.CHANGE_BACKGROUND_DATA_SETTING"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
diff --git a/core/res/res/values-mcc202-mnc05/config.xml b/core/res/res/values-mcc202-mnc05/config.xml
new file mode 100644
index 000000000000..ec5ecaf12134
--- /dev/null
+++ b/core/res/res/values-mcc202-mnc05/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">Vf Tethering,internet.vodafone.gr,,,,,,,,,202,05,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc208-mnc01/config.xml b/core/res/res/values-mcc208-mnc01/config.xml
index c1489b199eb5..3b84ff231e68 100644
--- a/core/res/res/values-mcc208-mnc01/config.xml
+++ b/core/res/res/values-mcc208-mnc01/config.xml
@@ -34,5 +34,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">Orange Internet,orange.fr,,,,,,orange,orange,,208,01,,DUN</string>
+ <string translatable="false" name="config_tether_apndata">Orange Internet,orange.fr,,,orange,orange,,,,,208,01,1,DUN</string>
+
</resources>
diff --git a/core/res/res/values-mcc208-mnc10/config.xml b/core/res/res/values-mcc208-mnc10/config.xml
index 99cc599fed8d..358bef674c7b 100644
--- a/core/res/res/values-mcc208-mnc10/config.xml
+++ b/core/res/res/values-mcc208-mnc10/config.xml
@@ -33,6 +33,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">SFR Option Modem,websfr,,,,,,,,,208,10,,DUN"</string>
+ <string translatable="false" name="config_tether_apndata">SFR option modem,websfr,,,,,,,,,208,10,,DUN</string>
</resources>
diff --git a/core/res/res/values-mcc214-mnc01/config.xml b/core/res/res/values-mcc214-mnc01/config.xml
new file mode 100644
index 000000000000..1b7c462df3da
--- /dev/null
+++ b/core/res/res/values-mcc214-mnc01/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">INTERNET,airtelnet.es,,,vodafone,vodafone,,,,,214,01,1,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc214-mnc03/config.xml b/core/res/res/values-mcc214-mnc03/config.xml
index 02f1475acfad..4a51a2ffd03e 100644
--- a/core/res/res/values-mcc214-mnc03/config.xml
+++ b/core/res/res/values-mcc214-mnc03/config.xml
@@ -34,5 +34,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">Orange Internet PC,internet,,,,,,orange,orange,,214,03,,DUN</string>
+ <string translatable="false" name="config_tether_apndata">Orange Internet PC,internet,,,orange,orange,,,,,214,03,1,DUN</string>
+
</resources>
diff --git a/core/res/res/values-mcc214-mnc07/config.xml b/core/res/res/values-mcc214-mnc07/config.xml
index 4e3fa162cf62..b49ad74c36c6 100644
--- a/core/res/res/values-mcc214-mnc07/config.xml
+++ b/core/res/res/values-mcc214-mnc07/config.xml
@@ -34,5 +34,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">Conexión compartida,movistar.es,,,,,,MOVISTAR,MOVISTAR,,214,07,,DUN</string>
+ <string translatable="false" name="config_tether_apndata">Conexión Compartida,movistar.es,,,MOVISTAR,MOVISTAR,,,,,214,07,1,DUN</string>
+
</resources>
diff --git a/core/res/res/values-mcc302-mnc370/config.xml b/core/res/res/values-mcc302-mnc370/config.xml
index b1d363fac070..3d2ea757ae4a 100644
--- a/core/res/res/values-mcc302-mnc370/config.xml
+++ b/core/res/res/values-mcc302-mnc370/config.xml
@@ -34,5 +34,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">Fido Tethering,isp.fido.apn,,,,,,,,,302,370,,DUN</string>
+ <string translatable="false" name="config_tether_apndata">Fido LTE Tethering,ltedata.apn,,,,,,,,,302,370,,DUN</string>
+
</resources>
diff --git a/core/res/res/values-mcc302-mnc720/config.xml b/core/res/res/values-mcc302-mnc720/config.xml
index 40ef9391ffd8..680f1a38f5d1 100644
--- a/core/res/res/values-mcc302-mnc720/config.xml
+++ b/core/res/res/values-mcc302-mnc720/config.xml
@@ -34,5 +34,6 @@
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
- <string translatable="false" name="config_tether_apndata">Rogers Tethering,isp.apn,,,,,,,,,302,720,,DUN</string>
+ <string translatable="false" name="config_tether_apndata">Rogers LTE Tethering,ltedata.apn,,,,,,,,,302,720,,DUN</string>
+
</resources>
diff --git a/core/res/res/values-mcc302-mnc780/config.xml b/core/res/res/values-mcc302-mnc780/config.xml
new file mode 100644
index 000000000000..42d495691222
--- /dev/null
+++ b/core/res/res/values-mcc302-mnc780/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">SaskTel Tethering,inet.stm.sk.ca,,,,,,,,,302,780,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc310-mnc260/config.xml b/core/res/res/values-mcc310-mnc260/config.xml
new file mode 100644
index 000000000000..56a5d4effd8d
--- /dev/null
+++ b/core/res/res/values-mcc310-mnc260/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">T-Mobile Tethering,pcweb.tmobile.com,,,,,,,,,310,260,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc425-mnc01/config.xml b/core/res/res/values-mcc425-mnc01/config.xml
new file mode 100644
index 000000000000..f4854da5ede8
--- /dev/null
+++ b/core/res/res/values-mcc425-mnc01/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">DUN,modem.orange.net.il,,,,,,,,,425,01,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc425-mnc07/config.xml b/core/res/res/values-mcc425-mnc07/config.xml
new file mode 100644
index 000000000000..890420ecc2c0
--- /dev/null
+++ b/core/res/res/values-mcc425-mnc07/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">PC HOT mobile,pc.hotm,,,,,,,,,425,07,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc454-mnc00/config.xml b/core/res/res/values-mcc454-mnc00/config.xml
new file mode 100644
index 000000000000..c92b9c71da2b
--- /dev/null
+++ b/core/res/res/values-mcc454-mnc00/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">1O1O tethering,lte.internet,,,,,,,,,454,00,3,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc454-mnc03/config.xml b/core/res/res/values-mcc454-mnc03/config.xml
new file mode 100644
index 000000000000..c7dc960ae854
--- /dev/null
+++ b/core/res/res/values-mcc454-mnc03/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">3 Share,share.lte.three.com.hk,,,,,,,,,454,03,1,DUN</string>
+
+</resources>
diff --git a/core/res/res/values-mcc505-mnc01/config.xml b/core/res/res/values-mcc505-mnc01/config.xml
new file mode 100644
index 000000000000..f9d9ac7bf050
--- /dev/null
+++ b/core/res/res/values-mcc505-mnc01/config.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You my obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<!-- These resources are around just to allow their values to be customized
+ for different hardware and product builds. -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- Array of ConnectivityManager.TYPE_xxxx values allowable for tethering -->
+ <!-- Common options are [1, 4] for TYPE_WIFI and TYPE_MOBILE_DUN or
+ <!== [0,1,5,7] for TYPE_MOBILE, TYPE_WIFI, TYPE_MOBILE_HIPRI and TYPE_BLUETOOTH -->
+ <integer-array translatable="false" name="config_tether_upstream_types">
+ <item>1</item>
+ <item>4</item>
+ <item>7</item>
+ <item>9</item>
+ </integer-array>
+
+ <!-- String containing the apn value for tethering. May be overriden by secure settings
+ TETHER_DUN_APN. Value is a comma separated series of strings:
+ "name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"
+ note that empty fields can be ommitted: "name,apn,,,,,,,,,310,260,,DUN" -->
+ <string translatable="false" name="config_tether_apndata">Telstra Tethering,telstra.internet,,,,,,,,,505,01,,DUN</string>
+
+</resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 2d9713813d78..22ef31b8f047 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2046,6 +2046,7 @@
<public type="attr" name="canRequestTouchExplorationMode" id="0x010103d7" />
<public type="attr" name="canRequestEnhancedWebAccessibility" id="0x010103d8" />
<public type="attr" name="canRequestFilterKeyEvents" id="0x010103d9" />
+ <public type="attr" name="layoutMode" id="0x010103da" />
<public type="style" name="Theme.Holo.NoActionBar.Overscan" id="0x010301dd" />
<public type="style" name="Theme.Holo.Light.NoActionBar.Overscan" id="0x010301de" />
diff --git a/core/res/res/xml/sms_short_codes.xml b/core/res/res/xml/sms_short_codes.xml
index 8b395af0a7b3..7804dd2422c7 100644
--- a/core/res/res/xml/sms_short_codes.xml
+++ b/core/res/res/xml/sms_short_codes.xml
@@ -184,6 +184,6 @@
<shortcode country="ua" pattern="\\d{4}" premium="444[3-9]|70[579]4|7540" />
<!-- USA: 5-6 digits (premium codes from https://www.premiumsmsrefunds.com/ShortCodes.htm) -->
- <shortcode country="us" pattern="\\d{5,6}" premium="20433|21(?:344|472)|22715|23(?:333|847)|24(?:15|28)0|25209|27(?:449|606|663)|28498|305(?:00|83)|32(?:340|941)|33(?:166|786|849)|34746|35(?:182|564)|37975|38(?:135|146|254)|41(?:366|463)|42335|43(?:355|500)|44(?:578|711|811)|45814|46(?:157|173|327)|46666|47553|48(?:221|277|669)|50(?:844|920)|51(?:062|368)|52944|54(?:723|892)|55928|56483|57370|59(?:182|187|252|342)|60339|61(?:266|982)|62478|64(?:219|898)|65(?:108|500)|69(?:208|388)|70877|71851|72(?:078|087|465)|73(?:288|588|882|909|997)|74(?:034|332|815)|76426|79213|81946|83177|84(?:103|685)|85797|86(?:234|236|666)|89616|90(?:715|842|938)|91(?:362|958)|94719|95297|96(?:040|666|835|969)|97(?:142|294|688)|99(?:689|796|807)" />
+ <shortcode country="us" pattern="\\d{5,6}" premium="20433|21(?:344|472)|22715|23(?:333|847)|24(?:15|28)0|25209|27(?:449|606|663)|28498|305(?:00|83)|32(?:340|941)|33(?:166|786|849)|34746|35(?:182|564)|37975|38(?:135|146|254)|41(?:366|463)|42335|43(?:355|500)|44(?:578|711|811)|45814|46(?:157|173|327)|46666|47553|48(?:221|277|669)|50(?:844|920)|51(?:062|368)|52944|54(?:723|892)|55928|56483|57370|59(?:182|187|252|342)|60339|61(?:266|982)|62478|64(?:219|898)|65(?:108|500)|69(?:208|388)|70877|71851|72(?:078|087|465)|73(?:288|588|882|909|997)|74(?:034|332|815)|76426|79213|81946|83177|84(?:103|685)|85797|86(?:234|236|666)|89616|90(?:715|842|938)|91(?:362|958)|94719|95297|96(?:040|666|835|969)|97(?:142|294|688)|99(?:689|796|807)" free="87902" />
</shortcodes>
diff --git a/core/tests/ConnectivityManagerTest/AndroidManifest.xml b/core/tests/ConnectivityManagerTest/AndroidManifest.xml
index a63a4539d255..54881d53c240 100644
--- a/core/tests/ConnectivityManagerTest/AndroidManifest.xml
+++ b/core/tests/ConnectivityManagerTest/AndroidManifest.xml
@@ -32,11 +32,7 @@
</intent-filter>
</activity>
</application>
- <!-- default test runner -->
- <instrumentation android:name="android.test.InstrumentationTestRunner"
- android:targetPackage="com.android.connectivitymanagertest"
- android:label="default instrumentation test runner"
- />
+
<!--
This declares that this app uses the instrumentation test runner targeting
the package of connectivitymanagertest. To run the tests use the command:
@@ -68,6 +64,16 @@
android:label="Test runner for Connectivity Manager Stress Tests"
/>
+ <!-- run associate test:
+ "adb shell am instrument -e ssid <ssid> -e password <password>
+ -e ecurity-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
+ -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
+ -->
+ <instrumentation android:name=".WifiAssociationTestRunner"
+ android:targetPackage="com.android.connectivitymanagertest"
+ android:label="Test runner for Wifi association test"
+ />
+
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java
new file mode 100644
index 000000000000..722df2e21f81
--- /dev/null
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/WifiAssociationTestRunner.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2013, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.connectivitymanagertest;
+
+import android.content.Context;
+import android.net.wifi.WifiManager;
+import android.os.Bundle;
+import android.test.InstrumentationTestRunner;
+import android.test.InstrumentationTestSuite;
+import android.util.Log;
+
+import com.android.connectivitymanagertest.functional.WifiAssociationTest;
+
+import junit.framework.TestSuite;
+import junit.framework.Assert;
+
+/**
+ * Instrumentation Test Runner for wifi association test.
+ * The instrument will set frequency band if it is necessary
+ *
+ * To run the association tests:
+ *
+ * adb shell am instrument -e ssid <ssid> -e password <password> \
+ * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
+ * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
+ */
+public class WifiAssociationTestRunner extends InstrumentationTestRunner {
+ private static final String TAG = "WifiAssociationTestRunner";
+ public int mBand;
+
+ @Override
+ public TestSuite getAllTests() {
+ TestSuite suite = new InstrumentationTestSuite(this);
+ suite.addTestSuite(WifiAssociationTest.class);
+ return suite;
+ }
+
+ @Override
+ public ClassLoader getLoader() {
+ return WifiAssociationTestRunner.class.getClassLoader();
+ }
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ Bundle arguments = icicle;
+ String mFrequencyBand = arguments.getString("frequency-band");
+ if (mFrequencyBand != null) {
+ setFrequencyBand(mFrequencyBand);
+ }
+ }
+
+ private void setFrequencyBand(String band) {
+ WifiManager mWifiManager = (WifiManager)getContext().getSystemService(Context.WIFI_SERVICE);
+ if (band.equals("2.4")) {
+ Log.v(TAG, "set frequency band to 2.4");
+ mBand = WifiManager.WIFI_FREQUENCY_BAND_2GHZ;
+ } else if (band.equals("5.0")) {
+ Log.v(TAG, "set frequency band to 5.0");
+ mBand = WifiManager.WIFI_FREQUENCY_BAND_5GHZ;
+ } else if (band.equals("auto")) {
+ Log.v(TAG, "set frequency band to auto");
+ mBand = WifiManager.WIFI_FREQUENCY_BAND_AUTO;
+ } else {
+ Assert.fail("invalid frequency band");
+ }
+ int currentFreq = mWifiManager.getFrequencyBand();
+ if (mBand == currentFreq) {
+ Log.v(TAG, "frequency band has been set");
+ return;
+ }
+ mWifiManager.setFrequencyBand(mBand, true);
+ }
+}
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java
index 87a98bf734e3..f12e62e1fc4b 100644
--- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java
+++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/WifiAssociationTest.java
@@ -17,6 +17,7 @@
package com.android.connectivitymanagertest.functional;
import com.android.connectivitymanagertest.ConnectivityManagerTestActivity;
+import com.android.connectivitymanagertest.WifiAssociationTestRunner;
import android.content.Context;
import android.os.Bundle;
@@ -27,22 +28,19 @@ import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.GroupCipher;
import android.net.wifi.WifiConfiguration.PairwiseCipher;
import android.net.wifi.WifiConfiguration.Protocol;
-import android.net.wifi.WifiConfiguration.Status;
import android.net.wifi.WifiManager;
import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
-import android.test.InstrumentationTestRunner;
import android.util.Log;
/**
* Test Wi-Fi connection with different configuration
* To run this tests:
- * adb shell am instrument -e ssid <ssid> -e password <password>
- * -e security-type <security-type>
- * -w com.android.connectivitymanagertest/android.test.InstrumentationTestRunner
+ * * adb shell am instrument -e ssid <ssid> -e password <password> \
+ * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
+ * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
*/
public class WifiAssociationTest
extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> {
@@ -51,6 +49,8 @@ public class WifiAssociationTest
private String mSsid = null;
private String mPassword = null;
private String mSecurityType = null;
+ private String mFrequencyBand = null;
+ private int mBand;
private WifiManager mWifiManager = null;
enum SECURITY_TYPE {
@@ -64,15 +64,18 @@ public class WifiAssociationTest
@Override
public void setUp() throws Exception {
super.setUp();
- InstrumentationTestRunner mRunner = (InstrumentationTestRunner)getInstrumentation();
+ WifiAssociationTestRunner mRunner = (WifiAssociationTestRunner)getInstrumentation();
mWifiManager = (WifiManager) mRunner.getContext().getSystemService(Context.WIFI_SERVICE);
mAct = getActivity();
Bundle arguments = mRunner.getArguments();
mSecurityType = arguments.getString("security-type");
mSsid = arguments.getString("ssid");
mPassword = arguments.getString("password");
+ mFrequencyBand = arguments.getString("frequency-band");
+ mBand = mRunner.mBand;
assertNotNull("Security type is empty", mSecurityType);
assertNotNull("Ssid is empty", mSsid);
+ validateFrequencyBand();
// enable Wifi and verify wpa_supplicant is started
assertTrue("enable Wifi failed", mAct.enableWifi());
sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT,
@@ -88,6 +91,14 @@ public class WifiAssociationTest
super.tearDown();
}
+ private void validateFrequencyBand() {
+ if (mFrequencyBand != null) {
+ int currentFreq = mWifiManager.getFrequencyBand();
+ Log.v(TAG, "read frequency band: " + currentFreq);
+ assertTrue("device frequency band is not set successfully", (mBand == currentFreq));
+ }
+ }
+
/**
* Connect to the provided Wi-Fi network
* @param config is the network configuration
diff --git a/core/tests/coretests/Android.mk b/core/tests/coretests/Android.mk
index b6b15c46fb5e..22fa7fc0a456 100644
--- a/core/tests/coretests/Android.mk
+++ b/core/tests/coretests/Android.mk
@@ -23,7 +23,7 @@ LOCAL_SRC_FILES := \
LOCAL_DX_FLAGS := --core-library
LOCAL_STATIC_JAVA_LIBRARIES := core-tests android-common frameworks-core-util-lib mockwebserver guava littlemock
-LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common
+LOCAL_JAVA_LIBRARIES := android.test.runner conscrypt telephony-common
LOCAL_PACKAGE_NAME := FrameworksCoreTests
LOCAL_CERTIFICATE := platform
diff --git a/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java b/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java
index 60c40dbdc320..04aa62a3e38e 100644
--- a/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java
+++ b/core/tests/coretests/src/android/net/http/X509TrustManagerExtensionsTest.java
@@ -25,7 +25,7 @@ import javax.net.ssl.X509TrustManager;
import junit.framework.TestCase;
-import org.apache.harmony.xnet.provider.jsse.TrustManagerImpl;
+import com.android.org.conscrypt.TrustManagerImpl;
public class X509TrustManagerExtensionsTest extends TestCase {
diff --git a/docs/html/_redirects.yaml b/docs/html/_redirects.yaml
index a1473508be79..27cedcb82ea7 100644
--- a/docs/html/_redirects.yaml
+++ b/docs/html/_redirects.yaml
@@ -219,6 +219,21 @@ redirects:
- from: /guide/tutorials/...
to: /resources/tutorials/...
+# move ui docs to design
+
+- from: /guide/practices/ui_guidelines/index.html
+ to: /design/index.html
+
+- from: /guide/practices/ui_guidelines/icon_design.*
+ to: /design/style/iconography.html
+
+- from: /guide/practices/ui_guidelines/activity_task_design.html
+ to: /design/patterns/app-structure.html
+
+- from: /guide/practices/ui_guidelines/menu_design.html
+ to: /design/patterns/actionbar.html
+
+
# ------------------- RESOURCES -------------------
- from: /resources/dashboard/...
diff --git a/docs/html/about/dashboards/index.jd b/docs/html/about/dashboards/index.jd
index 6956634a9f28..43eead90f8bd 100644
--- a/docs/html/about/dashboards/index.jd
+++ b/docs/html/about/dashboards/index.jd
@@ -57,7 +57,7 @@ Platform Versions</a>.</p>
</div>
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013.
+<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013.
<br/>Any versions with less than 0.1% distribution are not shown.</em>
</p>
@@ -83,7 +83,7 @@ Screens</a>.</p>
</div>
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013
+<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013
<br/>Any screen configurations with less than 0.1% distribution are not shown.</em></p>
@@ -130,7 +130,7 @@ uses.</p>
-<p style="clear:both"><em>Data collected during a 14-day period ending on May 1, 2013</em></p>
+<p style="clear:both"><em>Data collected during a 14-day period ending on June 3, 2013</em></p>
@@ -148,7 +148,7 @@ uses.</p>
var VERSION_DATA =
[
{
- "chart": "//chart.googleapis.com/chart?chs=500x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A1.8%2C3.7%2C38.5%2C0.1%2C27.5%2C28.4&chco=c4df9b%2C6fad0c&chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean",
+ "chart": "//chart.googleapis.com/chart?chl=Eclair%7CFroyo%7CGingerbread%7CHoneycomb%7CIce%20Cream%20Sandwich%7CJelly%20Bean&chd=t%3A1.6%2C3.2%2C36.5%2C0.1%2C25.6%2C33.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=500x250",
"data": [
{
"api": 4,
@@ -158,12 +158,12 @@ var VERSION_DATA =
{
"api": 7,
"name": "Eclair",
- "perc": "1.7"
+ "perc": "1.5"
},
{
"api": 8,
"name": "Froyo",
- "perc": "3.7"
+ "perc": "3.2"
},
{
"api": 9,
@@ -173,7 +173,7 @@ var VERSION_DATA =
{
"api": 10,
"name": "Gingerbread",
- "perc": "38.4"
+ "perc": "36.4"
},
{
"api": 13,
@@ -183,17 +183,17 @@ var VERSION_DATA =
{
"api": 15,
"name": "Ice Cream Sandwich",
- "perc": "27.5"
+ "perc": "25.6"
},
{
"api": 16,
"name": "Jelly Bean",
- "perc": "26.1"
+ "perc": "29.0"
},
{
"api": 17,
"name": "Jelly Bean",
- "perc": "2.3"
+ "perc": "4.0"
}
]
}
@@ -205,35 +205,34 @@ var VERSION_DATA =
var SCREEN_DATA =
[
-
{
"data": {
"Large": {
"hdpi": "0.4",
"ldpi": "0.6",
- "mdpi": "2.9",
+ "mdpi": "3.0",
"tvdpi": "1.0",
- "xhdpi": "0.7"
+ "xhdpi": "0.6"
},
"Normal": {
- "hdpi": "37.3",
+ "hdpi": "36.0",
"ldpi": "0.1",
- "mdpi": "16.1",
- "xhdpi": "24.9",
- "xxhdpi": "1.3"
+ "mdpi": "16.0",
+ "xhdpi": "24.5",
+ "xxhdpi": "3.3"
},
"Small": {
- "ldpi": "9.8"
+ "hdpi": "0.1",
+ "ldpi": "9.9"
},
"Xlarge": {
- "hdpi": "0.1",
- "ldpi": "0.2",
- "mdpi": "4.5",
+ "hdpi": "0.2",
+ "mdpi": "4.2",
"xhdpi": "0.1"
}
},
- "densitychart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A10.7%2C23.5%2C1.0%2C37.8%2C25.7%2C1.3&chco=c4df9b%2C6fad0c&chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi",
- "layoutchart": "//chart.googleapis.com/chart?chs=400x250&cht=p&chf=bg%2Cs%2C00000000&chd=t%3A4.9%2C5.6%2C79.7%2C9.8&chco=c4df9b%2C6fad0c&chl=Xlarge%7CLarge%7CNormal%7CSmall"
+ "densitychart": "//chart.googleapis.com/chart?chl=ldpi%7Cmdpi%7Ctvdpi%7Chdpi%7Cxhdpi%7Cxxhdpi&chd=t%3A10.6%2C23.2%2C1.0%2C36.7%2C25.2%2C3.3&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250",
+ "layoutchart": "//chart.googleapis.com/chart?chl=Xlarge%7CLarge%7CNormal%7CSmall&chd=t%3A4.5%2C5.6%2C79.9%2C10.0&chf=bg%2Cs%2C00000000&chco=c4df9b%2C6fad0c&cht=p&chs=400x250"
}
];
diff --git a/docs/html/design/media/devices_displays_density.png b/docs/html/design/media/devices_displays_density.png
index 7ddad31efdad..4e3cbf66201d 100644
--- a/docs/html/design/media/devices_displays_density.png
+++ b/docs/html/design/media/devices_displays_density.png
Binary files differ
diff --git a/docs/html/design/media/devices_displays_density@2x.png b/docs/html/design/media/devices_displays_density@2x.png
new file mode 100644
index 000000000000..79a46b08c9d1
--- /dev/null
+++ b/docs/html/design/media/devices_displays_density@2x.png
Binary files differ
diff --git a/docs/html/design/style/devices-displays.jd b/docs/html/design/style/devices-displays.jd
index 18550d9ff0b6..a8f9d6f4e9bd 100644
--- a/docs/html/design/style/devices-displays.jd
+++ b/docs/html/design/style/devices-displays.jd
@@ -32,7 +32,7 @@ ensure that your app looks great on any device.</p>
</div>
</div>
- <img src="{@docRoot}design/media/devices_displays_density.png">
+ <img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />
<h4>Strategies</h4>
<p>So where do you begin when designing for multiple screens? One approach is to work in the base
diff --git a/docs/html/design/style/iconography.jd b/docs/html/design/style/iconography.jd
index 1475e5cee771..0d2cdbb57926 100644
--- a/docs/html/design/style/iconography.jd
+++ b/docs/html/design/style/iconography.jd
@@ -4,9 +4,37 @@ page.tags="icons"
<img src="{@docRoot}design/media/iconography_overview.png">
+
<p>An icon is a graphic that takes up a small portion of screen real estate and provides a quick,
intuitive representation of an action, a status, or an app.</p>
+<p>When you design icons for your app, it's important to keep in mind that your
+app may be installed on a variety of devices that offer a range of
+pixel densities, as mentioned in
+<a href="{@docRoot}design/style/devices-displays.html">Devices
+and Displays</a>. But you can make your icons look great on all devices
+by providing each icon in multiple sizes. When your app runs, Android checks the characteristics of
+the device screen and loads the appropriate density-specific assets for your app. </p>
+
+<p>Because you will deliver each icon in multiple sizes to support different densities,
+the design guidelines below
+refer to the icon dimensions in <acronym title="density-independent pixels">dp</acronym>
+units, which are based on the pixel dimensions of a medium-density (MDPI) screen.</p>
+
+<img src="{@docRoot}design/media/devices_displays_density@2x.png" alt="" height="160" />
+
+<p>So, to create an icon for different densities, you should follow the <strong>2:3:4:6 scaling
+ratio</strong> between the four primary densities (medium, high, x-high, and xx-high,
+respectively). For example, consider that the size for a launcher icon is specified to be
+48x48 dp. This means the baseline (MDPI) asset is 48x48 px, and the
+high density (HDPI) asset should be 1.5x the baseline at 72x72 px, and the x-high
+density (XHDPI) asset should be 2x the baseline at 96x96 px, and so on.</p>
+
+<p class="note"><strong>Note:</strong> Android also supports low-density (LDPI) screens,
+but you normally don't need to create custom assets at this size because Android
+effectively down-scales your HDPI assets by 1/2 to match the expected size.</p>
+
+
<h2 id="launcher">Launcher</h2>
@@ -338,3 +366,165 @@ whenever a new notification is available.</p>
</div>
<!-- 2 free columns -->
</div>
+
+
+
+
+
+
+
+
+
+
+<h2 id="DesignTips">Design Tips</h2>
+
+<p>Here are some tips you might find useful as you create icons or other
+drawable assets for your application. These tips assume you are using
+Adobe&reg; Photoshop&reg; or a similar raster and vector image-editing program.</p>
+
+
+
+
+<h3>Use vector shapes where possible</h3>
+
+<p>Many image-editing programs such as Adobe&reg; Photoshop&reg; allow you to use a
+combination of vector shapes and raster layers and effects. When possible,
+use vector shapes so that if the need arises, assets can be scaled up without
+loss of detail and edge crispness.</p>
+
+<p>Using vectors also makes it easy to align edges and corners to pixel
+boundaries at smaller resolutions.</li>
+
+
+
+<h3>Start with large artboards</h3>
+
+<p>Because you will need to create assets for different screen densities,
+it is best to start your icon
+designs on large artboards with dimensions that are multiples of the target icon
+sizes. For example, launcher icons are 48, 72, 96, or 144 pixels wide,
+depending on screen density (mdpi, hdpi, xhdpi, and xxhdpi, respectively). If you
+initially draw launcher icons on an 864x864 artboard, it will be easier and
+cleaner to adjust the icons when you scale the artboard down to the target
+sizes for final asset creation.</p>
+
+
+
+<h3>When scaling, redraw bitmap layers as needed</h3>
+
+<p>If you scaled an image up from a bitmap layer, rather than from a vector
+layer, those layers will need to be redrawn manually to appear crisp at higher
+densities. For example if a 60x60 circle was painted as a bitmap for
+mdpi it will need to be repainted as a 90x90 circle for hdpi.</p>
+
+
+
+<h3>Use common naming conventions for icon assets</h3>
+
+<p>Try to name files so that related assets will group together inside a
+directory when they are sorted alphabetically. In particular, it helps to use a
+common prefix for each icon type. For example:</p>
+
+<table>
+<tr>
+<th>Asset Type</th>
+<th>Prefix</th>
+<th>Example</th>
+</tr>
+<tr>
+<td>Icons</td>
+<td><code>ic_</code></td>
+<td><code>ic_star.png</code></td>
+</tr>
+<tr>
+<td>Launcher icons</td>
+<td><code>ic_launcher</code></td>
+<td><code>ic_launcher_calendar.png</code></td>
+</tr>
+<tr>
+<td>Menu icons and Action Bar icons</td>
+<td><code>ic_menu</code></td>
+<td><code>ic_menu_archive.png</code></td>
+</tr>
+<tr>
+<td>Status bar icons</td>
+<td><code>ic_stat_notify</code></td>
+<td><code>ic_stat_notify_msg.png</code></td>
+</tr>
+<tr>
+<td>Tab icons</td>
+<td><code>ic_tab</code></td>
+<td><code>ic_tab_recent.png</code></td>
+</tr>
+<tr>
+<td>Dialog icons</td>
+<td><code>ic_dialog</code></td>
+<td><code>ic_dialog_info.png</code></td>
+</tr>
+</table>
+
+<p>Note that you are not required to use a shared prefix of any
+type&mdash;doing so is for your convenience only.</p>
+
+
+<h3>Set up a working space that organizes files by density</h3>
+
+<p>Supporting multiple screen densities means you must create multiple versions
+of the same icon. To help keep the multiple copies of files safe and easier to
+find, we recommend creating a directory structure in your working space that
+organizes asset files based on the target density. For example:</p>
+
+<pre>
+art/...
+ mdpi/...
+ _pre_production/...
+ <em>working_file</em>.psd
+ <em>finished_asset</em>.png
+ hdpi/...
+ _pre_production/...
+ <em>working_file</em>.psd
+ <em>finished_asset</em>.png
+ xhdpi/...
+ _pre_production/...
+ <em>working_file</em>.psd
+ <em>finished_asset</em>.png</pre>
+ xxhdpi/...
+ _pre_production/...
+ <em>working_file</em>.psd
+ <em>finished_asset</em>.png</pre>
+
+<p>Because the structure in your working space is similar to that of the application, you
+can quickly determine which assets should be copied to each
+resources directory. Separating assets by density also helps you detect any
+variances in filenames across densities, which is important because
+corresponding assets for different densities must share the same filename.</p>
+
+<p>For comparison, here's the resources directory structure of a typical
+application: </p>
+
+<pre>res/...
+ drawable-ldpi/...
+ <em>finished_asset</em>.png
+ drawable-mdpi/...
+ <em>finished_asset</em>.png
+ drawable-hdpi/...
+ <em>finished_asset</em>.png
+ drawable-xhdpi/...
+ <em>finished_asset</em>.png
+</pre>
+
+<p>For more information about how to save resources in the application project,
+see <a href="{@docRoot}guide/topics/resources/providing-resources.html">Providing Resources</a>.
+</p>
+
+
+<h3>Remove unnecessary metadata from final assets</h3>
+
+<p>Although the Android SDK tools will automatically compress PNGs when packaging
+application resources into the application binary, a good practice is to remove
+unnecessary headers and metadata from your PNG assets. Tools such as <a
+href="http://optipng.sourceforge.net/">OptiPNG</a> or <a
+href="http://pmt.sourceforge.net/pngcrush/">Pngcrush</a> can ensure that this
+metadata is removed and that your image asset file sizes are optimized.</p>
+
+
diff --git a/docs/html/design/style/metrics-grids.jd b/docs/html/design/style/metrics-grids.jd
index 3116ff6d3cca..0a99a2f5d2ca 100644
--- a/docs/html/design/style/metrics-grids.jd
+++ b/docs/html/design/style/metrics-grids.jd
@@ -4,15 +4,28 @@ page.tags="layout","screens"
<p>Devices vary not only in physical size, but also in screen density (<acronym title="Dots per
inch">DPI</acronym>). To simplify the way you design for multiple screens, think of each device as
-falling into a particular size bucket and density bucket. The size buckets are <em>handset</em> (smaller than
-600<acronym title="Density-independent pixels. One dp is one pixel on a 160 dpi
-screen.">dp</acronym>) and <em>tablet</em> (larger than or equal 600dp). The density buckets are <acronym
+falling into a particular size bucket and density bucket:</p>
+<ul>
+ <li>The size buckets are <em>handset</em> (smaller than
+600<acronym title="Density-independent pixels: One dp is one pixel on a 160 dpi (mdpi)
+screen.">dp</acronym>) and <em>tablet</em> (larger than or equal 600dp).</li>
+ <li>The density buckets are <acronym
title="Low density (120 dpi)">LDPI</acronym>, <acronym title="Medium density (160
-dpi)">MDPI</acronym>, <acronym title="High density (240 dpi)">HDPI</acronym>, and <acronym title
-="Extra-high density (320 dpi)">XHDPI</acronym>. Optimize your application's UI by designing
+dpi)">MDPI</acronym>, <acronym title="High density (240 dpi)">HDPI</acronym>, <acronym title
+="Extra-high density (320 dpi)">XHDPI</acronym>, and <acronym title
+="Extra-extra!-high density (480 dpi)">XXHDPI</acronym>.</li>
+</ul>
+
+<p>Optimize your application's UI by designing
alternative layouts for some of the different size buckets, and provide alternative bitmap images
for different density buckets.</p>
+<p>Because it's important that you design and implement your layouts for multiple densities,
+the guidelines below and throught the documentation
+refer to layout dimensions with <acronym title="Density-independent pixels: One dp is one pixel
+on a 160 dpi (mdpi) screen.">dp</acronym> measurements instead of pixels.</p>
+
+
<div class="layout-content-row">
<div class="layout-content-col span-8">
@@ -30,6 +43,7 @@ Screen Sizes and Densities Device Dashboard</a>.</p>
</div>
</div>
+
<h2 id="48dp-rhythm">48dp Rhythm</h2>
<p>Touchable UI components are generally laid out along 48dp units.</p>
diff --git a/docs/html/distribute/googleplay/spotlight/index.jd b/docs/html/distribute/googleplay/spotlight/index.jd
index a248deab0a3a..b83080ea30f6 100644
--- a/docs/html/distribute/googleplay/spotlight/index.jd
+++ b/docs/html/distribute/googleplay/spotlight/index.jd
@@ -13,7 +13,36 @@ header.hide=0
overflow: auto;
clear:both;
margin-bottom:40px;
- margin-top:30px;"">
+ margin-top:30px;">
+ <div style="padding:0 0 0 29px;">
+ <h4>Developer Story: redBus.in</h4>
+ <img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px height:78px;
+ width: 78px;
+ float: left;
+ margin: 17px 20px 9px 0;" src=
+ "//lh4.ggpht.com/kvI2XfzBPGBDASvxvP18MCCj7YPEmLcG4nh1BlYW4XzaW12gg3iXtcM2ZqDnAfLLB9ed=w124">
+ <div style="width:700px;">
+ <p style="margin-top:26px;
+ margin-bottom:12px;">
+ Bangalore-based developers <a href="//play-next-dogfood.corp.google.com/store/apps/details?id=in.redbus.android">redBus.in</a> are bringing the sophistication and convenience of air-travel booking to bus transit. Hear how Android is helping them deliver a superior travel experience to millions of daily bus riders in India.</p>
+ </div>
+ <iframe style="float:left;
+ margin-right:24px;
+ margin-top:14px;" width="700" height="394" src=
+ "http://www.youtube.com/embed/O8i4HUw7JYA?HD=1;rel=0;origin=developer.android.com;" frameborder="0" allowfullscreen>
+ </iframe>
+ </div>
+</div>
+
+<div style="background: #F0F0F0;
+ border-top: 1px solid #DDD;
+ padding: 0px 0 24px 0;
+ overflow: auto;
+ clear:both;
+ margin-bottom:40px;
+ margin-top:30px;">
<div style="padding:0 0 0 29px;">
<h4>Developer Story: Smule</h4>
<img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
@@ -42,7 +71,7 @@ header.hide=0
overflow: auto;
clear:both;
margin-bottom:-10px;
- margin-top:30px;"">
+ margin-top:30px;">
<div style="padding:0 0 0 29px;">
<h4>Developer Story: Robot Invader</h4>
<img alt="" class="screenshot thumbnail" style="-webkit-border-radius: 5px;
diff --git a/docs/html/google/gcm/ccs.jd b/docs/html/google/gcm/ccs.jd
index ffe15c556c80..0cadbd245c16 100644
--- a/docs/html/google/gcm/ccs.jd
+++ b/docs/html/google/gcm/ccs.jd
@@ -23,7 +23,7 @@ page.title=GCM Cloud Connection Server
<li><a href="#msg_examples">Message Examples</a></li>
</ol>
</li>
- <li><a href="#flow">Control Flow</a> </li>
+ <li><a href="#flow">Flow Control</a> </li>
</ol>
<h2>See Also</h2>
@@ -48,6 +48,8 @@ page.title=GCM Cloud Connection Server
<p>The upstream messaging (device-to-cloud) feature of CCS is part of the Google Play services platform. Upstream messaging is available through the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs. To use upstream messaging and the new streamlined registration process, you must <a href="{@docRoot}google/play-services/setup.html">set up</a> the Google Play services SDK.</p>
+<p class="note"><strong>Note:</strong> For an example of an XMPP server, see <a href="server.html#xmpp">GCM Server</a>.
+
<h2 id="gcm">CCS vs. GCM HTTP</h2>
<p>CCS messaging differs from GCM HTTP messaging in the following ways:</p>
@@ -229,69 +231,13 @@ gcm.send(GCM_SENDER_ID + "&#64;gcm.googleapis.com", id, ttl, data);
&lt;/gcm&gt;
&lt;/message&gt;</pre>
-<h4 id="python">Python Example</h4>
-<p>This example illustrates how to connect,
-send, and receive GCM messages using XMPP. It shouldn't be used as-is
-on a production deployment.</p>
-
-<pre>
-import sys, json, xmpp
-SERVER = ('gcm.googleapis.com', 5235)
-#USERNAME = '&lt;your_numeric_project_id&gt;'
-#PASSWORD = '&lt;your_gcm_api_key&gt;'
-
-# Unique message id for downstream messages
-sent_message_id = 0
-
-def message_callback(session, message):
- global sent_message_id
- gcm = message.getTags('gcm')
-
- if gcm:
- gcm_json = gcm[0].getData()
- msg = json.loads(gcm_json)
- msg_id = msg['message_id']
- device_reg_id = msg['from']
-
- # Ignore non-standard messages (e.g. acks/nacks).
- if not msg.has_key('message_type'):
- # Acknowledge the incoming message.
- send({'to': device_reg_id,
- 'message_type': 'ack',
- 'message_id': msg_id})
- # Send a response back to the server.
- send({'to': device_reg_id,
- 'message_id' : str(sent_message_id),
- 'data': {'pong': 1}})
- sent_message_id = sent_message_id + 1
+<h2 id="flow">Flow Control</h2>
-def send(json_dict):
- template = (&quot;&lt;message from='{0}' to='gcm@google.com'&gt;&quot;
- &quot;&lt;gcm xmlns='google:mobile:data'&gt;{1}&lt;/gcm&gt;&lt;/message&gt;&quot;)
- client.send(xmpp.protocol.Message(
- node=template.format(client.Bind.bound[0],
- json.dumps(json_dict))))
+<p>Every message sent to CCS receives either an ACK or a NACK response. Messages that haven't received one of these responses are considered pending. If the pending message count reaches 1000, the 3rd-party server should stop sending new messages and wait for CCS to acknowledge some of the existing pending messages.</p>
-client = xmpp.Client(SERVER[0], debug=['socket'])
-client.connect(server=SERVER, secure=1, use_srv=False)
-auth = client.auth(USERNAME, PASSWORD, 'test')
-if not auth:
- print 'Authentication failed!'
- sys.exit(1)
+<p>Conversely, to avoid overloading the 3rd-party server, CCS will stop sending if there are too many unacknowledged messages. Therefore, the 3rd-party server should "ACK" received messages as soon as possible to maintain a constant flow of incoming messages. The aforementioned pending message limit doesn't apply to these ACKs. Even if the pending message count reaches 1000, the 3rd-party server should continue sending ACKs to avoid blocking delivery of new messages.</p>
-client.RegisterHandler('message', message_callback)
-
-while True:
- client.Process(1)</pre>
-
-<h2 id="flow">Control Flow</h2>
-
-<p>Every message sent by a 3rd-party server to CCS receives either an ACK or a NACK response. A single connection can have at most 1000 messages that were sent without having yet received a response.</p>
-
-<p>To enforce this policy, the app can maintain a counter of sent messages that increments on each send and decrements on each ACK or NACK. If the counter exceeds 1000, the app should stop sending messages until an ACK or NACK is received.</p>
-
-<p>Conversely, when CCS sends messages to a 3rd-party server, it expects ACKs for each message it sends, and it will not send more than 1000 unacknowledged messages.</p>
-
-<p>The ACKs and messages must match on each connection. You can only send an ACK for a message on the connection on which it was received.</p>
+<p>ACKs are only valid within the context of one connection. If the connection is closed before a message can be ACKed, the 3rd-party server should wait for CCS to resend the message before ACKing it again.
+</p>
diff --git a/docs/html/google/gcm/client.jd b/docs/html/google/gcm/client.jd
new file mode 100644
index 000000000000..7604932aa383
--- /dev/null
+++ b/docs/html/google/gcm/client.jd
@@ -0,0 +1,24 @@
+page.title=GCM Client
+page.tags="cloud","push","messaging"
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>See Also</h2>
+
+<ol class="toc">
+<li><a href="gs.html">Getting Started</a></li>
+<li><a href="server.html">GCM Server</a></li>
+</ol>
+
+</div>
+</div>
+
+<p>A GCM client is a GCM-enabled app that runs on an Android device. To write your client code, we recommend that you use the new <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs. The client helper library that was offered in previous versions of GCM still works, but it has been superseded by the more efficient <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs.</p>
+
+<p>A full GCM implementation requires both a client implementation and a server-side implementation. For a step-by-step guide to creating a complete sample implementation that includes both client and server, see <a href="gs.html">Getting Started</a>. </p>
+
+<p>
+
+
diff --git a/docs/html/google/gcm/demo.jd b/docs/html/google/gcm/demo.jd
index 6da9e986aa8b..012eb9a09d62 100644
--- a/docs/html/google/gcm/demo.jd
+++ b/docs/html/google/gcm/demo.jd
@@ -1,6 +1,22 @@
page.title=GCM Demo Application
@jd:body
+<div id="deprecatedSticker">
+ <a href="#"
+ onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
+ <strong>This doc is deprecated</strong></a>
+</div>
+
+
+<div id="naMessage" style="display:block">
+<div><p><strong>The information in this document has been superseded by <a href="server.html">GCM Server</a> and <a href="client.html">GCM Client</a></strong>. Please use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> API instead of the GCM client helper library. The GCM server helper library is still valid.</p>
+
+ <input style="margin-top:1em;padding:5px" type="button"
+ value="That's nice, but I still want to read this document"
+onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
+</div>
+</div>
+
<div id="qv-wrapper">
<div id="qv">
diff --git a/docs/html/google/gcm/gcm.jd b/docs/html/google/gcm/gcm.jd
index 5acf60dd3ec5..ceb82b03702b 100644
--- a/docs/html/google/gcm/gcm.jd
+++ b/docs/html/google/gcm/gcm.jd
@@ -28,20 +28,6 @@ page.title=GCM Architectural Overview
<li><a href="#user">What Does the User See?</a></li>
</ol>
</li>
- <li><a href="#writing_apps">Writing Android Applications that use GCM</a>
- <ol>
- <li><a href="#manifest">Creating the Manifest</a></li>
- <li><a href="#registering">Registering for GCM</a></li>
-
- <li><a href="#handling_intents">Handling Intents Sent by GCM</a>
- <ol>
- <li><a href="#handling_reg">Handling Registration Results</a></li>
- <li><a href="#received_data">Handling Received Data</a></li>
- </ol>
- </li>
- <li><a href="#testing">Developing and Testing Your Android Applications</a></li>
- </ol>
- </li>
<li><a href="#server">Role of the 3rd-party Application Server</a>
<ol class="toc">
<li><a href="#send-msg">Sending Messages</a>
@@ -53,7 +39,6 @@ page.title=GCM Architectural Overview
</ol>
<li><a href="#stats">Viewing Statistics</a>
</li>
- <li><a href="#example">Examples</a></li>
</ol>
@@ -306,336 +291,6 @@ from the <code>com.google.android.c2dm.intent.RECEIVE</code><code> </code>Intent
includes GCM. They must approve the use of this feature to install the
Android application. </p>
-<h2 id="writing_apps">Writing Android Applications that Use GCM</h2>
-
-<p>To write Android applications that use GCM, you must have an application
-server that can perform the tasks described in <a href="#server">Role of the
-3rd-party Application Server</a>. This section describes the steps you take to
-create a client application that uses GCM.</p>
-
-<p>Remember that there is no user interface associated with GCM.
-However you choose to process messages in your Android application is up to you.</p>
-
-<p>There are two primary steps involved in writing a client Android application:</p>
-
-<ul>
- <li>Creating a manifest that contains the permissions the Android application needs to
-use GCM.</li>
- <li>Implementing your code. To use GCM, this implementation must
-include:
- <ul>
- <li>Code to start and stop the registration service.</li>
- <li>Receivers for the <code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code> intents.</li>
- </ul>
- </li>
-</ul>
-
-<p class="note"><strong>Note:</strong> This section describes how to
-write an app without using the
-<a href="{@docRoot}reference/com/google/android/gcm/package-summary.html">helper libraries</a>.
-For details on writing
-an app that uses the helper libraries (which is the recommended and
-simpler approach), see <a href="gs.html">GCM: Getting Started</a>.
-
-<h3 id="manifest">Creating the Manifest</h3>
-
-<p>To use the GCM feature, the
-<code>AndroidManifest.xml</code> file must include the following:</p>
-
-<ul>
- <li>The <code>com.google.android.c2dm.permission.RECEIVE</code> permission so the Android application can register and receive messages.</li>
- <li>The <code>android.permission.INTERNET</code> permission so the Android application can send the registration ID to the 3rd-party server.</li>
- <li>The <code>android.permission.GET_ACCOUNTS</code> permission as GCM requires a Google account (necessary only if if the device is running a version lower than Android 4.0.4)</li>
- <li>The <code>android.permission.WAKE_LOCK</code> permission so the application can keep the processor from sleeping when a message is received. Optional&mdash;use only if the app wants to keep the device from sleeping.</li>
- <li>An <code>applicationPackage + &quot;.permission.C2D_MESSAGE</code> permission to prevent other Android applications from registering and receiving the Android application's
-messages. The permission name must exactly match this pattern&mdash;otherwise the Android application will not receive the messages.</li>
- <li>A receiver for <code>com.google.android.c2dm.intent.RECEIVE</code> and <code>com.google.android.c2dm.intent.REGISTRATION</code>, with the category set
-as <code>applicationPackage</code>. The receiver should require the <code>com.google.android.c2dm.SEND</code> permission, so that only the GCM
-Framework can send a message to it. Note that both registration and the receiving
-of messages are implemented as <a href="{@docRoot}guide/components/intents-filters.html">Intents</a>.</li>
- <li>An intent service to handle the intents received by the broadcast receiver. Optional.</li>
- <li>If the GCM feature is critical to the Android application's function, be sure to
-set <code>android:minSdkVersion=&quot;8&quot;</code> in the manifest. This
-ensures that the Android application cannot be installed in an environment in which it
-could not run properly. </li>
-</ul>
-
-<p>Here are excerpts from a manifest that supports GCM:</p>
-
-<pre class="prettyprint pretty-xml">
-&lt;manifest package="com.example.gcm" ...&gt;
-
- &lt;uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16"/&gt;
- &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
- &lt;uses-permission android:name="android.permission.GET_ACCOUNTS" /&gt;
- &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
- &lt;uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /&gt;
-
- &lt;permission android:name="com.example.gcm.permission.C2D_MESSAGE"
- android:protectionLevel="signature" /&gt;
- &lt;uses-permission android:name="com.example.gcm.permission.C2D_MESSAGE" /&gt;
-
- &lt;application ...&gt;
- &lt;receiver
- android:name=".MyBroadcastReceiver"
- android:permission="com.google.android.c2dm.permission.SEND" &gt;
- &lt;intent-filter&gt;
- &lt;action android:name="com.google.android.c2dm.intent.RECEIVE" /&gt;
- &lt;action android:name="com.google.android.c2dm.intent.REGISTRATION" /&gt;
- &lt;category android:name="com.example.gcm" /&gt;
- &lt;/intent-filter&gt;
- &lt;/receiver&gt;
- &lt;service android:name=".MyIntentService" /&gt;
- &lt;/application&gt;
-
-&lt;/manifest&gt;
-</pre>
-
-<h3 id="registering">Registering for GCM</h3>
-
-<div class="sidebox-wrapper">
-<div class="sidebox">
- <h2>Streamlined Registration</h2>
- <p>There is now a simpler alternative to registering and unregistering. Simply call the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> method
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register">{@code register(senderID...)}</a>.
-This method registers the application for GCM and returns the registration ID. To unregister, call the
-<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#unregister">{@code unregister()}</a> method (though you should rarely if ever need to unregister).</p>
-</div>
-</div>
-
-<p>An Android application needs to register with GCM servers before it can receive messages. To register, the application sends an Intent
-(<code>com.google.android.c2dm.intent.REGISTER</code>), with 2 extra parameters:
-</p>
-
-<ul>
- <li><code>sender</code> is the project number of the account authorized to send messages
-to the Android application. </li>
- <li><code>app</code> is the Android application's ID, set with a <code>PendingIntent</code> to
-allow the registration service to extract Android application information. </li>
-</ul>
-
-<p>For example:</p>
-
-<pre style="clear:right">Intent registrationIntent = new Intent(&quot;com.google.android.c2dm.intent.REGISTER&quot;);
-// sets the app name in the intent
-registrationIntent.putExtra(&quot;app&quot;, PendingIntent.getBroadcast(this, 0, new Intent(), 0));
-registrationIntent.putExtra(&quot;sender&quot;, senderID);
-startService(registrationIntent);</pre>
-
-<p>This intent will be asynchronously sent to the GCM server, and the response will be delivered to
-the application as a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent containing
-the registration ID assigned to the Android application running on that particular device.</p>
-
-<p>Registration is not complete until the Android application sends the registration ID
-to the 3rd-party application server, which in turn will use the registration ID to send
-messages to the application.</p>
-
-<h3 id="unregistering">Unregistering from GCM</h3>
-
-<p>To unregister from GCM, do the following:</p>
-
-<pre class="prettyprint pretty-java">Intent unregIntent = new Intent(&quot;com.google.android.c2dm.intent.UNREGISTER&quot;);
-unregIntent.putExtra(&quot;app&quot;, PendingIntent.getBroadcast(this, 0, new Intent(), 0));
-startService(unregIntent);
-</pre>
-
-<p>Similar to the registration request, this intent is sent asynchronously, and the response comes as a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent.
-
-
-<h3 id="handling_intents">Handling Intents sent by GCM</h3>
-
-<p>As discussed in <a href="#manifest">Creating the Manifest</a>, the manifest
-defines a broadcast receiver for the <code>com.google.android.c2dm.intent.REGISTRATION</code> and <code>com.google.android.c2dm.intent.RECEIVE</code> intents.
-These <a href="{@docRoot}guide/components/intents-filters.html">intents</a> are sent by GCM to indicate that a device was registered (or unregistered), or to deliver messages, respectively.</p>
-
-<p>Handling these intents might require I/O operations (such as network calls to the 3rd-party server), and
-such operations should not be done in the receiver's <code>onReceive()</code> method.
-You may be tempted to spawn a new thread directly, but there are no guarantees that the process will run long enough for the thread to finish the work.
-Thus the recommended way to handle the intents is to delegate them to a service, such as an {@link android.app.IntentService}.
-For example:</p>
-
-
-<pre class="prettyprint pretty-java">
-public class MyBroadcastReceiver extends BroadcastReceiver {
-
- &#64;Override
- public final void onReceive(Context context, Intent intent) {
- MyIntentService.runIntentInService(context, intent);
- setResult(Activity.RESULT_OK, null, null);
- }
-}
-</pre>
-
-<p>Then in <code>MyIntentService</code>:</p>
-<pre class="prettyprint pretty-java">
-public class MyIntentService extends IntentService {
-
- private static PowerManager.WakeLock sWakeLock;
- private static final Object LOCK = MyIntentService.class;
-
- static void runIntentInService(Context context, Intent intent) {
- synchronized(LOCK) {
- if (sWakeLock == null) {
- PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
- sWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "my_wakelock");
- }
- }
- sWakeLock.acquire();
- intent.setClassName(context, MyIntentService.class.getName());
- context.startService(intent);
- }
-
- &#64;Override
- public final void onHandleIntent(Intent intent) {
- try {
- String action = intent.getAction();
- if (action.equals("com.google.android.c2dm.intent.REGISTRATION")) {
- handleRegistration(intent);
- } else if (action.equals("com.google.android.c2dm.intent.RECEIVE")) {
- handleMessage(intent);
- }
- } finally {
- synchronized(LOCK) {
- sWakeLock.release();
- }
- }
- }
-}
-</pre>
-
-<p class="note"><strong>Note:</strong> your application must acquire a wake lock before starting the service&mdash;otherwise the device could be put to sleep before the service is started.</p>
-
-<h4 id="handling_reg">Handling Registration Results</h4>
-
-<p>When a <code>com.google.android.c2dm.intent.REGISTRATION</code> intent is received, it could potentially contain 3 extras: <code>registration_id</code>, <code>error</code>, and <code>unregistered</code>.
-
-<p>When a registration succeeds, <code>registration_id</code> contains the registration ID and the other extras are not set.
-The application must ensure that the 3rd-party server receives the registration ID. It may do so by saving the registration ID and sending it to the server.
-If the network is down or there are errors, the application should retry sending the registration ID when the network is up again or the next time it starts.</p>
-
-<p class="note"><strong>Note:</strong> Although the <code>com.google.android.c2dm.intent.REGISTRATION</code> intent is typically received after a request was made by the application,
-Google may periodically refresh the registration ID. So the application must be prepared to handle it at any time.</p>
-
-<p>When an unregistration succeeds, only the <code>unregistered</code> extra is set, and similar to the registration workflow,
-the application must contact the 3rd-party server to remove the registration ID (note that the registration ID is not available in the intent,
-but the application should have saved the registration ID when it got it).<p>
-
-<p>If the application request (be it register or unregister) fails, the <code>error</code> will be set with an error code, and the other extras will not be set.
-
-Here are the possible error codes:</p>
-
-<table>
- <tr>
- <th>Error Code</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>SERVICE_NOT_AVAILABLE</code></td>
- <td>The device can't read the response, or there was a 500/503 from the
-server that can be retried later. The Android application should use exponential back-off and retry. See <a href="adv.html#retry">Advanced Topics</a> for more information. </td>
- </tr>
- <tr>
- <td><code>ACCOUNT_MISSING</code></td>
- <td>There is no Google account on the phone. The Android application should ask the
-user to open the account manager and add a Google account. Fix on the device
-side.</td>
- </tr>
- <tr>
- <td><code>AUTHENTICATION_FAILED</code></td>
- <td>Bad Google Account password. The Android application should ask the user to enter his/her Google Account
-password, and let the user retry manually later. Fix on the device side.</td>
- </tr>
- <tr>
- <td><code>INVALID_SENDER</code></td>
- <td>The sender account is not recognized. This must be fixed on the Android application side. The developer must fix the application to provide the right <code>sender</code> extra in the <code>com.google.android.c2dm.intent.REGISTER</code> intent.</td>
- </tr>
- <tr>
- <td><code>PHONE_REGISTRATION_ERROR</code></td>
- <td> Incorrect phone registration with Google. This
-phone doesn't currently support GCM.</td>
- </tr>
- <tr>
- <td><code>INVALID_PARAMETERS</code></td>
- <td>The request sent by the phone does not contain the expected parameters. This phone doesn't currently support GCM.</td>
- </tr>
-</table>
-
-
-
-
-<p>Here's an example on how to handle the registration in the <code>MyIntentService</code> example:</p>
-
-<pre class="prettyprint pretty-java">
-private void handleRegistration(Intent intent) {
- String registrationId = intent.getStringExtra("registration_id");
- String error = intent.getStringExtra("error");
- String unregistered = intent.getStringExtra("unregistered");
- // registration succeeded
- if (registrationId != null) {
- // store registration ID on shared preferences
- // notify 3rd-party server about the registered ID
- }
-
- // unregistration succeeded
- if (unregistered != null) {
- // get old registration ID from shared preferences
- // notify 3rd-party server about the unregistered ID
- }
-
- // last operation (registration or unregistration) returned an error;
- if (error != null) {
- if ("SERVICE_NOT_AVAILABLE".equals(error)) {
- // optionally retry using exponential back-off
- // (see <a href="adv.html#retry">Advanced Topics</a>)
- } else {
- // Unrecoverable error, log it
- Log.i(TAG, "Received error: " + error);
- }
- }
-}</pre>
-
-
-
-<h4 id="received_data">Handling Received Data</h4>
-
-<p>The <code>com.google.android.c2dm.intent.RECEIVE</code> intent is used by GCM to
-deliver the messages sent by the 3rd-party server to the application running in the device.
-If the server included key-pair values in the <code>data</code> parameter, they are available as
-extras in this intent, with the keys being the extra names. GCM also includes an extra called
-<code>from</code> which contains the sender ID as an string, and another called <code>collapse_key</code> containing the collapse key (when in use).
-
-<p>Here is an example, again using the <code>MyIntentReceiver</code> class:</p>
-
-<pre class="prettyprint pretty-java">
-private void handleMessage(Intent intent) {
- // server sent 2 key-value pairs, score and time
- String score = intent.getExtra("score");
- String time = intent.getExtra("time");
- // generates a system notification to display the score and time
-}</pre>
-
-<h3 id="testing">Developing and Testing Your Android Applications</h3>
-
-<p>Here are some guidelines for developing and testing an Android application
-that uses the GCM feature:</p>
-
-<ul>
- <li>To develop and test your Android applications, you need to run and debug the
-applications on an Android 2.2 system image that includes the necessary
-underlying Google services. </li>
- <li>To develop and debug on an actual device, you need a device running an
-Android 2.2 system image that includes the Google Play Store application. </li>
- <li>To develop and test on the Android Emulator, you need to download the
-Android 2.2 version of the Google APIs Add-On into your SDK using the <em>Android
-SDK and AVD Manager</em>. Specifically, you need to download the component named
-&quot;Google APIs by Google Inc, Android API 8&quot;. Then, you need to set up
-an AVD that uses that system image. </li>
- <li>If the GCM feature is critical to the Android application's function, be sure to
-set <code>android:minSdkVersion=&quot;8&quot;</code> in the manifest. This
-ensures that the Android application cannot be installed in an environment in which it
-could not run properly. </li>
-</ul>
-
<h2 id="server">Role of the 3rd-party Application Server</h2>
@@ -1105,6 +760,4 @@ registration_id=32
</ol>
<p class="note"><strong>Note:</strong> Stats on the Google API Console are not enabled for GCM. You must use the <a href="http://play.google.com/apps/publish">Developer Console</a>.</p>
-<h2 id="example">Examples</h2>
-<p>See the <a href="demo.html">GCM Demo Application</a> document.</p>
diff --git a/docs/html/google/gcm/gs.jd b/docs/html/google/gcm/gs.jd
index d938bd6f2d84..8ceea0cc8b0d 100644
--- a/docs/html/google/gcm/gs.jd
+++ b/docs/html/google/gcm/gs.jd
@@ -12,14 +12,14 @@ page.tags="cloud","push","messaging"
<li><a href="#create-proj">Creating a Google API Project</a></li>
<li><a href="#gcm-service">Enabling the GCM Service</a></li>
<li><a href="#access-key">Obtaining an API Key</a></li>
-<li><a href="#android-app">Writing the Android Application</a>
+<li><a href="#client">Writing a Client App</a></li>
+<li><a href="#server">Writing the Server Code</a></li>
</ol>
<h2>See Also</h2>
<ol class="toc">
<li><a href="https://code.google.com/apis/console">Google APIs Console page</a></li>
-<li><a href="{@docRoot}google/gcm/helper.html">Using the GCM Helper Libraries</a></li>
<li><a href="https://services.google.com/fb/forms/gcm/" class="external-link" target="_android">CCS and User Notifications Signup Form</a></li>
</ol>
@@ -29,20 +29,9 @@ page.tags="cloud","push","messaging"
<p>The sections below guide you through the process of setting up a GCM
implementation.
Before you start, make sure to <a href="/google/play-services/setup.html">set up
-the Google Play Services SDK</a>. You need this SDK to use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> methods. Strictly speaking, the only thing you absolutely need this API for is upstream (device-to-cloud) messaging, but it also offers a streamlined registration API that is recommended.</p>
-
-
-<!--the basic steps are:
-
-<ul>
-<li>Creating a Google APIs Project</li>
-<li>Setting up GCM in your apps</li>
-<li>Integrating </li>
-
-<p>Note that a full GCM implementation requires a server-side implementation, in addition to the client implementation in your app. For complete information, make sure to read the <a href="/google/gcm/index.html">Google Cloud Messaging documentation</a>.
--->
-
+the Google Play Services SDK</a>. You need this SDK to use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> methods.</p>
+<p>Note that a full GCM implementation requires a server-side implementation, in addition to the client implementation in your app. This document offers a complete example that includes both the client and server.</p>
<h2 id="create-proj">Creating a Google API project</h2>
@@ -95,17 +84,21 @@ the Google Play Services SDK</a>. You need this SDK to use the <a href="{@docRoo
<p> Take note of the <strong>API key</strong> value (<code>YourKeyWillBeShownHere</code>) in this example, as it will be used later on.</p>
<p class="note"><strong>Note:</strong> If you need to rotate the key, click <strong>Generate new key</strong>. A new key will be created while the old one will still be active for up to 24 hours. If you want to get rid of the old key immediately (for example, if you feel it was compromised), click <strong>Delete key</strong>.</p>
+<p>The following sections walk you through the steps of creating client and server-side code.</p>
-<h2 id="android-app">Writing the Android Application</h2>
-<p>This section describes the steps involved in writing an Android application that uses GCM.</p>
+<h2 id="client">Writing a Client App</h2>
-<h4 id="manifest">Step 1: Make the following changes in the application's Android manifest</h4>
+<p>This section walks you through the steps involved in writing a client-side application&mdash;that is, the GCM-enabled application that runs on an Android device. This client sample is designed to work in conjunction with the server code shown in <a href="#server">Writing the Server Code</a>, below.</p>
+
+
+
+<h3 id="manifest">Step 1: Edit Your App's Manifest</h3>
<ul>
<li>The <code>com.google.android.c2dm.permission.RECEIVE</code> permission so the Android application can register and receive messages.</li>
<li>The <code>android.permission.INTERNET</code> permission so the Android application can send the registration ID to the 3rd party server.</li>
<li>The <code>android.permission.GET_ACCOUNTS</code> permission as GCM requires a Google account (necessary only if if the device is running a version lower than Android 4.0.4)</li>
<li>The <code>android.permission.WAKE_LOCK</code> permission so the application can keep the processor from sleeping when a message is received. Optional&mdash;use only if the app wants to keep the device from sleeping.</li>
- <li>An <code>applicationPackage + &quot;.permission.C2D_MESSAGE</code> permission to prevent other Android applications from registering and receiving the Android application's
+ <li>An <code>applicationPackage + &quot;.permission.C2D_MESSAGE&quot;</code> permission to prevent other Android applications from registering and receiving the Android application's
messages. The permission name must exactly match this pattern&mdash;otherwise the Android application will not receive the messages.</li>
<li>A receiver for <code>com.google.android.c2dm.intent.RECEIVE</code>, with the category set
as <code>applicationPackage</code>. The receiver should require the <code>com.google.android.c2dm.SEND</code> permission, so that only the GCM
@@ -149,106 +142,199 @@ could not run properly. </li>
</pre>
-<h4>Step 2: Register for GCM</h4>
+<h3 id="register">Step 2: Register for GCM</h3>
<p>An Android application running on a mobile device registers to receive messages by calling
the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> method
<a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#register">{@code register(senderID...)}</a>.
This method registers the application for GCM and returns the registration ID. This streamlined approach replaces the previous
-GCM registration process.</p>
+GCM registration process. See the example below for details.</p>
-<h4> Step 3: Write your application</h4>
+<h3 id="app"> Step 3: Write Your Application</h3>
<p>Finally, write your application. GCM offers a variety of ways to get the job done:</p>
<ul>
- <li>For your messaging server, you can either use the new <a href="ccs.html">GCM Cloud Connection Server</a> (CCS), the older <a href="gcm.html">GCM HTTP server</a>, or both in tandem.</li>
- <li>To write your client application, you can use any of the following:
- <ul>
- <li>The helper libraries, which are described in the <a href="{@docRoot}google/gcm/demo.html">Demo App Tutorial</a> and <a href="{@docRoot}google/gcm/helper.html">Using the GCM Helper Libraries</a>.</li>
- <li>The approach described in the <a href="{@docRoot}google/gcm/gcm.html#writing_apps">GCM Architectural Overview</a>.</li>
- <li>Regardless, you must use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs if you are doing upstream (device-to-cloud) messaging. Even if you are not doing upstream messaging, we recommend that you use this API to take advantage of the streamlined registration process&mdash;described above and shown in the following sample.</li>
+ <li>For your messaging server, you can either use the new <a href="ccs.html">GCM Cloud Connection Server</a> (CCS), the older <a href="gcm.html">GCM HTTP server</a>, or both in tandem. For more discussion, see see <a href="server.html">GCM Server</a>.</li>
+ <li>To write your client application (that is, the GCM-enabled app that runs on an Android device), use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs as shown below. Don't forget to set up your project to use the Google Play services SDK as described in <a href="/google/play-services/setup.html">Setup Google Play Services SDK</a>.</li>
</ul>
</li>
</ul>
-<h5 id="gs_example">Example</h5>
+<h4 id="example">Example</h4>
-<p>Here is a sample application that illustrates how to use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs. In this example, the sender is a <a href="{@docRoot}google/gcm/ccs.html">CCS</a> echo server. The sample consists of a main Activity ({@code DemoActivity}) and a broadcast receiver ({@code GcmBroadcastReceiver}).</p>
+<p>Here is a sample client application that illustrates how to use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs. The sample consists of a main activity ({@code DemoActivity}) and a broadcast receiver ({@code GcmBroadcastReceiver}). You can use this client sample code in conjunction with the server code shown in <a href="#server">Writing the Server Code</a>.</p>
+<p>Note the following:</p>
+
+<ul>
+ <li>The sample primarily illustrates two things: registration, and upstream messaging. Upstream messaging only applies to apps that are running against a <a href="ccs.html">CCS</a> server; HTTP-based servers don't support upstream messaging.</li>
+ <li>The <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> registration APIs replace the old registration process, which was based on the now-obsolete client helper library. While the old registration process still works, we encourage you to use the newer <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> registration APIs, regardless of your underlying server.</li>
+</ul>
+
+<h5>Registering</h5>
<p>An Android application needs to register with GCM servers before it can receive messages. So in its {@code onCreate()} method, {@code DemoActivity} checks to see whether the app is registered with GCM and with the server:</p>
-<pre>public class DemoActivity extends Activity {
+<pre>/**
+ * Main UI for the demo app.
+ */
+public class DemoActivity extends Activity {
public static final String EXTRA_MESSAGE = "message";
public static final String PROPERTY_REG_ID = "registration_id";
+ private static final String PROPERTY_APP_VERSION = "appVersion";
+ private static final String PROPERTY_ON_SERVER_EXPIRATION_TIME =
+ "onServerExpirationTimeMs";
+ /**
+ * Default lifespan (7 days) of a reservation until it is considered expired.
+ */
+ public static final long REGISTRATION_EXPIRY_TIME_MS = 1000 * 3600 * 24 * 7;
+
/**
- * You can use your own project ID instead. This sender is a test CCS
- * echo server.
+ * Substitute you own sender ID here.
*/
- String GCM_SENDER_ID = "Your-Sender-ID";
+ String SENDER_ID = "Your-Sender-ID";
- // Tag for log messages.
+ /**
+ * Tag used on log messages.
+ */
static final String TAG = "GCMDemo";
TextView mDisplay;
GoogleCloudMessaging gcm;
AtomicInteger msgId = new AtomicInteger();
SharedPreferences prefs;
+ Context context;
+
String regid;
&#64;Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- // Make sure the app is registered with GCM and with the server
- prefs = getSharedPreferences(DemoActivity.class.getSimpleName(),
- Context.MODE_PRIVATE);
setContentView(R.layout.main);
-
mDisplay = (TextView) findViewById(R.id.display);
- regid = prefs.getString(PROPERTY_REG_ID, null);
-
- // If there is no registration ID, the app isn't registered.
- // Call registerBackground() to register it.
- if (regid == null) {
+ context = getApplicationContext();
+ regid = getRegistrationId(context);
+
+ if (regid.length() == 0) {
registerBackground();
}
-
gcm = GoogleCloudMessaging.getInstance(this);
- }</pre>
+ }
+...
+}</pre>
+
+<p>The app calls {@code getRegistrationId()} to see whether there is an existing registration ID stored in shared preferences:</p>
+
+<pre>/**
+ * Gets the current registration id for application on GCM service.
+ * &lt;p&gt;
+ * If result is empty, the registration has failed.
+ *
+ * &#64;return registration id, or empty string if the registration is not
+ * complete.
+ */
+private String getRegistrationId(Context context) {
+ final SharedPreferences prefs = getGCMPreferences(context);
+ String registrationId = prefs.getString(PROPERTY_REG_ID, "");
+ if (registrationId.length() == 0) {
+ Log.v(TAG, "Registration not found.");
+ return "";
+ }
+ // check if app was updated; if so, it must clear registration id to
+ // avoid a race condition if GCM sends a message
+ int registeredVersion = prefs.getInt(PROPERTY_APP_VERSION, Integer.MIN_VALUE);
+ int currentVersion = getAppVersion(context);
+ if (registeredVersion != currentVersion || isRegistrationExpired()) {
+ Log.v(TAG, "App version changed or registration expired.");
+ return "";
+ }
+ return registrationId;
+}
+
+...
+
+/**
+ * &#64;return Application's {&#64;code SharedPreferences}.
+ */
+private SharedPreferences getGCMPreferences(Context context) {
+ return getSharedPreferences(DemoActivity.class.getSimpleName(),
+ Context.MODE_PRIVATE);
+}</pre>
+
+<p>If the registration ID doesn't exist, or the app was updated, or the registration ID has expired, {@code getRegistrationId()} returns an empty string to indicate that the app needs to get a new regID. {@code getRegistrationId()} calls the following methods to check the app version and whether the regID has expired:</p>
+
+<pre>/**
+ * &#64;return Application's version code from the {&#64;code PackageManager}.
+ */
+private static int getAppVersion(Context context) {
+ try {
+ PackageInfo packageInfo = context.getPackageManager()
+ .getPackageInfo(context.getPackageName(), 0);
+ return packageInfo.versionCode;
+ } catch (NameNotFoundException e) {
+ // should never happen
+ throw new RuntimeException("Could not get package name: " + e);
+ }
+}
+
+/**
+ * Checks if the registration has expired.
+ *
+ * &lt;p&gt;To avoid the scenario where the device sends the registration to the
+ * server but the server loses it, the app developer may choose to re-register
+ * after REGISTRATION_EXPIRY_TIME_MS.
+ *
+ * &#64;return true if the registration has expired.
+ */
+private boolean isRegistrationExpired() {
+ final SharedPreferences prefs = getGCMPreferences(context);
+ // checks if the information is not stale
+ long expirationTime =
+ prefs.getLong(PROPERTY_ON_SERVER_EXPIRATION_TIME, -1);
+ return System.currentTimeMillis() > expirationTime;
+}</pre>
+
-<p>If the app isn't registered, {@code DemoActivity} calls the following {@code registerBackground()} method to register it. Note that because GCM methods are blocking, this has to take place on a background thread. This sample uses {@link android.os.AsyncTask} to accomplish this:</p>
+<p>If there isn't a valid existing registration ID, {@code DemoActivity} calls the following {@code registerBackground()} method to register. Note that because GCM methods are blocking, this has to take place on a background thread. This sample uses {@link android.os.AsyncTask} to accomplish this:</p>
-<pre>private void registerBackground() {
+<pre>
+/**
+ * Registers the application with GCM servers asynchronously.
+ * &lt;p&gt;
+ * Stores the registration id, app versionCode, and expiration time in the
+ * application's shared preferences.
+ */
+private void registerBackground() {
new AsyncTask<Void, Void, String>() {
&#64;Override
protected String doInBackground(Void... params) {
String msg = "";
try {
- regid = gcm.register(GCM_SENDER_ID);
+ if (gcm == null) {
+ gcm = GoogleCloudMessaging.getInstance(context);
+ }
+ regid = gcm.register(SENDER_ID);
msg = "Device registered, registration id=" + regid;
- // You should send the registration ID to your server over HTTP,
+ // You should send the registration ID to your server over HTTP,
// so it can use GCM/HTTP or CCS to send messages to your app.
- // For this demo: we don't need to send it because the device
- // will send upstream messages to a server that will echo back
- // the message using the 'from' address in the message.
-
- // Save the regid for future use - no need to register again.
- SharedPreferences.Editor editor = prefs.edit();
- editor.putString(PROPERTY_REG_ID, regid);
- editor.commit();
+ // For this demo: we don't need to send it because the device
+ // will send upstream messages to a server that echo back the message
+ // using the 'from' address in the message.
+
+ // Save the regid - no need to register again.
+ setRegistrationId(context, regid);
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
return msg;
}
- // Once registration is done, display the registration status
- // string in the Activity's UI.
+
&#64;Override
protected void onPostExecute(String msg) {
mDisplay.append(msg + "\n");
@@ -256,7 +342,33 @@ GCM registration process.</p>
}.execute(null, null, null);
}</pre>
-<p>When the user clicks the app's <strong>Echo</strong> button, the app generates the necessary XMPP stanza for the message, which it sends to the echo server:</p>
+<p>After registering, the app calls {@code setRegistrationId()} to store the registration ID in shared preferences for future use:</p>
+
+<pre>/**
+ * Stores the registration id, app versionCode, and expiration time in the
+ * application's {&#64;code SharedPreferences}.
+ *
+ * &#64;param context application's context.
+ * &#64;param regId registration id
+ */
+private void setRegistrationId(Context context, String regId) {
+ final SharedPreferences prefs = getGCMPreferences(context);
+ int appVersion = getAppVersion(context);
+ Log.v(TAG, "Saving regId on app version " + appVersion);
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putString(PROPERTY_REG_ID, regId);
+ editor.putInt(PROPERTY_APP_VERSION, appVersion);
+ long expirationTime = System.currentTimeMillis() + REGISTRATION_EXPIRY_TIME_MS;
+
+ Log.v(TAG, "Setting registration expiry time to " +
+ new Timestamp(expirationTime));
+ editor.putLong(PROPERTY_ON_SERVER_EXPIRATION_TIME, expirationTime);
+ editor.commit();
+}</pre>
+
+<h5>Sending a message</h5>
+<p>When the user clicks the app's <strong>Send</strong> button, the app sends an upstream message using the new <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> APIs. In order to receive the upstream message, your server should be connected to CCS. You can use the code shown in <a href="#server">Writing the Server Code</a> as a sample XMPP client to connect to CCS.</p>
+
<pre>public void onClick(final View view) {
if (view == findViewById(R.id.send)) {
new AsyncTask<Void, Void, String>() {
@@ -265,11 +377,10 @@ GCM registration process.</p>
String msg = "";
try {
Bundle data = new Bundle();
- // data is a key-value pair.
- data.putString("hello", "world");
+ data.putString("hello", "World");
String id = Integer.toString(msgId.incrementAndGet());
- gcm.send(GCM_SENDER_ID + "&#64;gcm.googleapis.com", id, data);
- msg = "Sending message";
+ gcm.send(SENDER_ID + "&#64;gcm.googleapis.com", id, data);
+ msg = "Sent message";
} catch (IOException ex) {
msg = "Error :" + ex.getMessage();
}
@@ -278,23 +389,25 @@ GCM registration process.</p>
&#64;Override
protected void onPostExecute(String msg) {
- // Displays the text "Sending message"
mDisplay.append(msg + "\n");
}
}.execute(null, null, null);
- }
+ } else if (view == findViewById(R.id.clear)) {
+ mDisplay.setText("");
+ }
}</pre>
<p>As described above in <a href="#manifest">Step 1</a>, the app includes a broadcast receiver for the <code>com.google.android.c2dm.intent.RECEIVE</code> intent. This is the mechanism GCM uses to deliver messages. When {@code onClick()} calls {@code gcm.send()}, it triggers the broadcast receiver's {@code onReceive()} method, which has the responsibility of handling the GCM message. In this sample the receiver's {@code onReceive()} method calls {@code sendNotification()} to put the message into a notification:</p>
-<pre>public class GcmBroadcastReceiver extends BroadcastReceiver {
+<pre>/**
+ * Handling of GCM messages.
+ */
+public class GcmBroadcastReceiver extends BroadcastReceiver {
static final String TAG = "GCMDemo";
public static final int NOTIFICATION_ID = 1;
private NotificationManager mNotificationManager;
NotificationCompat.Builder builder;
Context ctx;
-
-
&#64;Override
public void onReceive(Context context, Intent intent) {
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
@@ -303,7 +416,7 @@ GCM registration process.</p>
if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) {
sendNotification("Send error: " + intent.getExtras().toString());
} else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) {
- sendNotification("Deleted messages on server: " +
+ sendNotification("Deleted messages on server: " +
intent.getExtras().toString());
} else {
sendNotification("Received: " + intent.getExtras().toString());
@@ -313,21 +426,98 @@ GCM registration process.</p>
// Put the GCM message into a notification and post it.
private void sendNotification(String msg) {
- mNotificationManager = (NotificationManager)
- ctx.getSystemService(Context.NOTIFICATION_SERVICE);
-
- PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
- new Intent(ctx, DemoActivity.class), 0);
-
- NotificationCompat.Builder mBuilder =
- new NotificationCompat.Builder(ctx)
- .setSmallIcon(R.drawable.ic_stat_notification)
- .setContentTitle("GCM Notification")
- .setStyle(new NotificationCompat.BigTextStyle()
- .bigText(msg))
- .setContentText(msg);
-
- mBuilder.setContentIntent(contentIntent);
- mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
+ mNotificationManager = (NotificationManager)
+ ctx.getSystemService(Context.NOTIFICATION_SERVICE);
+
+ PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0,
+ new Intent(ctx, DemoActivity.class), 0);
+
+ NotificationCompat.Builder mBuilder =
+ new NotificationCompat.Builder(ctx)
+ .setSmallIcon(R.drawable.ic_stat_gcm)
+ .setContentTitle("GCM Notification")
+ .setStyle(new NotificationCompat.BigTextStyle()
+ .bigText(msg))
+ .setContentText(msg);
+
+ mBuilder.setContentIntent(contentIntent);
+ mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
}
}</pre>
+
+<h2 id="server">Writing the Server Code</h2>
+
+<p>Here is an example of a CCS server written in Python. You can use this in conjunction with the sample client code shown above. This sample echo server sends an initial message, and for every upstream message received, it sends a dummy response back to the application that sent the upstream message. This example illustrates how to connect,
+send, and receive GCM messages using XMPP. It shouldn't be used as-is
+on a production deployment. For examples of HTTP-based servers, see <a href="server.html">GCM Server</a>.</p>
+
+<pre>
+#!/usr/bin/python
+import sys, json, xmpp, random, string
+
+SERVER = 'gcm.googleapis.com'
+PORT = 5235
+USERNAME = ''
+PASSWORD = ''
+REGISTRATION_ID = ''
+
+unacked_messages_quota = 1000
+send_queue = []
+
+# Return a random alphanumerical id
+def random_id():
+ rid = ''
+ for x in range(8): rid += random.choice(string.ascii_letters + string.digits)
+ return rid
+
+def message_callback(session, message):
+ global unacked_messages_quota
+ gcm = message.getTags('gcm')
+ if gcm:
+ gcm_json = gcm[0].getData()
+ msg = json.loads(gcm_json)
+ if not msg.has_key('message_type'):
+ # Acknowledge the incoming message immediately.
+ send({'to': msg['from'],
+ 'message_type': 'ack',
+ 'message_id': msg['message_id']})
+ # Queue a response back to the server.
+ if msg.has_key('from'):
+ # Send a dummy echo response back to the app that sent the upstream message.
+ send_queue.append({'to': msg['from'],
+ 'message_id': random_id(),
+ 'data': {'pong': 1}})
+ elif msg['message_type'] == 'ack' or msg['message_type'] == 'nack':
+ unacked_messages_quota += 1
+
+def send(json_dict):
+ template = (&quot;&lt;message&gt;&lt;gcm xmlns='google:mobile:data'&gt;{1}&lt;/gcm&gt;&lt;/message&gt;&quot;)
+ client.send(xmpp.protocol.Message(
+ node=template.format(client.Bind.bound[0], json.dumps(json_dict))))
+
+def flush_queued_messages():
+ global unacked_messages_quota
+ while len(send_queue) and unacked_messages_quota &gt; 0:
+ send(send_queue.pop(0))
+ unacked_messages_quota -= 1
+
+client = xmpp.Client('gcm.googleapis.com', debug=['socket'])
+client.connect(server=(SERVER,PORT), secure=1, use_srv=False)
+auth = client.auth(USERNAME, PASSWORD)
+if not auth:
+ print 'Authentication failed!'
+ sys.exit(1)
+
+client.RegisterHandler('message', message_callback)
+
+send_queue.append({'to': REGISTRATION_ID,
+ 'message_id': 'reg_id',
+ 'data': {'message_destination': 'RegId',
+ 'message_id': random_id()}})
+
+while True:
+ client.Process(1)
+ flush_queued_messages()</pre>
+
+
+
diff --git a/docs/html/google/gcm/helper.jd b/docs/html/google/gcm/helper.jd
index bde2df0f4155..e7f2f73871b3 100644
--- a/docs/html/google/gcm/helper.jd
+++ b/docs/html/google/gcm/helper.jd
@@ -2,6 +2,23 @@ page.title=Using the GCM Helper Libraries
page.tags="cloud","push","messaging"
@jd:body
+<div id="deprecatedSticker">
+ <a href="#"
+ onclick="$('#naMessage').show();$('#deprecatedSticker').hide();return false">
+ <strong>This doc is deprecated</strong></a>
+</div>
+
+
+<div id="naMessage" style="display:block">
+<div><p><strong>The information in this document has been superseded by <a href="server.html">GCM Server</a> and <a href="client.html">GCM Client</a></strong>. Please use the <a href="{@docRoot}reference/com/google/android/gms/gcm/GoogleCloudMessaging.html">{@code GoogleCloudMessaging}</a> API instead of the GCM client helper library. The GCM server helper library is still valid.</p>
+
+ <input style="margin-top:1em;padding:5px" type="button"
+ value="That's nice, but I still want to read this document"
+onclick="$('#naMessage').hide();$('#deprecatedSticker').show()" />
+</div>
+</div>
+
+
<div id="qv-wrapper">
<div id="qv">
diff --git a/docs/html/google/gcm/index.jd b/docs/html/google/gcm/index.jd
index aeba86ffa1b0..8f325b85c461 100644
--- a/docs/html/google/gcm/index.jd
+++ b/docs/html/google/gcm/index.jd
@@ -49,6 +49,9 @@ up to 4kb of payload data (so apps like instant messaging can consume the messag
<h4>Seamless multi-device messaging</h4>
<p>Maps a single user to a notification key, which you can then use to send a single message to multiple devices owned by the user. Use <a href="https://services.google.com/fb/forms/gcm/">this form</a> to sign up for User Notifications. <a href="{@docRoot}google/gcm/notifications.html">Learn more &raquo;</a></p>
+
+ <h4>Get Started</h4>
+ <p>Get started using the new features with a tutorial that walks you through creating a GCM app. <a href="{@docRoot}google/gcm/gs.html">Learn more &raquo;</a></p>
</div>
</div>
diff --git a/docs/html/google/gcm/notifications.jd b/docs/html/google/gcm/notifications.jd
index 6a4b34ae3038..df171cfea52d 100644
--- a/docs/html/google/gcm/notifications.jd
+++ b/docs/html/google/gcm/notifications.jd
@@ -52,6 +52,9 @@ page.title=User Notifications
<p>The way this works is that during registration, the 3rd-party server requests a {@code notification_key}. The {@code notification_key} maps a particular user to all of the user's associated registration IDs (a regID represents a particular Android application running on a particular device). Then instead of sending one message to one regID at a time, the 3rd-party server can send a message to to the {@code notification_key}, which then sends the message to all of the user's regIDs.</p>
+<p class="note"><strong>Note:</strong> A notification dismissal message is like any other upstream message, meaning that it will be delivered to the other devices that belong to the specified {@code notification_key}. You should design your app to handle cases where the app receives a dismissal message, but has not yet displayed the notification that is being dismissed. You can solve this by caching the dismissal and then reconciling it with the corresponding notification.
+</p>
+
<p>You can use this feature with either the new <a href="ccs.html">GCM Cloud Connection Server</a> (CCS), or the older <a href="gcm.html">GCM HTTP server</a>.</p>
diff --git a/docs/html/google/gcm/server.jd b/docs/html/google/gcm/server.jd
new file mode 100644
index 000000000000..92a1531cdbb4
--- /dev/null
+++ b/docs/html/google/gcm/server.jd
@@ -0,0 +1,160 @@
+page.title=GCM Server
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+
+<h2>Quickview</h2>
+
+<ul>
+<li>Understand how to set up the server side of a GCM app.</li>
+<li>Become familiar with the <a href="{@docRoot}reference/com/google/android/gcm/server/package-summary.html">GCM server helper library</a>.</li>
+</ul>
+
+
+<h2>In this document</h2>
+
+<ol>
+ <li><a href="#requirements">Requirements</a> </li>
+ <li><a href="#gcm-setup">Setting Up GCM</a></li>
+ <li><a href="#server-setup">Setting Up an HTTP Server</a>
+ <ol>
+ <li><a href="#webserver-setup">Using a standard web server</a></li>
+ <li><a href="#appengine-setup">Using App Engine for Java</a></li>
+ </ol>
+ </li>
+</ol>
+
+<h2>See Also</h2>
+
+<ol class="toc">
+<li><a href="gs.html">Getting Started</a></li>
+<li><a href="client.html">GCM Client</a></li>
+<li><a href="ccs.html">Cloud Connection Server</a></li>
+
+
+</ol>
+
+</div>
+</div>
+
+
+
+
+<p>This document gives examples of GCM server-side code for HTTP. For an example of an XMPP server (<a href="ccs.html">Cloud Connection Server</a>), see <a href="gs.html#server">Getting Started</a>. Note that a full GCM implementation requires a client-side implementation, in addition to the server. For a complete working example that includes client and server-side code, see <a href="gs.html">Getting Started</a>.</a>
+
+<h2 id="requirements">Requirements</h2>
+<p>For the web server:</p>
+<ul>
+ <li> <a href="http://ant.apache.org/">Ant 1.8</a> (it might work with earlier versions, but it's not guaranteed).</li>
+ <li>One of the following:
+ <ul>
+ <li>A running web server compatible with Servlets API version 2.5, such as <a href="http://tomcat.apache.org/">Tomcat 6</a> or <a href="http://jetty.codehaus.org/">Jetty</a>, or</li>
+ <li><a href="http://code.google.com/appengine/">Java App Engine SDK</a> version 1.6 or later.</li>
+ </ul>
+ </li>
+ <li>A Google account registered to use GCM.</li>
+ <li>The API key for that account.</li>
+</ul>
+<p>For the Android application:</p>
+<ul>
+ <li>Emulator (or device) running Android 2.2 with Google APIs.</li>
+ <li>The Google API project number of the account registered to use GCM.</li>
+</ul>
+<h2 id="gcm-setup">Setting Up GCM</h2>
+<p>Before proceeding with the server and client setup, it's necessary to register a Google account with the Google API Console, enable Google Cloud Messaging in GCM, and obtain an API key from the <a href="https://code.google.com/apis/console">Google API Console</a>.</p>
+<p>For instructions on how to set up GCM, see <a href="gs.html">Getting Started</a>.</p>
+
+
+<h2 id="server-setup">Setting Up an HTTP Server</h2>
+<p>This section describes the different options for setting up an HTTP server.</p>
+<h3 id="webserver-setup">Using a standard web server</h3>
+<p>To set up the server using a standard, servlet-compliant web server:</p>
+<ol>
+ <li>From the <a href="http://code.google.com/p/gcm">open source site</a>, download the following directories: <code>gcm-server</code>, <code>samples/gcm-demo-server</code>, and <code>samples/gcm-demo-appengine</code>.</p>
+
+
+ <li>In a text editor, edit the <code>samples/gcm-demo-server/WebContent/WEB-INF/classes/api.key</code> and replace the existing text with the API key obtained above.</li>
+ <li>In a shell window, go to the <code>samples/gcm-demo-server</code> directory.</li>
+ <li>Generate the server's WAR file by running <code>ant war</code>:</li>
+
+ <pre class="prettyprint">$ ant war
+
+Buildfile:build.xml
+
+init:
+ [mkdir] Created dir: build/classes
+ [mkdir] Created dir: dist
+
+compile:
+ [javac] Compiling 6 source files to build/classes
+
+war:
+ [war] Building war: <strong>dist/gcm-demo.war</strong>
+
+BUILD SUCCESSFUL
+Total time: 0 seconds
+</pre>
+
+ <li>Deploy the <code>dist/gcm-demo.war</code> to your running server. For instance, if you're using Jetty, copy <code>gcm-demo.war</code> to the <code>webapps</code> directory of the Jetty installation.</li>
+ <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/gcm-demo/home</code>, where <code>gcm-demo</code> is the application context and <code>/home</code> is the path of the main servlet.
+
+ </li>
+</ol>
+<p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows. </p>
+
+<p> You server is now ready.</p>
+
+<h3 id="appengine-setup">Using App Engine for Java</h3>
+
+<p>To set up the server using a standard App Engine for Java:</p>
+<ol>
+ <li>Get the files from the <a href="http://code.google.com/p/gcm">open source site</a>, as described above.</p>
+ </li>
+ <li>In a text editor, edit <code>samples/gcm-demo-appengine/src/com/google/android/gcm/demo/server/ApiKeyInitializer.java</code> and replace the existing text with the API key obtained above.
+
+ <p class="note"><strong>Note:</strong> The API key value set in that class will be used just once to create a persistent entity on App Engine. If you deploy the application, you can use App Engine's <code>Datastore Viewer</code> to change it later.</p>
+
+ </li>
+ <li>In a shell window, go to the <code>samples/gcm-demo-appengine</code> directory.</li>
+ <li>Start the development App Engine server by <code>ant runserver</code>, using the <code>-Dsdk.dir</code> to indicate the location of the App Engine SDK and <code>-Dserver.host</code> to set your server's hostname or IP address:</li>
+
+<pre class="prettyprint">
+$ ant -Dsdk.dir=/opt/google/appengine-java-sdk runserver -Dserver.host=192.168.1.10
+Buildfile: gcm-demo-appengine/build.xml
+
+init:
+ [mkdir] Created dir: gcm-demo-appengine/dist
+
+copyjars:
+
+compile:
+
+datanucleusenhance:
+ [enhance] DataNucleus Enhancer (version 1.1.4) : Enhancement of classes
+ [enhance] DataNucleus Enhancer completed with success for 0 classes. Timings : input=28 ms, enhance=0 ms, total=28 ms. Consult the log for full details
+ [enhance] DataNucleus Enhancer completed and no classes were enhanced. Consult the log for full details
+
+runserver:
+ [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.jetty.JettyLogger info
+ [java] INFO: Logging to JettyLogger(null) via com.google.apphosting.utils.jetty.JettyLogger
+ [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AppEngineWebXmlReader readAppEngineWebXml
+ [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/appengine-web.xml
+ [java] Jun 15, 2012 8:46:06 PM com.google.apphosting.utils.config.AbstractConfigXmlReader readConfigXml
+ [java] INFO: Successfully processed gcm-demo-appengine/WebContent/WEB-INF/web.xml
+ [java] Jun 15, 2012 8:46:09 PM com.google.android.gcm.demo.server.ApiKeyInitializer contextInitialized
+ [java] SEVERE: Created fake key. Please go to App Engine admin console, change its value to your API Key (the entity type is 'Settings' and its field to be changed is 'ApiKey'), then restart the server!
+ [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
+ [java] INFO: The server is running at http://192.168.1.10:8080/
+ [java] Jun 15, 2012 8:46:09 PM com.google.appengine.tools.development.DevAppServerImpl start
+ [java] INFO: The admin console is running at http://192.168.1.10:8080/_ah/admin
+</pre>
+
+ <li>Open the server's main page in a browser. The URL depends on the server you're using and your machine's IP address, but it will be something like <code>http://192.168.1.10:8080/home</code>, where <code>/home</code> is the path of the main servlet.</li>
+
+ <p class="note"><strong>Note:</strong> You can get the IP by running <code>ifconfig</code> on Linux or MacOS, or <code>ipconfig</code> on Windows.</p>
+
+</ol>
+<p> You server is now ready.</p>
+
+
diff --git a/docs/html/google/google_toc.cs b/docs/html/google/google_toc.cs
index 13d3eb38647f..999c44e1734e 100644
--- a/docs/html/google/google_toc.cs
+++ b/docs/html/google/google_toc.cs
@@ -107,6 +107,9 @@
<li><a href="<?cs var:toroot?>google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="<?cs var:toroot?>google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="<?cs var:toroot?>google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -132,11 +135,11 @@
<li><a href="<?cs var:toroot?>google/gcm/notifications.html">
<span class="en">User Notifications</span></a>
</li>
- <li><a href="<?cs var:toroot?>google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="<?cs var:toroot?>google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
</li>
- <li><a href="<?cs var:toroot?>google/gcm/helper.html">
- <span class="en">Using the Helper Libraries</span></a>
+ <li><a href="<?cs var:toroot?>google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="<?cs var:toroot?>google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/google/play/billing/billing_subscriptions.jd b/docs/html/google/play/billing/billing_subscriptions.jd
index 92725cf3c47b..aa25092a0ffb 100644
--- a/docs/html/google/play/billing/billing_subscriptions.jd
+++ b/docs/html/google/play/billing/billing_subscriptions.jd
@@ -20,11 +20,11 @@ directly from Google Play.</li>
<li><a href="#administering">Configuring Subscriptions Items</a></li>
<li><a href="#cancellation">Cancellation</a></li>
<li><a href="#payment">Payment Processing</a></li>
- <li><a href="#play-dev-api">Google Play Android Developer API</a></li>
</ol>
<h2>See also</h2>
<ol>
<li><a href="{@docRoot}google/play/billing/billing_integrate.html#Subs">Implementing Subscriptions (V3)</a></li>
+ <li><a href="https://developers.google.com/android-publisher/v1_1/">Google Play Android Developer API</a></li>
</ol>
</div>
</div>
@@ -68,7 +68,7 @@ In-app Billing to provide subscription purchasers with extended access to
content (for example, from your web site or another service).
The server-side API lets you validate the status of a subscription when users
sign into your other services. For more information about the API, see <a
-href="#play-dev-api">Google Play Android Developer API</a>. </p>
+href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a>. </p>
<p>You can also build on your existing external subscriber base from inside your
Android apps.</p>
@@ -157,8 +157,9 @@ subscription.</p>
<p>When the subscription payment is approved by Google Wallet, Google Play
provides a purchase token back to the purchasing app through the In-app Billing
API. Your apps can store the token locally or pass it to your backend servers,
-which can then use it to validate or cancel the subscription remotely using the <a
-href="#play-dev-api">Google Play Android Developer API</a>.</p>
+which can then use it to validate or cancel the subscription remotely using the
+<a
+href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a>.</p>
<p>If a recurring payment fails (for example, because the customer’s credit
card has become invalid), the subscription does not renew. How your app is
@@ -322,93 +323,10 @@ or the {@code PURCHASE_STATE_CHANGED} intent (in V2).</p>
<h2 id="play-dev-api">Google Play Android Developer API</h2>
-<p>Google Play offers an HTTP-based API that you can use to remotely query the
+<p>Google Play offers an HTTP-based API that lets you remotely query the
validity of a specific subscription at any time or cancel a subscription. The
API is designed to be used from your backend servers as a way of securely
managing subscriptions, as well as extending and integrating subscriptions with
other services.</p>
-<h3 id="using">Using the API</h3>
-
-<p>To use the API, you must first register a project at the <a
-href="https://code.google.com/apis/console">Google APIs Console</a> and receive
-a Client ID and shared secret that your app will present when calling the
-Google Play Android Developer API. All calls to the API are authenticated with
-OAuth 2.0.</p>
-
-<p>Once your app is registered, you can access the API directly, using standard
-HTTP methods to retrieve and manipulate resources, or you can use the Google
-APIs Client Libraries, which are extended to support the API.</p>
-
-<p>The Google Play Android Developer API is built on a RESTful design that uses
-HTTP and JSON, so any standard web stack can send requests and parse the
-responses. However, if you don’t want to send HTTP requests and parse responses
-manually, you can access the API using the client libraries, which provide
-better language integration, improved security, and support for making calls
-that require user authorization.</p>
-
-<p>For more information about the API and how to access it through the Google
-APIs Client Libraries, see the documentation at:</p>
-
-<p style="margin-left:1.5em;"><a
-href="https://developers.google.com/android-publisher/v1/">https://developers.
-google.com/android-publisher/v1/</a></p>
-
-<h3 id="quota">Quota</h3>
-
-<p>Applications using the Google Play Android Developer API are limited to an
-initial courtesy usage quota of <strong>15000 requests per day</strong> (per
-application). This should provide enough access for normal
-subscription-validation needs, assuming that you follow the recommendation in
-this section.</p>
-
-<p>If you need to request a higher limit for your application, please use the
-“Request more” link in the <a
-href="https://code.google.com/apis/console/#:quotas">Google APIs Console</a>.
-Also, please read the section below on design best practices for minimizing your
-use of the API.</p>
-
-<h3 id="auth">Authorization</h3>
-
-<p>Calls to the Google Play Android Developer API require authorization. Google
-uses the OAuth 2.0 protocol to allow authorized applications to access user
-data. To learn more, see <a
-href="https://developers.google.com/android-publisher/authorization">Authorization</a>
-in the Google Play Android Developer API documentation.</p>
-
-<h3 id="practices">Using the API efficiently</h3>
-
-<p>Access to the Google Play Android Developer API is regulated to help ensure a
-high-performance environment for all applications that use it. While you can
-request a higher daily quota for your application, we highly recommend that you
-minimize your access using the technique(s) below. </p>
-
-<ul>
- <li><em>Store subscription expiry on your servers</em> &mdash; your servers
- should use the Google Play Android Developer API to query the expiration date
- for new subscription tokens, then store the expiration date locally. This allows
- you to check the status of subscriptions only at or after the expiration (see
- below). </li>
- <li><em>Cache expiration and purchaseState</em> &mdash; If your app contacts
- your backend servers at runtime to verify subscription validity, your server
- should cache the expiration and purchaseState to ensure the fastest possible
- response (and best experience) for the user.</li>
- <li><em>Query for subscription status only at expiration</em> &mdash; Once your
- server has retrieved the expiration date of subscription tokens, it should not
- query the Google Play servers for the subscription status again until the
- subscription is reaching or has passed the expiration date. Typically, your
- servers would run a batch query each day to check the status of
- <em>expiring</em> subscriptions, then update the database. Note that:
- <ul>
- <li>Your servers should not query all subscriptions every day</li>
- <li>Your servers should never query subscription status dynamically, based on
- individual requests from your Android application. </li>
- </ul>
- </li>
-</ul>
-
-<p>By following those general guidelines, your implementation will offer the
-best possible performance for users and minimize use of the Google Play Android
-Developer API.</p>
-
-
+<p>For complete information, see <a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a>.</p> \ No newline at end of file
diff --git a/docs/html/google/play/billing/gp-purchase-status-api.jd b/docs/html/google/play/billing/gp-purchase-status-api.jd
new file mode 100644
index 000000000000..d6b251ea9d0a
--- /dev/null
+++ b/docs/html/google/play/billing/gp-purchase-status-api.jd
@@ -0,0 +1,166 @@
+page.title=Purchase Status API
+page.tags="In-app Billing", "Google Play", "inapp billing", "in app billing", "iab", "billing"
+
+@jd:body
+
+<div id="qv-wrapper">
+<div id="qv">
+ <h2>In this document</h2>
+ <ol>
+ <li><a href="#overview">Overview</a></li>
+ <li><a href="#using">Using the API</a></li>
+ <li><a href="#strategies">Verification Strategies</a></li>
+ <li><a href="#practices">Using the API Efficiently</a></li>
+ </ol>
+ <h2>See also</h2>
+ <ol>
+ <li><a href="https://developers.google.com/android-publisher/v1_1/">Google Play Android Developer API</a></li>
+ </ol>
+</div>
+</div>
+
+<p>Google Play provides an HTTP-based Purchase Status API that lets
+you remotely query the status of a specific in-app product or subscription,
+or cancel an active subscription. The API is designed to be used from your
+backend servers as a way of securely managing in-app products and
+subscriptions, as well as extending and integrating them with other services.</p>
+
+<h2 id="overview">Overview</h2>
+
+<p>With the Purchase Status API you can quickly retrieve the details of any
+purchase using a standard GET request. In the request you supply information
+about the purchase &mdash; app package name, purchase or subscription ID,
+and the purchase token. The server responds with a JSON object describing
+the associated purchase details, order status, developer payload, and other
+information.</p>
+
+<p>You can use the Purchase Status API in several ways, such as for reporting
+and reconciliation of individual orders and for verifying purchases and
+subscription expirations. You can also use the API to learn about cancelled
+orders and confirm whether in-app products have been consumed, including
+whether they were consumed before being cancelled.</p>
+
+<p>For subscriptions, in addition to querying for order status and expiration,
+you can use the Purchase Status API to remotely cancel a subscription. This is a
+convenient way to manage cancellations on behalf of customers, without
+requiring them to manage the cancellation themselves on their Android devices.</p>
+
+<p>If you plan to use the Purchase Status API, keep in mind that:</p>
+<ul><li>You can use the API to check the status of individual items only
+&mdash; bulk requests for order status are not supported at this time.</li>
+<li>You can query for the details of orders placed on or after 12 June 2013,
+but not for orders placed earlier.</li>
+<li>You can query purchases of any item type made with the In-app
+Billing v3 API, or purchases of managed items made with In-app Billing v1 and
+v2. You can not use the Purchase Status API to query purchases of unmanaged items
+made with In-app Billing v1 or v2.</li>
+</ul>
+
+<p>The Purchase Status API is part of the <a
+href="https://developers.google.com/android-publisher/v1_1/">Google Play Android
+Developer API v1.1</a>, available through the Google APIs console. The new version
+of the API supersedes the v1 API, which is deprecated. If you are using the v1
+API, please migrate your operations to the v1.1 API as soon as possible.</p>
+
+
+<h2 id="using">Using the API</h2>
+
+<p>To use the API, you must first register a project at the <a
+href="https://code.google.com/apis/console">Google APIs Console</a> and receive
+a Client ID and shared secret that your app will present when calling the
+API. All calls are authenticated with OAuth 2.0.</p>
+
+<p>Once your app is registered, you can access the API directly, using standard
+HTTP methods to retrieve and manipulate resources. The API is built on a RESTful
+design that uses HTTP and JSON. so any standard web stack can send requests and
+parse the responses. However, if you don’t want to send HTTP requests and parse
+responses manually, you can access the API using the Google APIs Client
+Libraries, which provide better language integration, improved security,
+and support for making calls that require user authorization.</p>
+
+<p>For more information about the API and how to access it through the Google
+APIs Client Libraries, see the documentation at:</p>
+
+<p style="margin-left:1.5em;"><a
+href="https://developers.google.com/android-publisher/v1_1/">https://developers.
+google.com/android-publisher/v1_1/</a></p>
+
+<h3 id="quota">Quota</h3>
+
+<p>Applications using the Google Play Android Developer API are limited to an
+initial courtesy usage quota of <strong>15000 requests per day</strong> (per
+application). This should provide enough access for normal
+subscription-validation needs, assuming that you follow the recommendation in
+this section.</p>
+
+<p>If you need to request a higher limit for your application, please use the
+“Request more” link in the <a
+href="https://code.google.com/apis/console/#:quotas">Google APIs Console</a>.
+Also, please read the section below on design best practices for minimizing your
+use of the API.</p>
+
+<h3 id="auth">Authorization</h3>
+
+<p>Calls to the Google Play Android Developer API require authorization. Google
+uses the OAuth 2.0 protocol to allow authorized applications to access user
+data. To learn more, see <a
+href="https://developers.google.com/android-publisher/authorization">Authorization</a>
+in the Google Play Android Developer API documentation.</p>
+
+<h2 id="strategies">Purchase Verification Strategies</h2>
+
+<p>In a typical scenario, your app verifies the order status for new purchases
+to ensure that they are valid before granting access to the purchased content.</p>
+
+<p>To verify a purchase, the app passes the purchase token and other details up
+to your backend servers, which verifies them directly with Google Play using the
+Purchase Status API. For security reasons, the app should not normally attempt to verify
+the purchase itself using the Purchase Status API.</p>
+
+<p>If the backend server determines that the purchase is valid, it notifies the
+app and grant access to the content. For improved performance, the backend servers
+should store the purchase details and order status in a local database, updated a
+intervals or as-needed.</p>
+
+<p>Keep in mind that users will want to be able to use your app at any time, including
+when there may be no network connection available. Make sure that your approach to
+purchase verification takes account of the offline use-case.</p>
+
+<h2 id="practices">Using the API Efficiently</h2>
+
+<p>Access to the Google Play Android Developer API is regulated to help ensure a
+high-performance environment for all applications that use it. While you can
+request a higher daily quota for your application, we highly recommend that you
+minimize your access using the techniques below. </p>
+
+<ul>
+ <li><em>Query the Purchase Status API for new purchases only</em> &mdash; At
+ purchase, your app can pass the purchase token and other details to your backend
+ servers, which can use the Purchase Status API to verify the purchase.</li>
+ <li><em>Cache purchase details on your servers</em> &mdash; To the extent possible,
+ cache the purchase details for in-app products and subscriptions on your backend
+ servers. If your app contacts your backend servers at runtime to verify purchase
+ validity, your server can verify the purchase based on the cached details, to
+ minimize use of the Purchase Status API and to provide the fastest possible response
+ (and best experience) for the user.</li>
+ <li><em>Store subscription expiry on your servers</em> &mdash; Your servers should
+ use the Purchase Status API to query the expiration date for new subscription tokens,
+ then store the expiration date locally. This allows you to check the status of
+ subscriptions only at or after the expiration (see below).</li>
+ <li><em>Query for subscription status only at expiration</em> &mdash; Once your
+ server has retrieved the expiration date of subscription tokens, it should not query
+ the Google Play servers for the subscription status again until the subscription is
+ reaching or has passed the expiration date. Typically, your servers would run a batch
+ query each day to check the status of expiring subscriptions, then update the database.
+ Note that:
+ <ul>
+ <li>Your servers should not query all subscriptions every day</li>
+ <li>Your servers should never query subscription status dynamically, based on
+ individual requests from your Android application.</li>
+ </ul>
+ </li>
+</ul>
+
+<p>By following those general guidelines, your implementation will offer the
+best possible performance for users and minimize use of the Google Play Android
+Developer API.</p>
diff --git a/docs/html/google/play/billing/index.jd b/docs/html/google/play/billing/index.jd
index 1969154f5ea3..481a79ce0143 100644
--- a/docs/html/google/play/billing/index.jd
+++ b/docs/html/google/play/billing/index.jd
@@ -10,6 +10,7 @@ and features, and more. You can use In-app Billing to sell products as</p>
<div class="sidebox">
<h2><strong>New in In-App Billing</strong></h2>
<ul>
+ <li><strong>Purchase Status API</strong>&mdash;The <a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a> lets you query the status of in-app product or subscription purchases. </li>
<li><strong>In-app Billing Version 3</strong>&mdash;The <a href="{@docRoot}google/play/billing/api.html">latest version</a> of In-app Billing features a synchronous API that is easier to implement and lets you manage in-app products and subscriptions more effectively.</li>
<li><strong>Subscriptions now supported in Version 3</strong>&mdash;You can query and launch purchase flows for subscription items using the V3 API.</li>
<li><strong>Free trials</strong>&mdash;You can now offer users a configurable <a href="/google/play/billing/v2/billing_subscriptions.html#trials">free trial period</a> for your in-app subscriptions. You can set up trials with a simple change in the Developer Console&mdash;no change to your app code is needed.</li>
diff --git a/docs/html/google/play/billing/v2/billing_reference.jd b/docs/html/google/play/billing/v2/billing_reference.jd
index a946295e3326..4587dee6db97 100644
--- a/docs/html/google/play/billing/v2/billing_reference.jd
+++ b/docs/html/google/play/billing/v2/billing_reference.jd
@@ -413,4 +413,4 @@ a <code>PURCHASE_STATE_CHANGED</code> intent.</p>
implemention. </p> -->
<h3 id="http-api">REST API for subscriptions</h3>
-<p>Google Play offers an HTTP-based API that you can use to remotely query the validity of a specific subscription at any time or cancel a subscription. The API is designed to be used from your backend servers as a way of securely managing subscriptions, as well as extending and integrating subscriptions with other services. See <a href="{@docRoot}google/play/billing/v2/billing_subscriptions.html#play-dev-api"> Google Play Android Developer API</a> for more information.</p>
+<p>Google Play offers an HTTP-based API that you can use to remotely query the validity of a specific subscription at any time or cancel a subscription. The API is designed to be used from your backend servers as a way of securely managing subscriptions, as well as extending and integrating subscriptions with other services. See <a href="{@docRoot}google/play/billing/gp-purchase-status-api.html">Purchase Status API</a> for more information.</p>
diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs
index 5f9f53000a06..16dca9d56511 100644
--- a/docs/html/guide/guide_toc.cs
+++ b/docs/html/guide/guide_toc.cs
@@ -326,11 +326,11 @@
</a></div>
<ul>
<li><a href="<?cs var:toroot ?>guide/topics/renderscript/compute.html">
- <span class="en">Renderscript</span></a>
+ <span class="en">RenderScript</span></a>
</li>
<li><a href="<?cs var:toroot ?>guide/topics/renderscript/advanced.html">
- <span class="en">Advanced Renderscript</span></a>
+ <span class="en">Advanced RenderScript</span></a>
</li>
<li><a href="<?cs var:toroot ?>guide/topics/renderscript/reference.html">
<span class="en">Runtime API Reference</span></a>
diff --git a/docs/html/guide/topics/data/backup.jd b/docs/html/guide/topics/data/backup.jd
index 598b08a59547..4903852de9f1 100644
--- a/docs/html/guide/topics/data/backup.jd
+++ b/docs/html/guide/topics/data/backup.jd
@@ -680,7 +680,7 @@ android.app.backup.BackupAgentHelper} looks like this:</p>
<pre>
public class MyFileBackupAgent extends BackupAgentHelper {
- // The name of the SharedPreferences file
+ // The name of the file
static final String TOP_SCORES = "scores";
static final String PLAYER_STATS = "stats";
diff --git a/docs/html/guide/topics/renderscript/advanced.jd b/docs/html/guide/topics/renderscript/advanced.jd
index 58f5e1f8253d..6a72b979006c 100644
--- a/docs/html/guide/topics/renderscript/advanced.jd
+++ b/docs/html/guide/topics/renderscript/advanced.jd
@@ -1,4 +1,4 @@
-page.title=Advanced Renderscript
+page.title=Advanced RenderScript
parent.title=Computation
parent.link=index.html
@@ -9,7 +9,7 @@ parent.link=index.html
<h2>In this document</h2>
<ol>
- <li><a href="#native">Renderscript Runtime Layer</a></li>
+ <li><a href="#native">RenderScript Runtime Layer</a></li>
<li><a href="#reflected">Reflected Layer</a>
<ol>
<li><a href="#func">Functions</a></li>
@@ -25,7 +25,7 @@ parent.link=index.html
<li>
<a href="#memory">Working with Memory</a>
<ol>
- <li><a href="#allocating-mem">Allocating and binding memory to the Renderscript</a></li>
+ <li><a href="#allocating-mem">Allocating and binding memory to the RenderScript</a></li>
<li><a href="#read-write">Reading and writing to memory</a></li>
@@ -37,36 +37,36 @@ parent.link=index.html
<p></p>
- <p>Because applications that utilize Renderscript still run inside of the Android VM,
+ <p>Because applications that utilize RenderScript still run inside of the Android VM,
you have access to all of the framework APIs that you are familiar with, but can
- utilize Renderscript when appropriate. To facilitate this interaction between
- the framework and the Renderscript runtime, an intermediate layer of code is also
+ utilize RenderScript when appropriate. To facilitate this interaction between
+ the framework and the RenderScript runtime, an intermediate layer of code is also
present to facilitate communication and memory management between the two levels of code.
This document goes into more detail about these
different layers of code as well as how memory is shared between the Android VM and
- Renderscript runtime.</p>
+ RenderScript runtime.</p>
- <h2 id="native">Renderscript Runtime Layer</h2>
+ <h2 id="native">RenderScript Runtime Layer</h2>
- <p>Your Renderscript code is compiled and
- executed in a compact and well-defined runtime layer. The Renderscript runtime APIs offer support for
+ <p>Your RenderScript code is compiled and
+ executed in a compact and well-defined runtime layer. The RenderScript runtime APIs offer support for
intensive computation that is portable and automatically scalable to the
amount of cores available on a processor.
</p>
<p class="note"><strong>Note:</strong> The standard C functions in the NDK must be
- guaranteed to run on a CPU, so Renderscript cannot access these libraries,
- because Renderscript is designed to run on different types of processors.</p>
+ guaranteed to run on a CPU, so RenderScript cannot access these libraries,
+ because RenderScript is designed to run on different types of processors.</p>
-<p>You define your Renderscript code in <code>.rs</code>
+<p>You define your RenderScript code in <code>.rs</code>
and <code>.rsh</code> files in the <code>src/</code> directory of your Android project. The code
is compiled to intermediate bytecode by the
<code>llvm</code> compiler that runs as part of an Android build. When your application
runs on a device, the bytecode is then compiled (just-in-time) to machine code by another
<code>llvm</code> compiler that resides on the device. The machine code is optimized for the
- device and also cached, so subsequent uses of the Renderscript enabled application does not
+ device and also cached, so subsequent uses of the RenderScript enabled application does not
recompile the bytecode.</p>
- <p>Some key features of the Renderscript runtime libraries include:</p>
+ <p>Some key features of the RenderScript runtime libraries include:</p>
<ul>
@@ -79,20 +79,20 @@ amount of cores available on a processor.
<li>Conversion routines for primitive data types and vectors, matrix routines, and date and time
routines</li>
- <li>Data types and structures to support the Renderscript system such as Vector types for
+ <li>Data types and structures to support the RenderScript system such as Vector types for
defining two-, three-, or four-vectors.</li>
<li>Logging functions</li>
</ul>
- <p>See the Renderscript runtime API reference for more information on the available functions.
+ <p>See the RenderScript runtime API reference for more information on the available functions.
<h2 id="reflected">Reflected Layer</h2>
<p>The reflected layer is a set of classes that the Android build tools generate to allow access
- to the Renderscript runtime from the Android framework. This layer also provides methods
+ to the RenderScript runtime from the Android framework. This layer also provides methods
and constructors that allow you to allocate and work with memory for pointers that are defined in
-your Renderscript code. The following list describes the major
+your RenderScript code. The following list describes the major
components that are reflected:</p>
<ul>
@@ -105,9 +105,9 @@ following items reflected from the <code>.rs</code> file:
<ul>
<li>Non-static functions</li>
- <li>Non-static, global Renderscript variables. Accessor methods are generated for each
- variable, so you can read and write the Renderscript variables from the Android
- framework. If a global variable is initialized at the Renderscript runtime layer, those
+ <li>Non-static, global RenderScript variables. Accessor methods are generated for each
+ variable, so you can read and write the RenderScript variables from the Android
+ framework. If a global variable is initialized at the RenderScript runtime layer, those
values are used to initialize the corresponding values in the Android framework layer. If global
variables are marked as <code>const</code>, then a <code>set</code> method is not
generated.</p></li>
@@ -128,7 +128,7 @@ generated.</p></li>
<h3 id="func">Functions</h3>
<p>Functions are reflected into the script class itself, located in
<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. For
-example, if you declare the following function in your Renderscript code:</p>
+example, if you declare the following function in your RenderScript code:</p>
<pre>
void touch(float x, float y, float pressure, int id) {
@@ -155,14 +155,14 @@ public void invoke_touch(float x, float y, float pressure, int id) {
}
</pre>
<p>
-Functions cannot have a return value, because the Renderscript system is designed to be
-asynchronous. When your Android framework code calls into Renderscript, the call is queued and is
-executed when possible. This restriction allows the Renderscript system to function without constant
+Functions cannot have a return value, because the RenderScript system is designed to be
+asynchronous. When your Android framework code calls into RenderScript, the call is queued and is
+executed when possible. This restriction allows the RenderScript system to function without constant
interruption and increases efficiency. If functions were allowed to have return values, the call
would block until the value was returned.</p>
<p>
-If you want the Renderscript code to send a value back to the Android framework, use the
+If you want the RenderScript code to send a value back to the Android framework, use the
<a href="{@docRoot}reference/renderscript/rs__core_8rsh.html"><code>rsSendToClient()</code></a>
function.
</p>
@@ -172,7 +172,7 @@ function.
<p>Variables of supported types are reflected into the script class itself, located in
<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. A set of accessor
methods are generated for each variable. For example, if you declare the following variable in
-your Renderscript code:</p>
+your RenderScript code:</p>
<pre>uint32_t unsignedInteger = 1;</pre>
<p>then the following code is generated:</p>
@@ -329,7 +329,7 @@ public class ScriptField_Point extends android.renderscript.Script.FieldBase {
</pre>
<p>The generated code is provided to you as a convenience to allocate memory for structs requested
-by the Renderscript runtime and to interact with <code>struct</code>s
+by the RenderScript runtime and to interact with <code>struct</code>s
in memory. Each <code>struct</code>'s class defines the following methods and constructors:</p>
<ul>
@@ -356,11 +356,11 @@ in memory. Each <code>struct</code>'s class defines the following methods and co
</ul>
<p>You can specify multiple memory spaces by using the bitwise <code>OR</code> operator. Doing so
- notifies the Renderscript runtime that you intend on accessing the data in the
+ notifies the RenderScript runtime that you intend on accessing the data in the
specified memory spaces. The following example allocates memory for a custom data type
in both the script and vertex memory spaces:</p>
<pre>
- ScriptField_Point touchPoints = new ScriptField_Point(myRenderscript, 2,
+ ScriptField_Point touchPoints = new ScriptField_Point(myRenderScript, 2,
Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_VERTEX);
</pre>
</li>
@@ -370,13 +370,13 @@ in memory. Each <code>struct</code>'s class defines the following methods and co
with the <code>struct</code> in your Android code. When you are done manipulating the object,
you can push the object to the allocated memory by calling <code>set(Item i, int index,
boolean copyNow)</code> and setting the <code>Item</code> to the desired position in
-the array. The Renderscript runtime automatically has access to the newly written memory.
+the array. The RenderScript runtime automatically has access to the newly written memory.
<li>Accessor methods to get and set the values of each field in a struct. Each of these
accessor methods have an <code>index</code> parameter to specify the <code>struct</code> in
the array that you want to read or write to. Each setter method also has a
<code>copyNow</code> parameter that specifies whether or not to immediately sync this memory
-to the Renderscript runtime. To sync any memory that has not been synced, call
+to the RenderScript runtime. To sync any memory that has not been synced, call
<code>copyAll()</code>.</li>
<li>The <code>createElement()</code> method creates a description of the struct in memory. This
@@ -387,7 +387,7 @@ expand previously allocated memory, maintaining the current values that were pre
created.</li>
<li><code>copyAll()</code> synchronizes memory that was set on the framework level to the
-Renderscript runtime. When you call a set accessor method on a member, there is an optional
+RenderScript runtime. When you call a set accessor method on a member, there is an optional
<code>copyNow</code> boolean parameter that you can specify. Specifying
<code>true</code> synchronizes the memory when you call the method. If you specify false,
you can call <code>copyAll()</code> once, and it synchronizes memory for all the
@@ -397,7 +397,7 @@ properties that are not yet synchronized.</li>
<h3 id="pointer">Pointers</h3>
<p>Pointers are reflected into the script class itself, located in
<code>project_root/gen/package/name/ScriptC_renderscript_filename</code>. You
-can declare pointers to a <code>struct</code> or any of the supported Renderscript types, but a
+can declare pointers to a <code>struct</code> or any of the supported RenderScript types, but a
<code>struct</code> cannot contain pointers or nested arrays. For example, if you declare the
following pointers to a <code>struct</code> and <code>int32_t</code></p>
@@ -438,7 +438,7 @@ public Allocation get_intPointer() {
<p>A <code>get</code> method and a special method named <code>bind_<em>pointer_name</em></code>
(instead of a <code>set()</code> method) is generated. This method allows you to bind the memory
-that is allocated in the Android VM to the Renderscript runtime (you cannot allocate
+that is allocated in the Android VM to the RenderScript runtime (you cannot allocate
memory in your <code>.rs</code> file). For more information, see <a href="#memory">Working
with Allocated Memory</a>.
</p>
@@ -446,14 +446,14 @@ with Allocated Memory</a>.
<h2 id="mem-allocation">Memory Allocation APIs</h2>
- <p>Applications that use Renderscript still run in the Android VM. The actual Renderscript code, however, runs natively and
+ <p>Applications that use RenderScript still run in the Android VM. The actual RenderScript code, however, runs natively and
needs access to the memory allocated in the Android VM. To accomplish this, you must
- attach the memory that is allocated in the VM to the Renderscript runtime. This
-process, called binding, allows the Renderscript runtime to seamlessly work with memory that it
+ attach the memory that is allocated in the VM to the RenderScript runtime. This
+process, called binding, allows the RenderScript runtime to seamlessly work with memory that it
requests but cannot explicitly allocate. The end result is essentially the same as if you had
called <code>malloc</code> in C. The added benefit is that the Android VM can carry out garbage collection as well as
-share memory with the Renderscript runtime layer. Binding is only necessary for dynamically allocated memory. Statically
-allocated memory is automatically created for your Renderscript code at compile time. See <a href="#figure1">Figure 1</a>
+share memory with the RenderScript runtime layer. Binding is only necessary for dynamically allocated memory. Statically
+allocated memory is automatically created for your RenderScript code at compile time. See <a href="#figure1">Figure 1</a>
for more information on how memory allocation occurs.
</p>
@@ -479,11 +479,11 @@ understand how these classes work, it is useful to think of them in relation to
<p>In most situations, you do not need to call these memory allocation APIs directly. The reflected layer
classes generate code to use these APIs automatically and all you need to do to allocate memory is call a
constructor that is declared in one of the reflected layer classes and then bind
- the resulting memory {@link android.renderscript.Allocation} to the Renderscript.
+ the resulting memory {@link android.renderscript.Allocation} to the RenderScript.
There are some situations where you would want to use these classes directly to allocate memory on your
own, such as loading a bitmap from a resource or when you want to allocate memory for pointers to
primitive types. You can see how to do this in the
- <a href="#allocating-mem">Allocating and binding memory to the Renderscript</a> section.
+ <a href="#allocating-mem">Allocating and binding memory to the RenderScript</a> section.
The following table describes the three memory management classes in more detail:</p>
<table id="mem-mgmt-table">
@@ -500,12 +500,12 @@ understand how these classes work, it is useful to think of them in relation to
<p>An element describes one cell of a memory allocation and can have two forms: basic or
complex.</p>
- <p>A basic element contains a single component of data of any valid Renderscript data type.
+ <p>A basic element contains a single component of data of any valid RenderScript data type.
Examples of basic element data types include a single <code>float</code> value, a <code>float4</code> vector, or a
single RGB-565 color.</p>
<p>Complex elements contain a list of basic elements and are created from
- <code>struct</code>s that you declare in your Renderscript code. For instance an allocation
+ <code>struct</code>s that you declare in your RenderScript code. For instance an allocation
can contain multiple <code>struct</code>s arranged in order in memory. Each struct is considered as its
own element, rather than each data type within that struct.</p>
</td>
@@ -552,64 +552,64 @@ understand how these classes work, it is useful to think of them in relation to
<h2 id="memory">Working with Memory</h2>
-<p>Non-static, global variables that you declare in your Renderscript are allocated memory at compile time.
-You can work with these variables directly in your Renderscript code without having to allocate
+<p>Non-static, global variables that you declare in your RenderScript are allocated memory at compile time.
+You can work with these variables directly in your RenderScript code without having to allocate
memory for them at the Android framework level. The Android framework layer also has access to these variables
with the provided accessor methods that are generated in the reflected layer classes. If these variables are
-initialized at the Renderscript runtime layer, those values are used to initialize the corresponding
+initialized at the RenderScript runtime layer, those values are used to initialize the corresponding
values in the Android framework layer. If global variables are marked as const, then a <code>set</code> method is
not generated.</p>
-<p class="note"><strong>Note:</strong> If you are using certain Renderscript structures that contain pointers, such as
+<p class="note"><strong>Note:</strong> If you are using certain RenderScript structures that contain pointers, such as
<code>rs_program_fragment</code> and <code>rs_allocation</code>, you have to obtain an object of the
corresponding Android framework class first and then call the <code>set</code> method for that
-structure to bind the memory to the Renderscript runtime. You cannot directly manipulate these structures
-at the Renderscript runtime layer. This restriction is not applicable to user-defined structures
+structure to bind the memory to the RenderScript runtime. You cannot directly manipulate these structures
+at the RenderScript runtime layer. This restriction is not applicable to user-defined structures
that contain pointers, because they cannot be exported to a reflected layer class
in the first place. A compiler error is generated if you try to declare a non-static, global
struct that contains a pointer.
</p>
-<p>Renderscript also has support for pointers, but you must explicitly allocate the memory in your
+<p>RenderScript also has support for pointers, but you must explicitly allocate the memory in your
Android framework code. When you declare a global pointer in your <code>.rs</code> file, you
allocate memory through the appropriate reflected layer class and bind that memory to the native
-Renderscript layer. You can interact with this memory from the Android framework layer as well as
-the Renderscript layer, which offers you the flexibility to modify variables in the most
+RenderScript layer. You can interact with this memory from the Android framework layer as well as
+the RenderScript layer, which offers you the flexibility to modify variables in the most
appropriate layer.</p>
- <h3 id="allocating-mem">Allocating and binding dynamic memory to the Renderscript</h3>
+ <h3 id="allocating-mem">Allocating and binding dynamic memory to the RenderScript</h3>
<p>To allocate dynamic memory, you need to call the constructor of a
{@link android.renderscript.Script.FieldBase} class, which is the most common way. An alternative is to create an
{@link android.renderscript.Allocation} manually, which is required for things such as primitive type pointers. You should
use a {@link android.renderscript.Script.FieldBase} class constructor whenever available for simplicity.
After obtaining a memory allocation, call the reflected <code>bind</code> method of the pointer to bind the allocated memory to the
- Renderscript runtime.</p>
+ RenderScript runtime.</p>
<p>The example below allocates memory for both a primitive type pointer,
<code>intPointer</code>, and a pointer to a struct, <code>touchPoints</code>. It also binds the memory to the
- Renderscript:</p>
+ RenderScript:</p>
<pre>
-private RenderScript myRenderscript;
+private RenderScript myRenderScript;
private ScriptC_example script;
private Resources resources;
public void init(RenderScript rs, Resources res) {
- myRenderscript = rs;
+ myRenderScript = rs;
resources = res;
//allocate memory for the struct pointer, calling the constructor
- ScriptField_Point touchPoints = new ScriptField_Point(myRenderscript, 2);
+ ScriptField_Point touchPoints = new ScriptField_Point(myRenderScript, 2);
//Create an element manually and allocate memory for the int pointer
- intPointer = Allocation.createSized(myRenderscript, Element.I32(myRenderscript), 2);
+ intPointer = Allocation.createSized(myRenderScript, Element.I32(myRenderScript), 2);
- //create an instance of the Renderscript, pointing it to the bytecode resource
- mScript = new ScriptC_example(myRenderscript, resources, R.raw.example);
+ //create an instance of the RenderScript, pointing it to the bytecode resource
+ mScript = new ScriptC_example(myRenderScript, resources, R.raw.example);
- //bind the struct and int pointers to the Renderscript
+ //bind the struct and int pointers to the RenderScript
mScript.bind_touchPoints(touchPoints);
script.bind_intPointer(intPointer);
@@ -618,29 +618,29 @@ public void init(RenderScript rs, Resources res) {
</pre>
<h3>Reading and writing to memory</h3>
- <p>You can read and write to statically and dynamically allocated memory both at the Renderscript runtime
+ <p>You can read and write to statically and dynamically allocated memory both at the RenderScript runtime
and Android framework layer.</p>
<p>Statically allocated memory comes with a one-way communication restriction
-at the Renderscript runtime level. When Renderscript code changes the value of a variable, it is not
+at the RenderScript runtime level. When RenderScript code changes the value of a variable, it is not
communicated back to the Android framework layer for efficiency purposes. The last value
that is set from the Android framework is always returned during a call to a <code>get</code>
method. However, when Android framework code modifies a variable, that change can be communicated to
-the Renderscript runtime automatically or synchronized at a later time. If you need to send data
-from the Renderscript runtime to the Android framework layer, you can use the
+the RenderScript runtime automatically or synchronized at a later time. If you need to send data
+from the RenderScript runtime to the Android framework layer, you can use the
<a href="{@docRoot}reference/renderscript/rs__core_8rsh.html"><code>rsSendToClient()</code></a> function
to overcome this limitation.
</p>
-<p>When working with dynamically allocated memory, any changes at the Renderscript runtime layer are propagated
+<p>When working with dynamically allocated memory, any changes at the RenderScript runtime layer are propagated
back to the Android framework layer if you modified the memory allocation using its associated pointer.
-Modifying an object at the Android framework layer immediately propagates that change back to the Renderscript
+Modifying an object at the Android framework layer immediately propagates that change back to the RenderScript
runtime layer.</p>
<h4>Reading and writing to global variables</h4>
<p>Reading and writing to global variables is a straightforward process. You can use the accessor methods
- at the Android framework level or set them directly in the Renderscript code. Keep in mind that any
- changes that you make in your Renderscript code are not propagated back to the Android framework layer.</p>
+ at the Android framework level or set them directly in the RenderScript code. Keep in mind that any
+ changes that you make in your RenderScript code are not propagated back to the Android framework layer.</p>
<p>For example, given the following struct declared in a file named <code>rsfile.rs</code>:</p>
<pre>
@@ -659,8 +659,8 @@ point.x = 1;
point.y = 1;
</pre>
-<p>You can assign values to the struct at the Android framework layer like this. These values are
-propagated back to the Renderscript runtime level:</p>
+<p>You can assign values to the struct at the Android framework layer like this. These values are
+propagated back to the RenderScript runtime level:</p>
<pre>
ScriptC_rsfile mScript;
@@ -672,7 +672,7 @@ i.y = 1;
mScript.set_point(i);
</pre>
-<p>You can read the values in your Renderscript code like this:</p>
+<p>You can read the values in your RenderScript code like this:</p>
<pre>
rsDebug("Printing out a Point", point.x, point.y);
@@ -680,7 +680,7 @@ rsDebug("Printing out a Point", point.x, point.y);
<p>You can read the values in the Android framework layer with the following code. Keep in mind that this
code only returns a value if one was set at the Android framework level. You will get a null pointer
-exception if you only set the value at the Renderscript runtime level:</p>
+exception if you only set the value at the RenderScript runtime level:</p>
<pre>
Log.i("TAGNAME", "Printing out a Point: " + mScript.get_point().x + " " + mScript.get_point().y);
@@ -689,9 +689,9 @@ System.out.println(point.get_x() + " " + point.get_y());
<h4>Reading and writing global pointers</h4>
-<p>Assuming that memory has been allocated in the Android framework level and bound to the Renderscript runtime,
+<p>Assuming that memory has been allocated in the Android framework level and bound to the RenderScript runtime,
you can read and write memory from the Android framework level by using the <code>get</code> and <code>set</code> methods for that pointer.
-In the Renderscript runtime layer, you can read and write to memory with pointers as normal and the changes are propagated
+In the RenderScript runtime layer, you can read and write to memory with pointers as normal and the changes are propagated
back to the Android framework layer, unlike with statically allocated memory.</p>
<p>For example, given the following pointer to a <code>struct</code> in a file named <code>rsfile.rs</code>:</p>
@@ -726,5 +726,5 @@ ScriptField_Point p = new ScriptField_Point(mRS, 1);
points.get_x(0);
</pre>
-<p>Once memory is already bound, you do not have to rebind the memory to the Renderscript
+<p>Once memory is already bound, you do not have to rebind the memory to the RenderScript
runtime every time you make a change to a value.</p>
diff --git a/docs/html/guide/topics/renderscript/compute.jd b/docs/html/guide/topics/renderscript/compute.jd
index 5f466ce0ba17..607d16e03665 100644
--- a/docs/html/guide/topics/renderscript/compute.jd
+++ b/docs/html/guide/topics/renderscript/compute.jd
@@ -1,4 +1,4 @@
-page.title=Renderscript Computation
+page.title=RenderScript
parent.title=Computation
parent.link=index.html
@@ -9,15 +9,8 @@ parent.link=index.html
<h2>In this document</h2>
<ol>
- <li><a href="#overview">Renderscript System Overview</a></li>
- <li><a href="#filterscript">Filterscript</a></li>
- <li>
- <a href="#creating-renderscript">Creating a Computation Renderscript</a>
- <ol>
- <li><a href="#creating-rs-file">Creating the Renderscript file</a></li>
- <li><a href="#calling">Calling the Renderscript code</a></li>
- </ol>
- </li>
+ <li><a href="#writing-an-rs-kernel">Writing a RenderScript Kernel</a></li>
+ <li><a href="#using-rs-from-java">Using RenderScript from Java Code</a></li>
</ol>
<h2>Related Samples</h2>
@@ -29,371 +22,204 @@ parent.link=index.html
</div>
</div>
- <p>Renderscript offers a high performance computation API at the native
-level that you write in C (C99 standard). Renderscript gives your apps the ability to run
-operations with automatic parallelization across all available processor cores.
-It also supports different types of processors such as the CPU, GPU or DSP. Renderscript
-is useful for apps that do image processing, mathematical modeling, or any operations
-that require lots of mathematical computation.</p>
-
-<p>In addition, you have access to all of these features without having to write code to
-support different architectures or a different amount of processing cores. You also
-do not need to recompile your application for different processor types, because Renderscript
-code is compiled on the device at runtime.</p>
-
-<p class="note"><strong>Deprecation Notice</strong>: Earlier versions of Renderscript included
- an experimental graphics engine component. This component
-is now deprecated as of Android 4.1 (most of the APIs in <code>rs_graphics.rsh</code>
-and the corresponding APIs in {@link android.renderscript}).
-If you have apps that render graphics with Renderscript, we highly
-recommend you convert your code to another Android graphics rendering option.</p>
-
- <h2 id="overview">Renderscript System Overview</h2>
- <p>The Renderscript runtime operates at the native level and still needs to communicate
-with the Android VM, so the way a Renderscript application is set up is different from a pure VM
-application. An application that uses Renderscript is still a traditional Android application that
-runs in the VM, but you write Renderscript code for the parts of your program that require
-it. No matter what you use it for, Renderscript remains platform
-independent, so you do not have to target multiple architectures (for example,
-ARM v5, ARM v7, x86).</p>
-
-<p>The Renderscript system adopts a control and slave architecture where the low-level Renderscript runtime
-code is controlled by the higher level Android system that runs in a virtual machine (VM). The
-Android VM still retains all control of memory management and binds memory that it allocates to
-the Renderscript runtime, so the Renderscript code can access it. The Android framework makes
-asynchronous calls to Renderscript, and the calls are placed in a message queue and processed
-as soon as possible. Figure 1 shows how the Renderscript system is structured.</p>
-
- <img id="figure1" src="{@docRoot}images/rs_overview.png" />
- <p class="img-caption"><strong>Figure 1.</strong> Renderscript system overview</p>
-
- <p>When using Renderscript, there are three layers of APIs that enable communication between the
- Renderscript runtime and Android framework code:</p>
-
- <ul>
- <li>The Renderscript runtime APIs allow you to do the computation
- that is required by your application.</li>
-
- <li>The reflected layer APIs are a set of classes that are reflected from your Renderscript
-runtime code. It is basically a wrapper around the Renderscript code that allows the Android
-framework to interact with the Renderscript runtime. The Android build tools automatically generate the
-classes for this layer during the build process. These classes eliminate the need to write JNI glue
-code, like with the NDK.</li>
-
- <li>The Android framework layer calls the reflected layer to access the Renderscript
- runtime.</li>
- </ul>
-
-<p>Because of the way Renderscript is structured, the main advantages are:</p>
- <ul>
- <li>Portability: Renderscript is designed to run on many types of devices with different
- processor (CPU, GPU, and DSP for instance) architectures. It supports all of these architectures without
- having to target each device, because the code is compiled and cached on the device
- at runtime.</li>
-
- <li>Performance: Renderscript provides a high performance computation API with seamless parallelization
- across the amount of cores on the device.</li>
-
- <li>Usability: Renderscript simplifies development when possible, such as eliminating JNI glue code.</li>
- </ul>
-
- <p>The main disadvantages are:</p>
-
- <ul>
- <li>Development complexity: Renderscript introduces a new set of APIs that you have to learn.</li>
-
- <li>Debugging visibility: Renderscript can potentially execute (planned feature for later releases)
- on processors other than the main CPU (such as the GPU), so if this occurs, debugging becomes more difficult.
- </li>
- </ul>
-
-<p>For a more detailed explanation of how all of these layers work together, see
- <a href="{@docRoot}guide/topics/renderscript/advanced.html">Advanced Renderscript</a>.<p>
-
-<h2 id="filterscript">Filterscript</h2>
-
-<p>Introduced in Android 4.2 (API Level 17), Filterscript defines a subset of Renderscript
-that focuses on image processing operations, such as those
-that you would typically write with an OpenGL ES fragment shader. You still write your scripts
-using the standard Renderscript runtime APIs, but within stricter
-constraints that ensure wider compatibility and improved optimization across
-CPUs, GPUs, and DSPs. At compile time, the precompiler evaluates Filterscript files and
-applies a more stringent set of warnings and errors than
-it does for standard Renderscript files. The following list describes the major constraints
-of Filterscript when compared to Renderscript:</p>
+<p>RenderScript is a framework for running computationally intensive tasks at high performance on
+Android. RenderScript is primarily oriented for use with data-parallel computation, although serial
+computationally intensive workloads can benefit as well. The RenderScript runtime will parallelize
+work across all processors available on a device, such as multi-core CPUs, GPUs, or DSPs, allowing
+you to focus on expressing algorithms rather than scheduling work or load balancing. RenderScript is
+especially useful for applications performing image processing, computational photography, or
+computer vision.</p>
+<p>To begin with RenderScript, there are two main concepts you should understand:</p>
<ul>
-<li>Inputs and return values of root functions cannot contain pointers. The default root function
-signature contains pointers, so you must use the <code>__attribute__((kernel))</code> attribute to declare a custom
-root function when using Filterscript.</li>
-<li>Built-in types cannot exceed 32-bits.</li>
-<li>Filterscript must always use relaxed floating point precision by using the
-<code>rs_fp_relaxed</code> pragma.</li>
-<li>Filterscript files must end with an <code>.fs</code> extension, instead of an <code>.rs</code> extension.</li>
-</ul>
-<h2 id="creating-renderscript">Creating a Renderscript</h2>
+<li>High-performance compute kernels are written in a C99-derived language.</li>
-<p>Renderscript scales to the amount of
-processing cores available on the device. This is enabled through a function named
-<code>rsForEach()</code> (or the <code>forEach_root()</code> method at the Android framework level).
-that automatically partitions work across available processing cores on the device.</p>
+<li>A Java API is used for managing the lifetime of RenderScript resources and controlling kernel
+execution.</li>
+</ul>
-<p>Implementing a Renderscript involves creating a <code>.rs</code> file that contains
-your Renderscript code and calling it at the Android framework level with the
-<code>forEach_root()</code> or at the Renderscript runtime level with the
-<code>rsForEach()</code> function. The following diagram describes how a typical
-Renderscript is set up:</p><img src="{@docRoot}images/rs_compute.png">
+<h2 id="writing-an-rs-kernel">Writing a RenderScript Kernel</h2>
-<p class="img-caption"><strong>Figure 1.</strong> Renderscript overview</p>
+<p>A RenderScript kernel typically resides in a <code>.rs</code> file in the
+<code>&lt;project_root&gt;/src/</code> directory; each <code>.rs</code> file is called a
+script. Every script contains its own set of kernels, functions, and variables. A script can
+contain:</p>
-<p>The following sections describe how to create a simple Renderscript and use it in an
-Android application. This example uses the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute Renderscript
-sample</a> that is provided in the SDK as a guide (some code has been modified from its original
-form for simplicity).</p>
+<ul>
+<li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of the
+RenderScript kernel language used in this script. Currently, 1 is the only valid value.</li>
+
+<li>A pragma declaration (<code>#pragma rs java_package_name(com.example.app)</code>) that
+declares the package name of the Java classes reflected from this script.</li>
+
+<li>Some number of invokable functions. An invokable function is a single-threaded RenderScript
+function that you can call from your Java code with arbitrary arguments. These are often useful for
+initial setup or serial computations within a larger processing pipeline.</li>
+
+<li>Some number of script globals. A script global is equivalent to a global variable in C. You can
+access script globals from Java code, and these are often used for parameter passing to RenderScript
+kernels.</li>
+
+<li>Some number of compute kernels. A kernel is a parallel function that executes across every
+{@link android.renderscript.Element} within an {@link android.renderscript.Allocation}.
+
+<p>A simple kernel may look like the following:</p>
+
+<pre>uchar4 __attribute__((kernel)) invert(uchar4 in, uint32_t x, uint32_t y) {
+ uchar4 out = in;
+ out.r = 255 - in.r;
+ out.g = 255 - in.g;
+ out.b = 255 - in.b;
+ return out;
+}</pre>
+
+<p>In most respects, this is identical to a standard C function. The first notable feature is the
+<code>__attribute__((kernel))</code> applied to the function prototype. This denotes that the
+function is a RenderScript kernel instead of an invokable function. The next feature is the
+<code>in</code> argument and its type. In a RenderScript kernel, this is a special argument that is
+automatically filled in based on the input {@link android.renderscript.Allocation} passed to the
+kernel launch. By default, the kernel is run across an entire {@link
+android.renderscript.Allocation}, with one execution of the kernel body per {@link
+android.renderscript.Element} in the {@link android.renderscript.Allocation}. The third notable
+feature is the return type of the kernel. The value returned from the kernel is automatically
+written to the appropriate location in the output {@link android.renderscript.Allocation}. The
+RenderScript runtime checks to ensure that the {@link android.renderscript.Element} types of the
+input and output Allocations match the kernel's prototype; if they do not match, an exception is
+thrown.</p>
+
+<p>A kernel may have an input {@link android.renderscript.Allocation}, an output {@link
+android.renderscript.Allocation}, or both. A kernel may not have more than one input or one output
+{@link android.renderscript.Allocation}. If more than one input or output is required, those objects
+should be bound to <code>rs_allocation</code> script globals and accessed from a kernel or invokable
+function via <code>rsGetElementAt_<em>type</em>()</code> or
+<code>rsSetElementAt_<em>type</em>()</code>.</p>
+
+<p>A kernel may access the coordinates of the current execution using the <code>x</code>,
+<code>y</code>, and <code>z</code> arguments. These arguments are optional, but the type of the
+coordinate arguments must be <code>uint32_t</code>.</p></li>
+
+<li>An optional <code>init()</code> function. An <code>init()</code> function is a special type of
+invokable function that is run when the script is first instantiated. This allows for some
+computation to occur automatically at script creation.</li>
+
+<li>Some number of static script globals and functions. A static script global is equivalent to a
+script global except that it cannot be set from Java code. A static function is a standard C
+function that can be called from any kernel or invokable function in the script but is not exposed
+to the Java API. If a script global or function does not need to be called from Java code, it is
+highly recommended that those be declared <code>static</code>.</li> </ul>
-<h3 id="creating-rs-file">Creating the Renderscript file</h3>
+<h4>Setting floating point precision</h4>
-<p>Your Renderscript code resides in <code>.rs</code> and <code>.rsh</code> files in the
-<code>&lt;project_root&gt;/src/</code> directory. This code contains the computation logic
-and declares all necessary variables and pointers.
-Every <code>.rs</code> file generally contains the following items:</p>
+<p>You can control the required level of floating point precision in a script. This is useful if
+full IEEE 754-2008 standard (used by default) is not required. The following pragmas can set a
+different level of floating point precision:</p>
<ul>
- <li>A pragma declaration (<code>#pragma rs java_package_name(<em>package.name</em>)</code>)
- that declares the package name of the <code>.java</code> reflection of this Renderscript.</li>
-
- <li>A pragma declaration (<code>#pragma version(1)</code>) that declares the version of
- Renderscript that you are using (1 is the only value for now).</li>
-
- <li><p>A root function (or kernel) that is the main entry point to your Renderscript.
- The default <code>root()</code> function must return
- <code>void</code> and accept the following arguments:</p>
-
- <ul>
- <li>Pointers to memory allocations that are used for the input and output of the
- Renderscript. Both of these pointers are required for Android 3.2 (API level 13) platform
- versions or older. Android 4.0 (API level 14) and later requires one or both of these
- allocations.</li>
- </ul>
-
- <p>The following arguments are optional, but both must be supplied if you choose to use
- them:</p>
-
- <ul>
- <li>A pointer for user-defined data that the Renderscript might need to carry out
- computations in addition to the necessary allocations. This can be a pointer to a simple
- primitive or a more complex struct.</li>
-
- <li>The size of the user-defined data.</li>
- </ul>
-
- <p>Starting in Android 4.1 (API Level 16), you can choose to define your own root function arguments
- without adhering to the default root function signature described previously. In addition,
- you can declare multiple root functions in the same Renderscript. To do this, use the <code>__attribute__((kernel))</code>
- attribute to define a custom root function. For example, here's a root function
- that returns a <code>uchar4</code> and accepts two <code>uint32_t</code> types: </p>
-
- <pre>
- uchar4 __attribute__((kernel)) root(uint32_t x, uint32_t y) {
- ...
- }
- </pre>
- </li>
-
- <li>An optional <code>init()</code> function. This allows you to do any initialization
- before the root function runs, such as initializing variables. This
- function runs once and is called automatically when the Renderscript starts, before anything
- else in your Renderscript.</li>
-
- <li>Any variables, pointers, and structures that you wish to use in your Renderscript code (can
- be declared in <code>.rsh</code> files if desired)</li>
-</ul>
-<p>The following code shows how the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/src/com/example/android/rs/hellocompute/mono.html">
-mono.rs</a> file is implemented:</p>
-<pre>
-#pragma version(1)
-#pragma rs java_package_name(com.example.android.rs.hellocompute)
-
-//multipliers to convert a RGB colors to black and white
-const static float3 gMonoMult = {0.299f, 0.587f, 0.114f};
-
-void root(const uchar4 *v_in, uchar4 *v_out) {
- //unpack a color to a float4
- float4 f4 = rsUnpackColor8888(*v_in);
- //take the dot product of the color and the multiplier
- float3 mono = dot(f4.rgb, gMonoMult);
- //repack the float to a color
- *v_out = rsPackColorTo8888(mono);
-}
-</pre>
+<li><code>#pragma rs_fp_full</code> (default if nothing is specified): For apps that require
+ floating point precision as outlined by the IEEE 754-2008 standard.
-<h4>Setting floating point precision</h4>
-<p>You can define the floating point precision required by your compute algorithms. This is useful if you
- require less precision than the IEEE 754-2008 standard (used by default). You can define
-the floating-point precision level of your script with the following pragmas:</p>
-
-<ul>
- <li><code>#pragma rs_fp_full</code> (default if nothing is specified): For apps that
- require floating point precision as outlined by the IEEE 754-2008 standard.
</li>
- <li><code>#pragma rs_fp_relaxed</code> - For apps that don’t require
- strict IEEE 754-2008 compliance and can tolerate less precision. This mode enables
- flush-to-zero for denorms and round-towards-zero.
+
+ <li><code>#pragma rs_fp_relaxed</code> - For apps that don’t require strict IEEE 754-2008
+ compliance and can tolerate less precision. This mode enables flush-to-zero for denorms and
+ round-towards-zero.
+
</li>
- <li><code>#pragma rs_fp_imprecise</code> - For apps that don’t have stringent precision requirements. This mode enables
- everything in <code>rs_fp_relaxed</code> along with the following:
+
+ <li><code>#pragma rs_fp_imprecise</code> - For apps that don’t have stringent precision
+ requirements. This mode enables everything in <code>rs_fp_relaxed</code> along with the
+ following:
+
<ul>
+
<li>Operations resulting in -0.0 can return +0.0 instead.</li>
<li>Operations on INF and NAN are undefined.</li>
</ul>
</li>
</ul>
-<h4>Script intrinsics</h4>
-<p>Renderscript adds support for a set of script intrinsics, which are pre-implemented
-filtering primitives that reduce the amount of
-code that you need to write. They also are implemented to ensure that your app gets the
-maximum performance gain possible.</p>
+<p>Most applications can use <code>rs_fp_relaxed</code> without any side effects. This may be very
+beneficial on some architectures due to additional optimizations only available with relaxed
+precision (such as SIMD CPU instructions).</p>
-<p>
-Intrinsics are available for the following:
-<ul>
- <li>{@link android.renderscript.ScriptIntrinsicBlend Blends}</li>
- <li>{@link android.renderscript.ScriptIntrinsicBlur Blur}</li>
- <li>{@link android.renderscript.ScriptIntrinsicColorMatrix Color matrix}</li>
- <li>{@link android.renderscript.ScriptIntrinsicConvolve3x3 3x3 convolve}</li>
- <li>{@link android.renderscript.ScriptIntrinsicConvolve5x5 5x5 convolve}</li>
- <li>{@link android.renderscript.ScriptIntrinsicLUT Per-channel lookup table}</li>
- <li>{@link android.renderscript.ScriptIntrinsicYuvToRGB Converting an Android YUV buffer to RGB}</li>
-</ul>
+<h2 id="using-rs-from-java">Using RenderScript from Java Code</h2>
-<h3 id="calling">Calling the Renderscript code</h3>
+<p>Using RenderScript from Java code relies on the {@link android.renderscript} APIs. Most
+applications follow the same basic usage patterns:</p>
-<p>You can call the Renderscript from your Android framework code by
-creating a Renderscript object by instantiating the (<code>ScriptC_<em>script_name</em></code>)
-class. This class contains a method, <code>forEach_root()</code>, that lets you invoke
-<code>rsForEach</code>. You give it the same parameters that you would if you were invoking it
-at the Renderscript runtime level. This technique allows your Android application to offload
-intensive mathematical calculations to Renderscript. See the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample to see
-how a simple Android application can utilize Renderscript.</p>
+<ol>
-<p>To call Renderscript at the Android framework level:</p>
+<li><strong>Initialize a RenderScript context.</strong> The {@link
+android.renderscript.RenderScript} context, created with {@link
+android.renderscript.RenderScript#create}, ensures that RenderScript can be used and provides an
+object to control the lifetime of all subsequent RenderScript objects. You should consider context
+creation to be a potentially long-running operation, since it may create resources on different
+pieces of hardware; it should not be in an application's critical path if at all
+possible. Typically, an application will have only a single RenderScript context at a time.</li>
+
+<li><strong>Create at least one {@link android.renderscript.Allocation} to be passed to a
+script.</strong> An {@link android.renderscript.Allocation} is a RenderScript object that provides
+storage for a fixed amount of data. Kernels in scripts take {@link android.renderscript.Allocation}
+objects as their input and output, and {@link android.renderscript.Allocation} objects can be
+accessed in kernels using <code>rsGetElementAt_<em>type</em>()</code> and
+<code>rsSetElementAt_<em>type</em>()</code> when bound as script globals. {@link
+android.renderscript.Allocation} objects allow arrays to be passed from Java code to RenderScript
+code and vice-versa. {@link android.renderscript.Allocation} objects are typically created using
+{@link android.renderscript.Allocation#createTyped} or {@link
+android.renderscript.Allocation#createFromBitmap}.</li>
+
+<li><strong>Create whatever scripts are necessary.</strong> There are two types of scripts available
+to you when using RenderScript:
-<ol>
- <li>Allocate memory that is needed by the Renderscript in your Android framework code.
- You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
- 13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
- one or both {@link android.renderscript.Allocation}s.</li>
-
- <li>Create an instance of the <code>ScriptC_<em>script_name</em></code> class.</li>
-
- <li>Call <code>forEach_root()</code>, passing in the allocations, the
- Renderscript, and any optional user-defined data. The output allocation will contain the output
- of the Renderscript.</li>
-</ol>
-
-<p>The following example, taken from the <a href=
-"{@docRoot}resources/samples/RenderScript/HelloCompute/index.html">HelloCompute</a> sample, processes
-a bitmap and outputs a black and white version of it. The
-<code>createScript()</code> method carries out the steps described previously. This method calls the
-Renderscript, <code>mono.rs</code>, passing in memory allocations that store the bitmap to be processed
-as well as the eventual output bitmap. It then displays the processed bitmap onto the screen:</p>
-<pre>
-package com.example.android.rs.hellocompute;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.graphics.BitmapFactory;
-import android.graphics.Bitmap;
-import android.renderscript.RenderScript;
-import android.renderscript.Allocation;
-import android.widget.ImageView;
-
-public class HelloCompute extends Activity {
- private Bitmap mBitmapIn;
- private Bitmap mBitmapOut;
-
- private RenderScript mRS;
- private Allocation mInAllocation;
- private Allocation mOutAllocation;
- private ScriptC_mono mScript;
-
- &#064;Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- mBitmapIn = loadBitmap(R.drawable.data);
- mBitmapOut = Bitmap.createBitmap(mBitmapIn.getWidth(), mBitmapIn.getHeight(),
- mBitmapIn.getConfig());
-
- ImageView in = (ImageView) findViewById(R.id.displayin);
- in.setImageBitmap(mBitmapIn);
-
- ImageView out = (ImageView) findViewById(R.id.displayout);
- out.setImageBitmap(mBitmapOut);
-
- createScript();
- }
- private void createScript() {
- mRS = RenderScript.create(this);
- mInAllocation = Allocation.createFromBitmap(mRS, mBitmapIn,
- Allocation.MipmapControl.MIPMAP_NONE,
- Allocation.USAGE_SCRIPT);
- mOutAllocation = Allocation.createTyped(mRS, mInAllocation.getType());
- mScript = new ScriptC_mono(mRS, getResources(), R.raw.mono);
- mScript.forEach_root(mInAllocation, mOutAllocation);
- mOutAllocation.copyTo(mBitmapOut);
- }
-
- private Bitmap loadBitmap(int resource) {
- final BitmapFactory.Options options = new BitmapFactory.Options();
- options.inPreferredConfig = Bitmap.Config.ARGB_8888;
- return BitmapFactory.decodeResource(getResources(), resource, options);
- }
-}
-</pre>
-
-<p>To call Renderscript from another Renderscript file:</p>
-<ol>
- <li>Allocate memory that is needed by the Renderscript in your Android framework code.
- You need an input and output {@link android.renderscript.Allocation} for Android 3.2 (API level
- 13) platform versions and older. The Android 4.0 (API level 14) platform version requires only
- one or both {@link android.renderscript.Allocation}s.</li>
-
- <li>Call <code>rsForEach()</code>, passing in the allocations and any optional user-defined data.
- The output allocation will contain the output of the Renderscript.</li>
-</ol>
-
-<pre>
-rs_script script;
-rs_allocation in_allocation;
-rs_allocation out_allocation;
-UserData_t data;
-...
-rsForEach(script, in_allocation, out_allocation, &amp;data, sizeof(data));
-</pre>
-</p>
-<p>In this example, assume that the script and memory allocations have already been
-allocated and bound at the Android framework level and that <code>UserData_t</code> is a struct
-declared previously. Passing a pointer to a struct and the size of the struct to <code>rsForEach</code>
-is optional, but useful if your Renderscript requires additional information other than
-the necessary memory allocations.</p>
-
-
-<h4>Script groups</h4>
-
-<p>You can group Renderscript scripts together and execute them all with a single call as though
-they were part of a single script. This allows Renderscript to optimize execution of the scripts
-in ways that it could not do if the scripts were executed individually.</p>
-
-<p>To build a script groupm, use the {@link android.renderscript.ScriptGroup.Builder} class to create a {@link android.renderscript.ScriptGroup}
-defining the operations. At execution time, Renderscript optimizes the run order and the connections between these
-operations for best performance.
-
-<p class="note"><strong>Important:</strong> The script group must be a direct acyclic graph for this feature to work.</p>
+<ul>
+
+<li><strong>ScriptC</strong>: These are the user-defined scripts as described in <a
+href="#writing-an-rs-kernel">Writing a RenderScript Kernel</a> above. Every script has a Java class
+reflected by the RenderScript compiler in order to make it easy to access the script from Java code;
+this class will have the name <code>ScriptC_<em>filename</em></code>. For example, if the kernel
+above was located in <code>invert.rs</code> and a RenderScript context was already located in
+<code>mRS</code>, the Java code to instantiate the script would be:
+
+<pre>ScriptC_invert invert = new ScriptC_invert(mRenderScript);</pre></li>
+
+<li><strong>ScriptIntrinsic</strong>: These are built-in RenderScript kernels for common operations,
+such as Gaussian blur, convolution, and image blending. For more information, see the subclasses of
+{@link android.renderscript.ScriptIntrinsic}.</li>
+
+</ul></li>
+
+<li><strong>Populate Allocations with data.</strong> Except for Allocations created with {@link
+android.renderscript#createFromBitmap}, an Allocation will be populated with empty data when it is
+first created. To populate an Allocation, use one of the <code>copy</code> methods in {@link
+android.renderscript.Allocation}.</li>
+
+<li><strong>Set any necessary script globals.</strong> Globals may be set using methods in the same
+<code>ScriptC_<em>filename</em></code> class with methods named
+<code>set_<em>globalname</em></code>. For example, in order to set an <code>int</code> named
+<code>elements</code>, use the Java method <code>set_elements(int)</code>. RenderScript objects can
+also be set in kernels; for example, the <code>rs_allocation</code> variable named
+<code>lookup</code> can be set with the method <code>set_lookup(Allocation)</code>.</li>
+
+<li><strong>Launch the appropriate kernels.</strong> Methods to launch a given kernel will be
+reflected in the same <code>ScriptC_<em>filename</em></code> class with methods named
+<code>forEach_<em>kernelname</em>()</code>. These launches are asynchronous, and launches will be
+serialized in the order in which they are launched. Depending on the arguments to the kernel, the
+method will take either one or two Allocations. By default, a kernel will execute over the entire
+input or output Allocation; to execute over a subset of that Allocation, pass an appropriate {@link
+android.renderscript.Script.LaunchOptions} as the last argument to the <code>forEach</code> method.
+
+<p>Invoked functions can be launched using the <code>invoke_<em>functionname</em></code> methods
+reflected in the same <code>ScriptC_<em>filename</em></code> class.</p></li>
+
+<li><strong>Copy data out of {@link android.renderscript.Allocation} objects.</strong> In order to
+access data from an {@link android.renderscript.Allocation} from Java code, that data must be copied
+back to Java buffers using one of the <code>copy</code> methods in {@link
+android.renderscript.Allocation}. These functions will synchronize with asynchronous kernel and
+function launches as necessary.</li>
+
+<li><strong>Tear down the RenderScript context.</strong> The RenderScript context can be destroyed
+with {@link android.renderscript.RenderScript#destroy} or by allowing the RenderScript context
+object to be garbage collected. This will cause any further use of any object belonging to that
+context to throw an exception.</li> </ol> \ No newline at end of file
diff --git a/docs/html/guide/topics/renderscript/index.jd b/docs/html/guide/topics/renderscript/index.jd
index b5c53ffbacd3..d23ba695cffb 100644
--- a/docs/html/guide/topics/renderscript/index.jd
+++ b/docs/html/guide/topics/renderscript/index.jd
@@ -1,6 +1,6 @@
page.title=Computation
page.landing=true
-page.landing.intro=Renderscript provides a platform-independent computation engine that operates at the native level. Use it to accelerate your apps that require extensive computational horsepower.
+page.landing.intro=RenderScript provides a platform-independent computation engine that operates at the native level. Use it to accelerate your apps that require extensive computational horsepower.
page.landing.image=
@jd:body
@@ -12,16 +12,16 @@ page.landing.image=
<a
href="http://android-developers.blogspot.com/2013/01/evolution-of-renderscript-performance.html">
- <h4>Evolution of Renderscript Performance</h4>
- <p>It’s been a year since the last blog post on Renderscript, and with the release
+ <h4>Evolution of RenderScript Performance</h4>
+ <p>It’s been a year since the last blog post on RenderScript, and with the release
of Android 4.2, it’s a good time to talk about the performance work that we’ve done
since then. One of the major goals of this past year was to improve the performance
- of common image-processing operations with Renderscript.</p> </a>
+ of common image-processing operations with RenderScript.</p> </a>
<a
href="http://android-developers.blogspot.com/2012/01/levels-in-renderscript.html">
- <h4>Levels in Renderscript</h4>
- <p>For ICS, Renderscript (RS) has been updated with several new features to simplify
+ <h4>Levels in RenderScript</h4>
+ <p>For ICS, RenderScript (RS) has been updated with several new features to simplify
adding compute acceleration to your application. RS is interesting for compute
acceleration when you have large buffers of data on which you need to do significant
processing. In this example we will look at applying a levels/saturation operation
@@ -30,11 +30,11 @@ href="http://android-developers.blogspot.com/2012/01/levels-in-renderscript.html
<a
href="http://android-developers.blogspot.com/2011/03/renderscript.html">
- <h4>Renderscript Part 2</h4>
- <p>In Introducing Renderscript I gave a brief overview of this technology.
- In this post I’ll look at "compute" in more detail. In Renderscript we use
+ <h4>RenderScript Part 2</h4>
+ <p>In Introducing RenderScript I gave a brief overview of this technology.
+ In this post I’ll look at "compute" in more detail. In RenderScript we use
"compute" to mean offloading of data processing from Dalvik code to
- Renderscript code which may run on the same or different processor(s).</p>
+ RenderScript code which may run on the same or different processor(s).</p>
</a>
</div>
diff --git a/docs/html/guide/topics/resources/localization.jd b/docs/html/guide/topics/resources/localization.jd
index 480fe650830c..55c8dc4234ca 100644
--- a/docs/html/guide/topics/resources/localization.jd
+++ b/docs/html/guide/topics/resources/localization.jd
@@ -480,4 +480,4 @@ the new locale. </p>
<h2 id="checklist">Localization Checklist</h2>
-<p>For an overview of the process of localizing an Android application, see the <a href="{@docRoot}distribute/googleplay/publish/localization.html">Localization Checklist</a>.</p>
+<p>For an overview of the process of localizing an Android application, see the <a href="{@docRoot}distribute/googleplay/publish/localizing.html">Localization Checklist</a>.</p>
diff --git a/docs/html/index.jd b/docs/html/index.jd
index 343528344d52..af271ee79349 100644
--- a/docs/html/index.jd
+++ b/docs/html/index.jd
@@ -42,7 +42,7 @@ page.metaDescription=The official site for Android developers. Provides the Andr
<script type="text/javascript">
var params = { allowScriptAccess: "always" };
var atts = { id: "ytapiplayer" };
- swfobject.embedSWF("//www.youtube.com/v/RRelFvc6Czo?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1",
+ swfobject.embedSWF("//www.youtube.com/v/O8i4HUw7JYA?enablejsapi=1&playerapiid=ytplayer&version=3&HD=1;rel=0;showinfo=0;modestbranding;origin=developer.android.com;autohide=1",
"ytapiplayer", "600", "338", "8", null, null, params, atts);
// Callback used to pause/resume carousel based on video state
@@ -71,9 +71,8 @@ page.metaDescription=The official site for Android developers. Provides the Andr
</div>
</div>
<div class="content-right col-4">
- <h1 style="white-space:nowrap;line-height:1em;">Developer Story: Smule</h1>
- <p>The creators of AutoRap, Magic Piano, and Songify talk about launching on
- Android and the explosive global growth they’ve seen on Google Play.</p>
+ <h1 style="white-space:nowrap;line-height:1.2em;">Developer Story: <br />redBus.in</h1>
+ <p>Bangalore-based developers redBus.in talk about how Android is helping them deliver a superior booking and travel experience to millions of daily bus riders in India.</p>
</div>
</li>
<li class="item carousel-home">
diff --git a/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html b/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
index b230b8825e98..fba48d4e5706 100644
--- a/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
+++ b/docs/html/reference/com/google/android/gcm/GCMBaseIntentService.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -838,6 +850,10 @@ Summary:
<h2>Class Overview</h2>
+
+<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;"><strong>DEPRECATED.</strong> Please use the <a href=
+"http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html"><code>GoogleCloudMessaging</code></a> API instead.</div>
+
<p itemprop="articleBody">Skeleton for application-specific <code><a href="/reference/android/app/IntentService.html">IntentService</a></code>s responsible for
handling communication from Google Cloud Messaging service.
<p>
diff --git a/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html b/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
index 91c099498081..e75f046bc1a7 100644
--- a/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
+++ b/docs/html/reference/com/google/android/gcm/GCMBroadcastReceiver.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -737,6 +749,8 @@ Summary:
<h2>Class Overview</h2>
+<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;"><strong>DEPRECATED.</strong> Please use the <a href=
+"http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html"><code>GoogleCloudMessaging</code></a> API instead.</div>
<p itemprop="articleBody"><code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> that receives GCM messages and delivers them to
an application-specific <code><a href="/reference/com/google/android/gcm/GCMBaseIntentService.html">GCMBaseIntentService</a></code> subclass.
<p>
diff --git a/docs/html/reference/com/google/android/gcm/GCMConstants.html b/docs/html/reference/com/google/android/gcm/GCMConstants.html
index cb260e0967ea..0c9d6cd33311 100644
--- a/docs/html/reference/com/google/android/gcm/GCMConstants.html
+++ b/docs/html/reference/com/google/android/gcm/GCMConstants.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -710,6 +722,8 @@ Summary:
<h2>Class Overview</h2>
+<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;"><strong>DEPRECATED.</strong> Please use the <a href=
+"http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html"><code>GoogleCloudMessaging</code></a> API instead.</div>
<p itemprop="articleBody">Constants used by the GCM library.
</p>
diff --git a/docs/html/reference/com/google/android/gcm/GCMRegistrar.html b/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
index 545abe263634..643260e16bba 100644
--- a/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
+++ b/docs/html/reference/com/google/android/gcm/GCMRegistrar.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -713,6 +725,8 @@ Summary:
<h2>Class Overview</h2>
+<div style="background-color:#fffdeb;width:100%;margin-bottom:1em;padding:.5em;"><strong>DEPRECATED.</strong> Please use the <a href=
+"http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html"><code>GoogleCloudMessaging</code></a> API instead.</div>
<p itemprop="articleBody">Utilities for device registration.
<p>
<strong>Note:</strong> this class uses a private <code><a href="/reference/android/content/SharedPreferences.html">SharedPreferences</a></code>
diff --git a/docs/html/reference/com/google/android/gcm/package-summary.html b/docs/html/reference/com/google/android/gcm/package-summary.html
index d2b05e6bf4bf..7ddea71ee35a 100644
--- a/docs/html/reference/com/google/android/gcm/package-summary.html
+++ b/docs/html/reference/com/google/android/gcm/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -639,24 +651,22 @@ onkeyup="return search_changed(event, false, '/')" />
<h2>Classes</h2>
<div class="jd-sumtable">
- <table class="jd-sumtable-expando">
+ <table class="jd-sumtable-expando">
<tr class="alt-color api apilevel-" >
<td class="jd-linkcol"><a href="/reference/com/google/android/gcm/GCMBaseIntentService.html">GCMBaseIntentService</a></td>
- <td class="jd-descrcol" width="100%">Skeleton for application-specific <code><a href="/reference/android/app/IntentService.html">IntentService</a></code>s responsible for
- handling communication from Google Cloud Messaging service.&nbsp;</td>
+ <td class="jd-descrcol" width="100%">DEPRECATED.&nbsp;</td>
</tr>
<tr class=" api apilevel-" >
<td class="jd-linkcol"><a href="/reference/com/google/android/gcm/GCMBroadcastReceiver.html">GCMBroadcastReceiver</a></td>
- <td class="jd-descrcol" width="100%"><code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> that receives GCM messages and delivers them to
- an application-specific <code><a href="/reference/com/google/android/gcm/GCMBaseIntentService.html">GCMBaseIntentService</a></code> subclass.&nbsp;</td>
+ <td class="jd-descrcol" width="100%">DEPRECATED.&nbsp;</td>
</tr>
<tr class="alt-color api apilevel-" >
<td class="jd-linkcol"><a href="/reference/com/google/android/gcm/GCMConstants.html">GCMConstants</a></td>
- <td class="jd-descrcol" width="100%">Constants used by the GCM library.&nbsp;</td>
+ <td class="jd-descrcol" width="100%">DEPRECATED.&nbsp;</td>
</tr>
<tr class=" api apilevel-" >
<td class="jd-linkcol"><a href="/reference/com/google/android/gcm/GCMRegistrar.html">GCMRegistrar</a></td>
- <td class="jd-descrcol" width="100%">Utilities for device registration.&nbsp;</td>
+ <td class="jd-descrcol" width="100%">DEPRECATED.&nbsp;</td>
</tr>
</table>
</div>
diff --git a/docs/html/reference/com/google/android/gcm/server/Constants.html b/docs/html/reference/com/google/android/gcm/server/Constants.html
index 4cbc90b46f04..48fb89426d9f 100644
--- a/docs/html/reference/com/google/android/gcm/server/Constants.html
+++ b/docs/html/reference/com/google/android/gcm/server/Constants.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html b/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
index c483eea3d31d..66cf7ce10c28 100644
--- a/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
+++ b/docs/html/reference/com/google/android/gcm/server/InvalidRequestException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/Message.Builder.html b/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
index 087bf954cdd0..5bc68e558726 100644
--- a/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
+++ b/docs/html/reference/com/google/android/gcm/server/Message.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/Message.html b/docs/html/reference/com/google/android/gcm/server/Message.html
index ad3eeb53c022..d894affdd04a 100644
--- a/docs/html/reference/com/google/android/gcm/server/Message.html
+++ b/docs/html/reference/com/google/android/gcm/server/Message.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/MulticastResult.html b/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
index 7b1bb540e415..4735d7527999 100644
--- a/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
+++ b/docs/html/reference/com/google/android/gcm/server/MulticastResult.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/Result.html b/docs/html/reference/com/google/android/gcm/server/Result.html
index 75c4fa8b97a5..bea3d39e21ce 100644
--- a/docs/html/reference/com/google/android/gcm/server/Result.html
+++ b/docs/html/reference/com/google/android/gcm/server/Result.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/Sender.html b/docs/html/reference/com/google/android/gcm/server/Sender.html
index 7999a681c4d5..acba818692bf 100644
--- a/docs/html/reference/com/google/android/gcm/server/Sender.html
+++ b/docs/html/reference/com/google/android/gcm/server/Sender.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gcm/server/package-summary.html b/docs/html/reference/com/google/android/gcm/server/package-summary.html
index d4ea8872fa70..d4041ffc4027 100644
--- a/docs/html/reference/com/google/android/gcm/server/package-summary.html
+++ b/docs/html/reference/com/google/android/gcm/server/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.attr.html b/docs/html/reference/com/google/android/gms/R.attr.html
index 7bebc049ea08..31fcc0a95139 100644
--- a/docs/html/reference/com/google/android/gms/R.attr.html
+++ b/docs/html/reference/com/google/android/gms/R.attr.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.color.html b/docs/html/reference/com/google/android/gms/R.color.html
index 8c95e4f8a52d..3de6912959d9 100644
--- a/docs/html/reference/com/google/android/gms/R.color.html
+++ b/docs/html/reference/com/google/android/gms/R.color.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.drawable.html b/docs/html/reference/com/google/android/gms/R.drawable.html
index 3848d7226374..fb671379d34f 100644
--- a/docs/html/reference/com/google/android/gms/R.drawable.html
+++ b/docs/html/reference/com/google/android/gms/R.drawable.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.html b/docs/html/reference/com/google/android/gms/R.html
index 86ef89edec0f..1fb48278a491 100644
--- a/docs/html/reference/com/google/android/gms/R.html
+++ b/docs/html/reference/com/google/android/gms/R.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.id.html b/docs/html/reference/com/google/android/gms/R.id.html
index b2778d607e99..c2a894ebbbcc 100644
--- a/docs/html/reference/com/google/android/gms/R.id.html
+++ b/docs/html/reference/com/google/android/gms/R.id.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.string.html b/docs/html/reference/com/google/android/gms/R.string.html
index ac75064b5c04..f4fbd3aa83c2 100644
--- a/docs/html/reference/com/google/android/gms/R.string.html
+++ b/docs/html/reference/com/google/android/gms/R.string.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/R.styleable.html b/docs/html/reference/com/google/android/gms/R.styleable.html
index 03d2f7629ed8..a307d5a3e074 100644
--- a/docs/html/reference/com/google/android/gms/R.styleable.html
+++ b/docs/html/reference/com/google/android/gms/R.styleable.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppState.html b/docs/html/reference/com/google/android/gms/appstate/AppState.html
index 1e33a822e8d5..287f031434ad 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppState.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppState.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html b/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
index fb0d4da6476c..f02cb9803527 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateClient.Builder.html b/docs/html/reference/com/google/android/gms/appstate/AppStateClient.Builder.html
index 5bfaaf891440..445ca0b7d92b 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateClient.Builder.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateClient.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateClient.html b/docs/html/reference/com/google/android/gms/appstate/AppStateClient.html
index 657e67be9f5f..706df18ebb52 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateClient.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/OnSignOutCompleteListener.html b/docs/html/reference/com/google/android/gms/appstate/OnSignOutCompleteListener.html
index 1571923aae42..d2a2de3125a4 100644
--- a/docs/html/reference/com/google/android/gms/appstate/OnSignOutCompleteListener.html
+++ b/docs/html/reference/com/google/android/gms/appstate/OnSignOutCompleteListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/OnStateDeletedListener.html b/docs/html/reference/com/google/android/gms/appstate/OnStateDeletedListener.html
index 6d0d827d2dc1..55119e3021ad 100644
--- a/docs/html/reference/com/google/android/gms/appstate/OnStateDeletedListener.html
+++ b/docs/html/reference/com/google/android/gms/appstate/OnStateDeletedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/OnStateListLoadedListener.html b/docs/html/reference/com/google/android/gms/appstate/OnStateListLoadedListener.html
index 8c6f6e470667..a7427694b1ff 100644
--- a/docs/html/reference/com/google/android/gms/appstate/OnStateListLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/appstate/OnStateListLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/OnStateLoadedListener.html b/docs/html/reference/com/google/android/gms/appstate/OnStateLoadedListener.html
index 6de65119f191..330342432d52 100644
--- a/docs/html/reference/com/google/android/gms/appstate/OnStateLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/appstate/OnStateLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/appstate/package-summary.html b/docs/html/reference/com/google/android/gms/appstate/package-summary.html
index 8a3f155f39db..d87f558e3484 100644
--- a/docs/html/reference/com/google/android/gms/appstate/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/appstate/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
index 7949f3f33c24..ce8663dc1609 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
index b086da9f439c..c60e6e3ae586 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
index d7070e425751..367621c13620 100644
--- a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
index 28dbf0645fd3..d4b214ccc9e6 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
index e7ba490df921..76fd3e0824cb 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/auth/package-summary.html b/docs/html/reference/com/google/android/gms/auth/package-summary.html
index fc7970a80c67..d590cbbd6d07 100644
--- a/docs/html/reference/com/google/android/gms/auth/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/auth/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/AccountPicker.html b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
index 4f423487256f..f83a2e79169b 100644
--- a/docs/html/reference/com/google/android/gms/common/AccountPicker.html
+++ b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
index 4181c47d1e3c..eaed4e55a9ec 100644
--- a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
+++ b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
index aa8f7b5c2ca7..dad761f0efe0 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
index 51da5938ded9..8dd96c2a6354 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.OnConnectionFailedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
index 2a5039dbcd58..05c531e97ac8 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
index 46ae56cfe9b9..96f7aa1454af 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
index 5183e497c6aa..bb1ee84ea8b9 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/Scopes.html b/docs/html/reference/com/google/android/gms/common/Scopes.html
index a66f8de6904f..6ffb3296db23 100644
--- a/docs/html/reference/com/google/android/gms/common/Scopes.html
+++ b/docs/html/reference/com/google/android/gms/common/Scopes.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/SignInButton.html b/docs/html/reference/com/google/android/gms/common/SignInButton.html
index 81261c9af855..1c00a4cad796 100644
--- a/docs/html/reference/com/google/android/gms/common/SignInButton.html
+++ b/docs/html/reference/com/google/android/gms/common/SignInButton.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html b/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
index 4f0ac02a7dd3..f9e722086340 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html b/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
index 272a151c745c..9f3baa54bf9a 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/data/Freezable.html b/docs/html/reference/com/google/android/gms/common/data/Freezable.html
index e85cc8c3ac4c..4610b1ec4c84 100644
--- a/docs/html/reference/com/google/android/gms/common/data/Freezable.html
+++ b/docs/html/reference/com/google/android/gms/common/data/Freezable.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/data/package-summary.html b/docs/html/reference/com/google/android/gms/common/data/package-summary.html
index 2a2be91b52b3..bac81644093c 100644
--- a/docs/html/reference/com/google/android/gms/common/data/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/data/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/images/ImageManager.ImageReceiver.html b/docs/html/reference/com/google/android/gms/common/images/ImageManager.ImageReceiver.html
index 9235fa58b208..72edcc3068d5 100644
--- a/docs/html/reference/com/google/android/gms/common/images/ImageManager.ImageReceiver.html
+++ b/docs/html/reference/com/google/android/gms/common/images/ImageManager.ImageReceiver.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html b/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
index 0435d781d8ab..efa3a83db002 100644
--- a/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/images/ImageManager.html b/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
index f2aaf4889a7f..b1d95724fa95 100644
--- a/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
+++ b/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/images/package-summary.html b/docs/html/reference/com/google/android/gms/common/images/package-summary.html
index 187989117288..b5d1582df2a8 100644
--- a/docs/html/reference/com/google/android/gms/common/images/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/images/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/common/package-summary.html b/docs/html/reference/com/google/android/gms/common/package-summary.html
index 8b3fc9927d24..2e43027236ed 100644
--- a/docs/html/reference/com/google/android/gms/common/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/Game.html b/docs/html/reference/com/google/android/gms/games/Game.html
index 5d3164a205f0..d45ede03cb96 100644
--- a/docs/html/reference/com/google/android/gms/games/Game.html
+++ b/docs/html/reference/com/google/android/gms/games/Game.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GameBuffer.html b/docs/html/reference/com/google/android/gms/games/GameBuffer.html
index 165c3bf703c6..0791927e122e 100644
--- a/docs/html/reference/com/google/android/gms/games/GameBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/GameBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GameEntity.html b/docs/html/reference/com/google/android/gms/games/GameEntity.html
index 443853aa8d85..df5ef526d53c 100644
--- a/docs/html/reference/com/google/android/gms/games/GameEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/GameEntity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html b/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
index 3f5439873fbc..d017bb0747f7 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GamesClient.Builder.html b/docs/html/reference/com/google/android/gms/games/GamesClient.Builder.html
index 1eb667219f1b..307da1136c14 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesClient.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesClient.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GamesClient.html b/docs/html/reference/com/google/android/gms/games/GamesClient.html
index bbef367e27bc..1a107bc80b80 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesClient.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/GamesClientSettings.html b/docs/html/reference/com/google/android/gms/games/GamesClientSettings.html
index 65346d368b0c..29cad90656c7 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesClientSettings.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesClientSettings.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/OnGamesLoadedListener.html b/docs/html/reference/com/google/android/gms/games/OnGamesLoadedListener.html
index 43599445a915..e715f6cb6847 100644
--- a/docs/html/reference/com/google/android/gms/games/OnGamesLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/OnGamesLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/OnPlayersLoadedListener.html b/docs/html/reference/com/google/android/gms/games/OnPlayersLoadedListener.html
index 05f98e83252e..050fe70ba644 100644
--- a/docs/html/reference/com/google/android/gms/games/OnPlayersLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/OnPlayersLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/OnSignOutCompleteListener.html b/docs/html/reference/com/google/android/gms/games/OnSignOutCompleteListener.html
index e9d80bdc99c5..f1f7c5a41835 100644
--- a/docs/html/reference/com/google/android/gms/games/OnSignOutCompleteListener.html
+++ b/docs/html/reference/com/google/android/gms/games/OnSignOutCompleteListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/PageDirection.html b/docs/html/reference/com/google/android/gms/games/PageDirection.html
index f979804e17c5..c9a5c7232356 100644
--- a/docs/html/reference/com/google/android/gms/games/PageDirection.html
+++ b/docs/html/reference/com/google/android/gms/games/PageDirection.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/Player.html b/docs/html/reference/com/google/android/gms/games/Player.html
index 9edab530d639..55099dc5581b 100644
--- a/docs/html/reference/com/google/android/gms/games/Player.html
+++ b/docs/html/reference/com/google/android/gms/games/Player.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html b/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
index dc85c7d6cd85..e0ad326dcd76 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerEntity.html b/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
index 59d75b71a979..af2b2efb3045 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/RealTimeSocket.html b/docs/html/reference/com/google/android/gms/games/RealTimeSocket.html
index 8a5a1fc1d6e7..7298e8785d7c 100644
--- a/docs/html/reference/com/google/android/gms/games/RealTimeSocket.html
+++ b/docs/html/reference/com/google/android/gms/games/RealTimeSocket.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html b/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
index 839ede3aada0..cf6e4f93bd9c 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html b/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
index d11014299de1..646f741bdcbc 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementUpdatedListener.html b/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementUpdatedListener.html
index e54c95dcb98b..6c8594402ea5 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementUpdatedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementUpdatedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementsLoadedListener.html b/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementsLoadedListener.html
index ba067e4eafb3..ff745b00fd30 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementsLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/OnAchievementsLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html b/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
index ee95cfa12175..0e6c871ce4d5 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
index 0ef67dbf6574..40728324d8ed 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
index 0cd8acde4cac..0f3911b645c5 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
index f43e4a16f55d..b0369b3c9b58 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
index 00746630e775..07e266e81f7f 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
index f5c9b7f6e392..957bcf7f8863 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardMetadataLoadedListener.html b/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardMetadataLoadedListener.html
index 643fbe711f39..f70264454b6a 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardMetadataLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardMetadataLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardScoresLoadedListener.html b/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardScoresLoadedListener.html
index 3970dd9339c1..0f6c6c2b6d2c 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardScoresLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/OnLeaderboardScoresLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/OnScoreSubmittedListener.html b/docs/html/reference/com/google/android/gms/games/leaderboard/OnScoreSubmittedListener.html
index 58c419c7b4b4..07ee7452a0f4 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/OnScoreSubmittedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/OnScoreSubmittedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.Result.html b/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.Result.html
index abc6776a50f8..b41a311b928f 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.Result.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.Result.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.html b/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.html
index 398b857351e8..167b6a6d441f 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/SubmitScoreResult.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html b/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
index 9f85761c68f1..25ffcdfb39ec 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
index feb062978ef3..c9b914f020fd 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
index a9f8e8154d29..4edeb8387812 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
index b8872c14c297..a38ddc492632 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
index cea3a030aa13..0f8e57ee1ada 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationsLoadedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationsLoadedListener.html
index 058f7600c62d..ad2688998612 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationsLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationsLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
index 492fbe1081de..c5d0c7753e84 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
index 2271d103a83b..5a3a80396de9 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
index 45efeefc9ebe..a1c876acc032 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
index 7d78fbc6bb73..8b1f848dc331 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
index 01c3d23e0b2b..3b0250dc733c 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html b/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
index 6f5b8baae52d..927bb18eb8c9 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
index 7d0fc7925227..a0cefc24bd4c 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
index bd373793da4e..a5edcac6719b 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeReliableMessageSentListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeReliableMessageSentListener.html
index d482bbfa88c7..f3e4f9fca2a8 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeReliableMessageSentListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeReliableMessageSentListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
index 40f3d29a9b01..64c6398f439b 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
index 7031044e2562..373578bdde79 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
index 4696fa2b1b22..93da6bbf0df3 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
index 86e8fffd6f92..e3772e23f761 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
index 9df388a07563..45fd518f063f 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
index f139d965d925..08deae887c85 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
index fa50fff66ba6..82f3aae5088f 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/games/package-summary.html b/docs/html/reference/com/google/android/gms/games/package-summary.html
index 72f876c36ea8..098524a90689 100644
--- a/docs/html/reference/com/google/android/gms/games/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html b/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
index 54fe70da5201..562cc5537986 100644
--- a/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
+++ b/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/gcm/package-summary.html b/docs/html/reference/com/google/android/gms/gcm/package-summary.html
index 971957491cad..ee590df598ad 100644
--- a/docs/html/reference/com/google/android/gms/gcm/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/gcm/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionClient.html b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionClient.html
index 1334f53a21f0..492532e9d100 100644
--- a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionClient.html
+++ b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
index 6eae51ef3f67..2ac9352de748 100644
--- a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
+++ b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/DetectedActivity.html b/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
index c082a350dc8b..99f56ad0b082 100644
--- a/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
+++ b/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html b/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
index 3dd98c783643..d8a96c32f9a9 100644
--- a/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
+++ b/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/Geofence.html b/docs/html/reference/com/google/android/gms/location/Geofence.html
index 706ec2ab8b47..b449285db856 100644
--- a/docs/html/reference/com/google/android/gms/location/Geofence.html
+++ b/docs/html/reference/com/google/android/gms/location/Geofence.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationClient.OnAddGeofencesResultListener.html b/docs/html/reference/com/google/android/gms/location/LocationClient.OnAddGeofencesResultListener.html
index e74c67cfbefe..660fd9736b5d 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationClient.OnAddGeofencesResultListener.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationClient.OnAddGeofencesResultListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationClient.OnRemoveGeofencesResultListener.html b/docs/html/reference/com/google/android/gms/location/LocationClient.OnRemoveGeofencesResultListener.html
index 1c84a7a7afbc..d9f0438975e2 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationClient.OnRemoveGeofencesResultListener.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationClient.OnRemoveGeofencesResultListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationClient.html b/docs/html/reference/com/google/android/gms/location/LocationClient.html
index 70f7eb338e4f..6652c0ac5570 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationClient.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationListener.html b/docs/html/reference/com/google/android/gms/location/LocationListener.html
index 5bb147033543..42b1971d050b 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationListener.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationRequest.html b/docs/html/reference/com/google/android/gms/location/LocationRequest.html
index 103fe1be9b3d..6eaf1028bb23 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationRequest.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationRequest.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html b/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
index 965b9f804f6b..c0f34ee08f95 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/location/package-summary.html b/docs/html/reference/com/google/android/gms/location/package-summary.html
index 2956344848bb..c21638c799c8 100644
--- a/docs/html/reference/com/google/android/gms/location/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/location/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
index f43e79e31d06..e1a8b6886d47 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
index 990b918d8289..cfe6f5274b1b 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
index 09bd5c795aa4..9af9d293854a 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
index cf84845b771f..89125bea1632 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
index d11ce52e7295..3ea198821f24 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
index 03e6b72e14c8..72ae333d47df 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
index 2c061bd57cb5..3b5960333d3a 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
index b784753a6fba..ab5d2dfc909e 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
index c63396d69345..2f3394662c98 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
index ad80c271c0c5..fac3be024a75 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
index d3622d7a26f1..092c472d77b7 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
index 4b5b562c52c9..7d47ff4b30ab 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
index 4441999644f4..7afae2ad1566 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
index a2d6fec2203f..d97f1655d723 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
index 1889c12b193b..d4d0103b1bda 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapFragment.html b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
index ca1e2c2a727d..0664856058d3 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapView.html b/docs/html/reference/com/google/android/gms/maps/MapView.html
index 02c13dc0ba04..c9c60479ce8c 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapView.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapView.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
index a781461bfde3..aa2079c9336e 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/Projection.html b/docs/html/reference/com/google/android/gms/maps/Projection.html
index e7b8370208e4..5692e24ae689 100644
--- a/docs/html/reference/com/google/android/gms/maps/Projection.html
+++ b/docs/html/reference/com/google/android/gms/maps/Projection.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
index 35bdaaa42b73..9ae0a840235a 100644
--- a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/UiSettings.html b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
index a6e3ec27a1ae..2bf944badade 100644
--- a/docs/html/reference/com/google/android/gms/maps/UiSettings.html
+++ b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
index 78f1fd1eaaf9..15bd350287b2 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
index 17c4b4e80c7d..65dbe7bbd857 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
index 43515701caf2..f5824297ea43 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
index 47b432b0006d..4364ca3e6798 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Circle.html b/docs/html/reference/com/google/android/gms/maps/model/Circle.html
index 82148f247215..1428de7fb69d 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Circle.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Circle.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html b/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
index 1640b73b77ae..ee8a3641f43f 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
index 67bc5ac2877e..54000c15abe7 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
index 0ad8a39c18d7..e262d1d0c9c6 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
index aa9e3cd3e037..04666da45ae7 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
index c92cfefee4d2..5deb567bb319 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
index 9c4115c1ca6b..f53eb5f5d16e 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Marker.html b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
index f108b2837986..473f3f8d496b 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Marker.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
index 8344aab50266..29c838b6e591 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
index e94f05a39e5a..790c4c06bf7c 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
index 6745d191f7c3..ca23a4feab08 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
index 579fe2495b0e..d9ef6a26a643 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
index 1d1648206a05..21432e9a0bee 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
index d9151129ba81..96a2a4554383 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Tile.html b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
index 258e1c58816c..8c499a98afa9 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Tile.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
index 152acd1945bc..4d5c20d14575 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
index fc579d6eb9ca..48961ffeb0b3 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
index da07beea17a2..ac01ca33144e 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
index 1749b7f80040..30c74ecd9ec3 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
index 82e03939a218..a03a912aff46 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
index 4734e690fda5..2c44fc78b2f8 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/maps/package-summary.html b/docs/html/reference/com/google/android/gms/maps/package-summary.html
index 647ac2931373..3aaba0b5e474 100644
--- a/docs/html/reference/com/google/android/gms/maps/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/package-summary.html b/docs/html/reference/com/google/android/gms/package-summary.html
index db155bf0fbcf..5bddf3a03a07 100644
--- a/docs/html/reference/com/google/android/gms/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
index bbc5a92b905d..ddf1f16ad886 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.OnPanoramaInfoLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
index d5b6d853d6be..832ae262168b 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/panorama/package-summary.html b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
index c67e3b7b13de..bd15388fea76 100644
--- a/docs/html/reference/com/google/android/gms/panorama/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html b/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
index f63df1bbbf91..541cda4a8ec5 100644
--- a/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
+++ b/docs/html/reference/com/google/android/gms/plus/GooglePlusUtil.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.Builder.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.Builder.html
index bcd1a36b942c..5d0383eebd93 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnAccessRevokedListener.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnAccessRevokedListener.html
index d40ef31618e1..ed8c5e06d125 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnAccessRevokedListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnAccessRevokedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnMomentsLoadedListener.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnMomentsLoadedListener.html
index 47fc59a5a535..c974bd44a881 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnMomentsLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnMomentsLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPeopleLoadedListener.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPeopleLoadedListener.html
index 2af224c02a63..0f18a4ae07c3 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPeopleLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPeopleLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPersonLoadedListener.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPersonLoadedListener.html
index 189cd203bbf1..4c164fae476a 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPersonLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.OnPersonLoadedListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusClient.html b/docs/html/reference/com/google/android/gms/plus/PlusClient.html
index 506d1f24c929..529e2ad262a8 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusClient.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusClient.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
index f60f2d5cb443..b935cf45b529 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
index 920461b24139..b92b5d05b763 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
index dd880884bcd8..0ebd303429b6 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
index d2387e030a2b..1fbc327e0205 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
index 27c61f915a13..e4eec8425aae 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
index 36fb9400d60c..30f4a0212edd 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
index 2773192abc5f..b6f25c680703 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
index 6b96c62659ae..536c8b3d468b 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html b/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
index e8b7aaac7d1e..fac199fb90c0 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html b/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
index 195189fb87b7..bf35ac5395eb 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
index ec1153c03a00..cbfdf77e3c3b 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Collection.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Collection.html
index 064c7fd32650..3f0bc2dd2f90 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Collection.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Collection.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
index d2828f190521..51eeb595ee9d 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
index ef998c4b155e..4c06fdeb0ffc 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
index 2f4d9a349662..eba53dc60443 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
index 28d01b70acda..dba9da9b6608 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.Type.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.Type.html
index 9a1f496ec9d9..c20c28c00acd 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.Type.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.Type.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.html
index 27e9dd293af0..a20dfbd31669 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Emails.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
index 835d6f8e1e81..98d79a6a6ee7 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
index 8fc6212497ce..18daf77c1181 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
index 0ce33947f5b4..64ada121b0d8 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
index 1945152c21aa..19e6a65af958 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.OrderBy.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.OrderBy.html
index 0a2e061ab707..640f8f68adf1 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.OrderBy.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.OrderBy.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
index 953eefbcfab0..df52100d709d 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
index a1eb88223695..e40148b1a15b 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
index 99f79845ff7c..d242d766fc9f 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
index 31e8bbda2ffc..53f9cab4d3b3 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
index 5f09dc09fa86..fe0610f538ff 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
index c7b2def5f126..3874a0f90526 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
index fd2e7d7531de..2251f36200cd 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html b/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
index 330eb1683357..b722bcf034d0 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
@@ -487,6 +487,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -506,8 +509,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html b/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
index aa4ba5d9ac41..69ef6bf81937 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/com/google/android/gms/plus/package-summary.html b/docs/html/reference/com/google/android/gms/plus/package-summary.html
index e7775ca28490..74958b2c0346 100644
--- a/docs/html/reference/com/google/android/gms/plus/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/package-summary.html
@@ -488,6 +488,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -507,8 +510,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/reference/gcm-packages.html b/docs/html/reference/gcm-packages.html
index 8065be917ec6..a29e371b7ebb 100644
--- a/docs/html/reference/gcm-packages.html
+++ b/docs/html/reference/gcm-packages.html
@@ -486,6 +486,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -505,8 +508,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
@@ -620,20 +632,22 @@ onkeyup="return search_changed(event, false, '/')" />
<table class="jd-sumtable">
- <tr class="alt-color api apilevel-" >
+ <tr class="alt-color api apilevel-" >
<td class="jd-linkcol">
<a href="/reference/com/google/android/gcm/package-summary.html">com.google.android.gcm</a></td>
- <td class="jd-descrcol" width="100%"></td>
+ <td class="jd-descrcol" width="100%"><strong>DEPRECATED.</strong> Please use the <a href=
+"http://developer.android.com/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html"><code>GoogleCloudMessaging</code></a> API instead of this client helper library. See <a href="http://developer.android.com/google/gcm/client.html">GCM Client</a> for more information.</td>
</tr>
- <tr class=" api apilevel-" >
+ <tr class=" api apilevel-" >
<td class="jd-linkcol">
<a href="/reference/com/google/android/gcm/server/package-summary.html">com.google.android.gcm.server</a></td>
- <td class="jd-descrcol" width="100%"></td>
+ <td class="jd-descrcol" width="100%">Helper library for GCM HTTP server operations. See <a href="http://developer.android.com/google/gcm/server.html">GCM Server</a> for more information.</td>
</tr>
+
</table>
<div id="footer" class="wrap" >
diff --git a/docs/html/reference/gms-packages.html b/docs/html/reference/gms-packages.html
index e0e90394282c..5a7ae07985e3 100644
--- a/docs/html/reference/gms-packages.html
+++ b/docs/html/reference/gms-packages.html
@@ -486,6 +486,9 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/play/billing/billing_admin.html">
<span class="en">Administering In-app Billing</span></a>
</li>
+ <li><a href="/google/play/billing/gp-purchase-status-api.html">
+ <span class="en">Purchase Status API</span></a>
+ </li>
<li><a href="/google/play/billing/versions.html">
<span class="en">Version Notes</span></a>
</li>
@@ -505,8 +508,17 @@ onkeyup="return search_changed(event, false, '/')" />
<li><a href="/google/gcm/gcm.html">
<span class="en">Architectural Overview</span></a>
</li>
- <li><a href="/google/gcm/demo.html">
- <span class="en">Demo App Tutorial</span></a>
+ <li><a href="/google/gcm/ccs.html">
+ <span class="en">Cloud Connection Server</span></a>
+ </li>
+ <li><a href="/google/gcm/notifications.html">
+ <span class="en">User Notifications</span></a>
+ </li>
+ <li><a href="/google/gcm/client.html">
+ <span class="en">GCM Client</span></a>
+ </li>
+ <li><a href="/google/gcm/server.html">
+ <span class="en">GCM Server</span></a>
</li>
<li><a href="/google/gcm/adv.html">
<span class="en">Advanced Topics</span></a>
diff --git a/docs/html/sdk/installing/migrate.jd b/docs/html/sdk/installing/migrate.jd
index 20a698b2fb13..db1b5dd8e151 100644
--- a/docs/html/sdk/installing/migrate.jd
+++ b/docs/html/sdk/installing/migrate.jd
@@ -2,6 +2,17 @@ page.title=Migrating from Eclipse
@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>See also</h2>
+<ul>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/Working+in+Eclipse+Compatibility+Mode" class="external-link"
+ >Eclipse Compatibility Mode</a></li>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA" class="external-link"
+ >FAQ on Migrating</a></li>
+</ul>
+</div>
+</div>
<p>If you've previously developed for Android using Eclipse and would like to migrate
to Android Studio, you should export your projects from Eclipse in order to generate
diff --git a/docs/html/sdk/installing/studio-tips.jd b/docs/html/sdk/installing/studio-tips.jd
index 259087bd4901..a686efdfad24 100644
--- a/docs/html/sdk/installing/studio-tips.jd
+++ b/docs/html/sdk/installing/studio-tips.jd
@@ -2,6 +2,17 @@ page.title=Android Studio Tips and Tricks
@jd:body
+<div id="qv-wrapper">
+<div id="qv">
+<h2>See also</h2>
+<ul>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/Working+in+Eclipse+Compatibility+Mode" class="external-link"
+ >Eclipse Compatibility Mode</a></li>
+ <li><a href="http://confluence.jetbrains.com/display/IntelliJIDEA/FAQ+on+Migrating+to+IntelliJ+IDEA" class="external-link"
+ >FAQ on Migrating</a></li>
+</ul>
+</div>
+</div>
<p>If you're unfamiliar with the IntelliJ IDEA interface, you might be wondering
how to accomplish some common tasks in Android Studio. This page provides some tips
diff --git a/docs/html/tools/extras/support-library.jd b/docs/html/tools/extras/support-library.jd
index 60168f46a201..a82a98ae4eba 100644
--- a/docs/html/tools/extras/support-library.jd
+++ b/docs/html/tools/extras/support-library.jd
@@ -18,8 +18,7 @@ page.title=Support Library
<h2>See also</h2>
<ol>
<li><a
-href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing Apps for Android 3.0</a></li>
- <li><a href="http://code.google.com/p/iosched/">Google I/O App source code</a></li>
+href="{@docRoot}training/basics/fragments/support-lib.html">Using the Support Library</a></li>
</ol>
</div>
@@ -708,8 +707,8 @@ each activity when running on Android 3.0 and higher.</p>
</div>
<p>For more information about how you can optimize your application for the latest
-Android-powered devices, read <a href="{@docRoot}guide/practices/optimizing-for-3.0.html">Optimizing
-Apps for Android 3.0</a>.</p>
+Android-powered devices, read <a href="{@docRoot}guide/practices/tablets-and-handsets.html"
+>Supporting Tablets and Handsets</a>.</p>
<h2 id="Docs">Reference Docs</h2>
diff --git a/docs/html/training/basics/data-storage/databases.jd b/docs/html/training/basics/data-storage/databases.jd
index 61fb7583f2e8..6ea2140d6c0b 100644
--- a/docs/html/training/basics/data-storage/databases.jd
+++ b/docs/html/training/basics/data-storage/databases.jd
@@ -73,25 +73,23 @@ single table:</p>
<pre>
-public static abstract class FeedEntry implements BaseColumns {
- public static final String TABLE_NAME = &quot;entry&quot;;
- public static final String COLUMN_NAME_ENTRY_ID = &quot;entryid&quot;;
- public static final String COLUMN_NAME_TITLE = &quot;title&quot;;
- public static final String COLUMN_NAME_SUBTITLE = &quot;subtitle&quot;;
- ...
+public final class FeedReaderContract {
+ // To prevent someone from accidentally instantiating the contract class,
+ // give it an empty constructor.
+ public FeedReaderContract() {}
+
+ /* Inner class that defines the table contents */
+ public static abstract class FeedEntry implements BaseColumns {
+ public static final String TABLE_NAME = &quot;entry&quot;;
+ public static final String COLUMN_NAME_ENTRY_ID = &quot;entryid&quot;;
+ public static final String COLUMN_NAME_TITLE = &quot;title&quot;;
+ public static final String COLUMN_NAME_SUBTITLE = &quot;subtitle&quot;;
+ ...
+ }
}
</pre>
-<p>To prevent someone from accidentally instantiating the contract class, give
-it an empty constructor. </p>
-
-<pre>
-// Prevents the FeedReaderContract class from being instantiated.
-private FeedReaderContract() {}
-</pre>
-
-
<h2 id="DbHelper">Create a Database Using a SQL Helper</h2>
@@ -103,15 +101,15 @@ statements that create and delete a table:</P>
private static final String TEXT_TYPE = &quot; TEXT&quot;;
private static final String COMMA_SEP = &quot;,&quot;;
private static final String SQL_CREATE_ENTRIES =
- &quot;CREATE TABLE &quot; + FeedReaderContract.FeedEntry.TABLE_NAME + &quot; (&quot; +
- FeedReaderContract.FeedEntry._ID + &quot; INTEGER PRIMARY KEY,&quot; +
- FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
- FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
+ &quot;CREATE TABLE &quot; + FeedEntry.TABLE_NAME + &quot; (&quot; +
+ FeedEntry._ID + &quot; INTEGER PRIMARY KEY,&quot; +
+ FeedEntry.COLUMN_NAME_ENTRY_ID + TEXT_TYPE + COMMA_SEP +
+ FeedEntry.COLUMN_NAME_TITLE + TEXT_TYPE + COMMA_SEP +
... // Any other options for the CREATE command
&quot; )&quot;;
private static final String SQL_DELETE_ENTRIES =
- &quot;DROP TABLE IF EXISTS &quot; + TABLE_NAME_ENTRIES;
+ &quot;DROP TABLE IF EXISTS &quot; + FeedEntry.TABLE_NAME;
</pre>
<p>Just like files that you save on the device's <a
@@ -191,15 +189,15 @@ SQLiteDatabase db = mDbHelper.getWritableDatabase();
// Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID, id);
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_CONTENT, content);
+values.put(FeedEntry.COLUMN_NAME_ENTRY_ID, id);
+values.put(FeedEntry.COLUMN_NAME_TITLE, title);
+values.put(FeedEntry.COLUMN_NAME_CONTENT, content);
// Insert the new row, returning the primary key value of the new row
long newRowId;
newRowId = db.insert(
- FeedReaderContract.FeedEntry.TABLE_NAME,
- FeedReaderContract.FeedEntry.COLUMN_NAME_NULLABLE,
+ FeedEntry.TABLE_NAME,
+ FeedEntry.COLUMN_NAME_NULLABLE,
values);
</pre>
@@ -227,18 +225,18 @@ SQLiteDatabase db = mDbHelper.getReadableDatabase();
// Define a <em>projection</em> that specifies which columns from the database
// you will actually use after this query.
String[] projection = {
- FeedReaderContract.FeedEntry._ID,
- FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE,
- FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED,
+ FeedEntry._ID,
+ FeedEntry.COLUMN_NAME_TITLE,
+ FeedEntry.COLUMN_NAME_UPDATED,
...
};
// How you want the results sorted in the resulting Cursor
String sortOrder =
- FeedReaderContract.FeedEntry.COLUMN_NAME_UPDATED + " DESC";
+ FeedEntry.COLUMN_NAME_UPDATED + " DESC";
Cursor c = db.query(
- FeedReaderContract.FeedEntry.TABLE_NAME, // The table to query
+ FeedEntry.TABLE_NAME, // The table to query
projection, // The columns to return
selection, // The columns for the WHERE clause
selectionArgs, // The values for the WHERE clause
@@ -262,7 +260,7 @@ For example:</p>
<pre>
cursor.moveToFirst();
long itemId = cursor.getLong(
- cursor.getColumnIndexOrThrow(FeedReaderContract.FeedEntry._ID)
+ cursor.getColumnIndexOrThrow(FeedEntry._ID)
);
</pre>
@@ -282,7 +280,7 @@ immune to SQL injection.</p>
<pre>
// Define 'where' part of query.
-String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
// Specify arguments in placeholder order.
String[] selectionArgs = { String.valueOf(rowId) };
// Issue SQL statement.
@@ -305,10 +303,10 @@ SQLiteDatabase db = mDbHelper.getReadableDatabase();
// New value for one column
ContentValues values = new ContentValues();
-values.put(FeedReaderContract.FeedEntry.COLUMN_NAME_TITLE, title);
+values.put(FeedEntry.COLUMN_NAME_TITLE, title);
// Which row to update, based on the ID
-String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
+String selection = FeedEntry.COLUMN_NAME_ENTRY_ID + &quot; LIKE ?&quot;;
String[] selectionArgs = { String.valueOf(rowId) };
int count = db.update(
diff --git a/docs/html/training/location/receive-location-updates.jd b/docs/html/training/location/receive-location-updates.jd
index c33f07547d24..e6e8c51a5078 100644
--- a/docs/html/training/location/receive-location-updates.jd
+++ b/docs/html/training/location/receive-location-updates.jd
@@ -417,7 +417,7 @@ public class MainActivity extends FragmentActivity implements
public static final int UPDATE_INTERVAL_IN_SECONDS = 5;
// Update frequency in milliseconds
private static final long UPDATE_INTERVAL =
- MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN SECONDS;
+ MILLISECONDS_PER_SECOND * UPDATE_INTERVAL_IN_SECONDS;
// The fastest update frequency, in seconds
private static final int FASTEST_INTERVAL_IN_SECONDS = 1;
// A fast frequency ceiling in milliseconds
@@ -425,7 +425,7 @@ public class MainActivity extends FragmentActivity implements
MILLISECONDS_PER_SECOND * FASTEST_INTERVAL_IN_SECONDS;
...
// Define an object that holds accuracy and frequency parameters
- LocationResult mLocationRequest;
+ LocationRequest mLocationRequest;
...
&#64;Override
protected void onCreate(Bundle savedInstanceState) {
@@ -458,9 +458,11 @@ public class MainActivity extends FragmentActivity implements
the request by calling
<code><a href="{@docRoot}reference/com/google/android/gms/location/LocationClient.html#requestLocationUpdates(com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">requestLocationUpdates()</a></code>.
Since your client must be connected for your app to receive updates, you should
- connect the client and make the request in
+ connect the client in
{@link android.support.v4.app.FragmentActivity#onStart onStart()}. This ensures that you always
- have a valid, connected client while your app is visible.
+ have a valid, connected client while your app is visible. Since you need a connection before you
+ can request updates, make the update request in
+<code><a href="{@docRoot}reference/com/google/android/gms/common/GooglePlayServicesClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">ConnectionCallbacks.onConnected()</a></code>
</p>
<p>
Remember that the user may want to turn off location updates for various reasons. You should
@@ -536,6 +538,21 @@ public class MainActivity extends FragmentActivity implements
}
}
...
+ /*
+ * Called by Location Services when the request to connect the
+ * client finishes successfully. At this point, you can
+ * request the current location or start periodic updates
+ */
+ &#64;Override
+ public void onConnected(Bundle dataBundle) {
+ // Display the connection status
+ Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
+ // If already requested, start periodic updates
+ if (mUpdatesRequested) {
+ mLocationClient.requestLocationUpdates(mLocationRequest, this);
+ }
+ }
+ ...
}
</pre>
<p>
diff --git a/graphics/java/android/renderscript/Allocation.java b/graphics/java/android/renderscript/Allocation.java
index 8ba09e07ff4b..b460a4ddee5f 100644
--- a/graphics/java/android/renderscript/Allocation.java
+++ b/graphics/java/android/renderscript/Allocation.java
@@ -30,46 +30,29 @@ import android.util.TypedValue;
import android.graphics.Canvas;
/**
- * <p>
- * Memory allocation class for renderscript. An allocation combines a
- * {@link android.renderscript.Type} with the memory to provide storage for user data and objects.
- * This implies that all memory in Renderscript is typed.
- * </p>
+ * <p> This class provides the primary method through which data is passed to
+ * and from RenderScript kernels. An Allocation provides the backing store for
+ * a given {@link android.renderscript.Type}. </p>
*
- * <p>Allocations are the primary way data moves into and out of scripts. Memory is user
- * synchronized and it's possible for allocations to exist in multiple memory spaces
- * concurrently. Currently those spaces are:</p>
- * <ul>
- * <li>Script: accessable by RS scripts.</li>
- * <li>Graphics Texture: accessable as a graphics texture.</li>
- * <li>Graphics Vertex: accessable as graphical vertex data.</li>
- * <li>Graphics Constants: Accessable as constants in user shaders</li>
- * </ul>
- * </p>
- * <p>
- * For example, when creating a allocation for a texture, the user can
- * specify its memory spaces as both script and textures. This means that it can both
- * be used as script binding and as a GPU texture for rendering. To maintain
- * synchronization if a script modifies an allocation used by other targets it must
- * call a synchronizing function to push the updates to the memory, otherwise the results
- * are undefined.
- * </p>
- * <p>By default, Android system side updates are always applied to the script accessable
- * memory. If this is not present, they are then applied to the various HW
- * memory types. A {@link android.renderscript.Allocation#syncAll syncAll()}
- * call is necessary after the script data is updated to
- * keep the other memory spaces in sync.</p>
+ * <p>An Allocation also contains a set of usage flags that denote how the
+ * Allocation could be used. For example, an Allocation may have usage flags
+ * specifying that it can be used from a script as well as input to a {@link
+ * android.renderscript.Sampler}. A developer must synchronize across these
+ * different usages using {@link android.renderscript.Allocation#syncAll} in
+ * order to ensure that different users of the Allocation have a consistent view
+ * of memory. For example, in the case where an Allocation is used as the output
+ * of one kernel and as Sampler input in a later kernel, a developer must call
+ * {@link #syncAll syncAll(Allocation.USAGE_SCRIPT)} prior to launching the
+ * second kernel to ensure correctness.
*
- * <p>Allocation data is uploaded in one of two primary ways. For simple
- * arrays there are copyFrom() functions that take an array from the control code and
- * copy it to the slave memory store. Both type checked and unchecked copies are provided.
- * The unchecked variants exist to allow apps to copy over arrays of structures from a
- * control language that does not support structures.</p>
+ * <p>An Allocation can be populated with the {@link #copyFrom} routines. For
+ * more complex Element types, the {@link #copyFromUnchecked} methods can be
+ * used to copy from byte arrays or similar constructs.</p>
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
**/
public class Allocation extends BaseObj {
@@ -97,97 +80,102 @@ public class Allocation extends BaseObj {
new HashMap<Integer, Allocation>();
IoInputNotifier mBufferNotifier;
-
/**
- * The usage of the allocation. These signal to renderscript
- * where to place the allocation in memory.
+ * The usage of the Allocation. These signal to RenderScript where to place
+ * the Allocation in memory.
*
- * SCRIPT The allocation will be bound to and accessed by
- * scripts.
+ */
+
+ /**
+ * The Allocation will be bound to and accessed by scripts.
*/
public static final int USAGE_SCRIPT = 0x0001;
/**
- * GRAPHICS_TEXTURE The allocation will be used as a texture
- * source by one or more graphics programs.
+ * The Allocation will be used as a texture source by one or more graphics
+ * programs.
*
*/
public static final int USAGE_GRAPHICS_TEXTURE = 0x0002;
/**
- * GRAPHICS_VERTEX The allocation will be used as a graphics
- * mesh.
+ * The Allocation will be used as a graphics mesh.
+ *
+ * This was deprecated in API level 16.
*
*/
public static final int USAGE_GRAPHICS_VERTEX = 0x0004;
/**
- * GRAPHICS_CONSTANTS The allocation will be used as the source
- * of shader constants by one or more programs.
+ * The Allocation will be used as the source of shader constants by one or
+ * more programs.
+ *
+ * This was deprecated in API level 16.
*
*/
public static final int USAGE_GRAPHICS_CONSTANTS = 0x0008;
/**
- * USAGE_GRAPHICS_RENDER_TARGET The allocation will be used as a
- * target for offscreen rendering
+ * The Allocation will be used as a target for offscreen rendering
+ *
+ * This was deprecated in API level 16.
*
*/
public static final int USAGE_GRAPHICS_RENDER_TARGET = 0x0010;
/**
- * USAGE_IO_INPUT The allocation will be used as SurfaceTexture
- * consumer. This usage will cause the allocation to be created
- * read only.
+ * The Allocation will be used as a {@link android.graphics.SurfaceTexture}
+ * consumer. This usage will cause the Allocation to be created as
+ * read-only.
*
*/
public static final int USAGE_IO_INPUT = 0x0020;
/**
- * USAGE_IO_OUTPUT The allocation will be used as a
- * SurfaceTexture producer. The dimensions and format of the
- * SurfaceTexture will be forced to those of the allocation.
+ * The Allocation will be used as a {@link android.graphics.SurfaceTexture}
+ * producer. The dimensions and format of the {@link
+ * android.graphics.SurfaceTexture} will be forced to those of the
+ * Allocation.
*
*/
public static final int USAGE_IO_OUTPUT = 0x0040;
/**
- * USAGE_SHARED The allocation's backing store will be inherited
- * from another object (usually a Bitmap); calling appropriate
- * copy methods will be significantly faster than if the entire
- * allocation were copied every time.
+ * The Allocation's backing store will be inherited from another object
+ * (usually a {@link android.graphics.Bitmap}); copying to or from the
+ * original source Bitmap will cause a synchronization rather than a full
+ * copy. {@link #syncAll} may also be used to synchronize the Allocation
+ * and the source Bitmap.
*
- * This is set by default for allocations created with
- * CreateFromBitmap(RenderScript, Bitmap) in API version 18 and
- * higher.
+ * <p>This is set by default for allocations created with {@link
+ * #createFromBitmap} in API version 18 and higher.</p>
*
*/
public static final int USAGE_SHARED = 0x0080;
/**
- * Controls mipmap behavior when using the bitmap creation and
- * update functions.
+ * Controls mipmap behavior when using the bitmap creation and update
+ * functions.
*/
public enum MipmapControl {
/**
- * No mipmaps will be generated and the type generated from the
- * incoming bitmap will not contain additional LODs.
+ * No mipmaps will be generated and the type generated from the incoming
+ * bitmap will not contain additional LODs.
*/
MIPMAP_NONE(0),
/**
- * A Full mipmap chain will be created in script memory. The
- * type of the allocation will contain a full mipmap chain. On
- * upload to graphics the full chain will be transfered.
+ * A full mipmap chain will be created in script memory. The Type of
+ * the Allocation will contain a full mipmap chain. On upload, the full
+ * chain will be transferred.
*/
MIPMAP_FULL(1),
/**
- * The type of the allocation will be the same as MIPMAP_NONE.
- * It will not contain mipmaps. On upload to graphics the
- * graphics copy of the allocation data will contain a full
- * mipmap chain generated from the top level in script memory.
+ * The Type of the Allocation will be the same as MIPMAP_NONE. It will
+ * not contain mipmaps. On upload, the allocation data will contain a
+ * full mipmap chain generated from the top level in script memory.
*/
MIPMAP_ON_SYNC_TO_TEXTURE(2);
@@ -207,10 +195,10 @@ public class Allocation extends BaseObj {
/**
- * Get the element of the type of the Allocation.
+ * Get the {@link android.renderscript.Element} of the {@link
+ * android.renderscript.Type} of the Allocation.
*
- * @return Element that describes the structure of data in the
- * allocation
+ * @return Element
*
*/
public Element getElement() {
@@ -220,8 +208,7 @@ public class Allocation extends BaseObj {
/**
* Get the usage flags of the Allocation.
*
- * @return usage flags associated with the allocation. e.g.
- * script, texture, etc.
+ * @return usage this Allocation's set of the USAGE_* flags OR'd together
*
*/
public int getUsage() {
@@ -350,7 +337,7 @@ public class Allocation extends BaseObj {
}
/**
- * Get the type of the Allocation.
+ * Get the {@link android.renderscript.Type} of the Allocation.
*
* @return Type
*
@@ -360,8 +347,8 @@ public class Allocation extends BaseObj {
}
/**
- * Propagate changes from one usage of the allocation to the
- * remaining usages of the allocation.
+ * Propagate changes from one usage of the Allocation to the
+ * other usages of the Allocation.
*
*/
public void syncAll(int srcLocation) {
@@ -388,8 +375,10 @@ public class Allocation extends BaseObj {
}
/**
- * Send a buffer to the output stream. The contents of the
- * Allocation will be undefined after this operation.
+ * Send a buffer to the output stream. The contents of the Allocation will
+ * be undefined after this operation. This operation is only valid if {@link
+ * #USAGE_IO_OUTPUT} is set on the Allocation.
+ *
*
*/
public void ioSend() {
@@ -410,7 +399,8 @@ public class Allocation extends BaseObj {
}
/**
- * Receive the latest input into the Allocation.
+ * Receive the latest input into the Allocation. This operation
+ * is only valid if {@link #USAGE_IO_INPUT} is set on the Allocation.
*
*/
public void ioReceive() {
@@ -423,7 +413,7 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an array of RS objects to the allocation.
+ * Copy an array of RS objects to the Allocation.
*
* @param d Source array.
*/
@@ -497,9 +487,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an array. This variant is not type
- * checked which allows an application to fill in structured
- * data from an array.
+ * Copy into this Allocation from an array. This method does not guarantee
+ * that the Allocation is compatible with the input buffer; it copies memory
+ * without reinterpretation.
*
* @param d the source data array
*/
@@ -514,9 +504,9 @@ public class Allocation extends BaseObj {
}
}
/**
- * Copy an allocation from an array. This variant is not type
- * checked which allows an application to fill in structured
- * data from an array.
+ * Copy into this Allocation from an array. This method does not guarantee
+ * that the Allocation is compatible with the input buffer; it copies memory
+ * without reinterpretation.
*
* @param d the source data array
*/
@@ -531,9 +521,9 @@ public class Allocation extends BaseObj {
}
}
/**
- * Copy an allocation from an array. This variant is not type
- * checked which allows an application to fill in structured
- * data from an array.
+ * Copy into this Allocation from an array. This method does not guarantee
+ * that the Allocation is compatible with the input buffer; it copies memory
+ * without reinterpretation.
*
* @param d the source data array
*/
@@ -548,9 +538,9 @@ public class Allocation extends BaseObj {
}
}
/**
- * Copy an allocation from an array. This variant is not type
- * checked which allows an application to fill in structured
- * data from an array.
+ * Copy into this Allocation from an array. This method does not guarantee
+ * that the Allocation is compatible with the input buffer; it copies memory
+ * without reinterpretation.
*
* @param d the source data array
*/
@@ -566,9 +556,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an array. This variant is type
- * checked and will generate exceptions if the Allocation type
- * is not a 32 bit integer type.
+ * Copy into this Allocation from an array. This variant is type checked
+ * and will generate exceptions if the Allocation's {@link
+ * android.renderscript.Element} is not a 32 bit integer type.
*
* @param d the source data array
*/
@@ -584,9 +574,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an array. This variant is type
- * checked and will generate exceptions if the Allocation type
- * is not a 16 bit integer type.
+ * Copy into this Allocation from an array. This variant is type checked
+ * and will generate exceptions if the Allocation's {@link
+ * android.renderscript.Element} is not a 16 bit integer type.
*
* @param d the source data array
*/
@@ -602,9 +592,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an array. This variant is type
- * checked and will generate exceptions if the Allocation type
- * is not a 8 bit integer type.
+ * Copy into this Allocation from an array. This variant is type checked
+ * and will generate exceptions if the Allocation's {@link
+ * android.renderscript.Element} is not an 8 bit integer type.
*
* @param d the source data array
*/
@@ -620,9 +610,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an array. This variant is type
- * checked and will generate exceptions if the Allocation type
- * is not a 32 bit float type.
+ * Copy into this Allocation from an array. This variant is type checked
+ * and will generate exceptions if the Allocation's {@link
+ * android.renderscript.Element} is not a 32 bit float type.
*
* @param d the source data array
*/
@@ -638,8 +628,15 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from a bitmap. The height, width, and
- * format of the bitmap must match the existing allocation.
+ * Copy into an Allocation from a {@link android.graphics.Bitmap}. The
+ * height, width, and format of the bitmap must match the existing
+ * allocation.
+ *
+ * <p>If the {@link android.graphics.Bitmap} is the same as the {@link
+ * android.graphics.Bitmap} used to create the Allocation with {@link
+ * #createFromBitmap} and {@link #USAGE_SHARED} is set on the Allocation,
+ * this will synchronize the Allocation with the latest data from the {@link
+ * android.graphics.Bitmap}, potentially avoiding the actual copy.</p>
*
* @param b the source bitmap
*/
@@ -658,7 +655,7 @@ public class Allocation extends BaseObj {
}
/**
- * Copy an allocation from an allocation. The types of both allocations
+ * Copy an Allocation from an Allocation. The types of both allocations
* must be identical.
*
* @param a the source allocation
@@ -673,8 +670,8 @@ public class Allocation extends BaseObj {
/**
- * This is only intended to be used by auto-generate code reflected from the
- * renderscript script files.
+ * This is only intended to be used by auto-generated code reflected from
+ * the RenderScript script files and should not be used by developers.
*
* @param xoff
* @param fp
@@ -693,8 +690,8 @@ public class Allocation extends BaseObj {
}
/**
- * This is only intended to be used by auto-generate code reflected from the
- * renderscript script files.
+ * This is only intended to be used by auto-generated code reflected from
+ * the RenderScript script files.
*
* @param xoff
* @param component_number
@@ -740,23 +737,22 @@ public class Allocation extends BaseObj {
}
/**
- * Generate a mipmap chain. Requires the type of the allocation
- * include mipmaps.
+ * Generate a mipmap chain. This is only valid if the Type of the Allocation
+ * includes mipmaps.
*
- * This function will generate a complete set of mipmaps from
- * the top level lod and place them into the script memoryspace.
+ * <p>This function will generate a complete set of mipmaps from the top
+ * level LOD and place them into the script memory space.</p>
*
- * If the allocation is also using other memory spaces a
- * followup sync will be required.
+ * <p>If the Allocation is also using other memory spaces, a call to {@link
+ * #syncAll syncAll(Allocation.USAGE_SCRIPT)} is required.</p>
*/
public void generateMipmaps() {
mRS.nAllocationGenerateMipmaps(getID(mRS));
}
/**
- * Copy part of an allocation from an array. This variant is
- * not type checked which allows an application to fill in
- * structured data from an array.
+ * Copy an array into part of this Allocation. This method does not
+ * guarantee that the Allocation is compatible with the input buffer.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -768,9 +764,8 @@ public class Allocation extends BaseObj {
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
/**
- * Copy part of an allocation from an array. This variant is
- * not type checked which allows an application to fill in
- * structured data from an array.
+ * Copy an array into part of this Allocation. This method does not
+ * guarantee that the Allocation is compatible with the input buffer.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -782,9 +777,8 @@ public class Allocation extends BaseObj {
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
/**
- * Copy part of an allocation from an array. This variant is
- * not type checked which allows an application to fill in
- * structured data from an array.
+ * Copy an array into part of this Allocation. This method does not
+ * guarantee that the Allocation is compatible with the input buffer.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -796,9 +790,8 @@ public class Allocation extends BaseObj {
mRS.nAllocationData1D(getIDSafe(), off, mSelectedLOD, count, d, dataSize);
}
/**
- * Copy part of an allocation from an array. This variant is
- * not type checked which allows an application to fill in
- * structured data from an array.
+ * Copy an array into part of this Allocation. This method does not
+ * guarantee that the Allocation is compatible with the input buffer.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -811,9 +804,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy part of an allocation from an array. This variant is
- * type checked and will generate exceptions if the Allocation
- * type is not a 32 bit integer type.
+ * Copy an array into part of this Allocation. This variant is type checked
+ * and will generate exceptions if the Allocation type is not a 32 bit
+ * integer type.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -825,9 +818,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy part of an allocation from an array. This variant is
- * type checked and will generate exceptions if the Allocation
- * type is not a 16 bit integer type.
+ * Copy an array into part of this Allocation. This variant is type checked
+ * and will generate exceptions if the Allocation type is not a 16 bit
+ * integer type.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -839,9 +832,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy part of an allocation from an array. This variant is
- * type checked and will generate exceptions if the Allocation
- * type is not a 8 bit integer type.
+ * Copy an array into part of this Allocation. This variant is type checked
+ * and will generate exceptions if the Allocation type is not an 8 bit
+ * integer type.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -853,9 +846,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy part of an allocation from an array. This variant is
- * type checked and will generate exceptions if the Allocation
- * type is not a 32 bit float type.
+ * Copy an array into part of this Allocation. This variant is type checked
+ * and will generate exceptions if the Allocation type is not a 32 bit float
+ * type.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -867,7 +860,7 @@ public class Allocation extends BaseObj {
}
/**
- * Copy part of an allocation from another allocation.
+ * Copy part of an Allocation into this Allocation.
*
* @param off The offset of the first element to be copied.
* @param count The number of elements to be copied.
@@ -929,46 +922,76 @@ public class Allocation extends BaseObj {
/**
- * Copy a rectangular region from the array into the allocation.
- * The incoming array is assumed to be tightly packed.
+ * Copy from an array into a rectangular region in this Allocation. The
+ * array is assumed to be tightly packed.
*
- * @param xoff X offset of the region to update
- * @param yoff Y offset of the region to update
- * @param w Width of the incoming region to update
- * @param h Height of the incoming region to update
- * @param data to be placed into the allocation
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data to be placed into the Allocation
*/
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, byte[] data) {
validateIsInt8();
copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
}
+ /**
+ * Copy from an array into a rectangular region in this Allocation. The
+ * array is assumed to be tightly packed.
+ *
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data to be placed into the Allocation
+ */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, short[] data) {
validateIsInt16();
copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
}
+ /**
+ * Copy from an array into a rectangular region in this Allocation. The
+ * array is assumed to be tightly packed.
+ *
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data to be placed into the Allocation
+ */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, int[] data) {
validateIsInt32();
copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
}
+ /**
+ * Copy from an array into a rectangular region in this Allocation. The
+ * array is assumed to be tightly packed.
+ *
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param data to be placed into the Allocation
+ */
public void copy2DRangeFrom(int xoff, int yoff, int w, int h, float[] data) {
validateIsFloat32();
copy2DRangeFromUnchecked(xoff, yoff, w, h, data);
}
/**
- * Copy a rectangular region into the allocation from another
- * allocation.
+ * Copy a rectangular region from an Allocation into a rectangular region in
+ * this Allocation.
*
- * @param xoff X offset of the region to update.
- * @param yoff Y offset of the region to update.
- * @param w Width of the incoming region to update.
- * @param h Height of the incoming region to update.
- * @param data source allocation.
- * @param dataXoff X offset in data of the region to update.
- * @param dataYoff Y offset in data of the region to update.
+ * @param xoff X offset of the region in this Allocation
+ * @param yoff Y offset of the region in this Allocation
+ * @param w Width of the region to update.
+ * @param h Height of the region to update.
+ * @param data source Allocation.
+ * @param dataXoff X offset in source Allocation
+ * @param dataYoff Y offset in source Allocation
*/
public void copy2DRangeFrom(int xoff, int yoff, int w, int h,
Allocation data, int dataXoff, int dataYoff) {
@@ -981,13 +1004,13 @@ public class Allocation extends BaseObj {
}
/**
- * Copy a bitmap into an allocation. The height and width of
- * the update will use the height and width of the incoming
- * bitmap.
+ * Copy a {@link android.graphics.Bitmap} into an Allocation. The height
+ * and width of the update will use the height and width of the {@link
+ * android.graphics.Bitmap}.
*
- * @param xoff X offset of the region to update
- * @param yoff Y offset of the region to update
- * @param data the bitmap to be copied
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param data the Bitmap to be copied
*/
public void copy2DRangeFrom(int xoff, int yoff, Bitmap data) {
mRS.validate();
@@ -1068,14 +1091,14 @@ public class Allocation extends BaseObj {
/**
* @hide
* Copy a rectangular region from the array into the allocation.
- * The incoming array is assumed to be tightly packed.
- *
- * @param xoff X offset of the region to update
- * @param yoff Y offset of the region to update
- * @param zoff Z offset of the region to update
- * @param w Width of the incoming region to update
- * @param h Height of the incoming region to update
- * @param d Depth of the incoming region to update
+ * The array is assumed to be tightly packed.
+ *
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param zoff Z offset of the region to update in this Allocation
+ * @param w Width of the region to update
+ * @param h Height of the region to update
+ * @param d Depth of the region to update
* @param data to be placed into the allocation
*/
public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d, byte[] data) {
@@ -1115,15 +1138,16 @@ public class Allocation extends BaseObj {
* Copy a rectangular region into the allocation from another
* allocation.
*
- * @param xoff X offset of the region to update.
- * @param yoff Y offset of the region to update.
- * @param w Width of the incoming region to update.
- * @param h Height of the incoming region to update.
- * @param d Depth of the incoming region to update.
+ * @param xoff X offset of the region to update in this Allocation
+ * @param yoff Y offset of the region to update in this Allocation
+ * @param zoff Z offset of the region to update in this Allocation
+ * @param w Width of the region to update.
+ * @param h Height of the region to update.
+ * @param d Depth of the region to update.
* @param data source allocation.
- * @param dataXoff X offset in data of the region to update.
- * @param dataYoff Y offset in data of the region to update.
- * @param dataZoff Z offset in data of the region to update
+ * @param dataXoff X offset of the region in the source Allocation
+ * @param dataYoff Y offset of the region in the source Allocation
+ * @param dataZoff Z offset of the region in the source Allocation
*/
public void copy3DRangeFrom(int xoff, int yoff, int zoff, int w, int h, int d,
Allocation data, int dataXoff, int dataYoff, int dataZoff) {
@@ -1136,8 +1160,8 @@ public class Allocation extends BaseObj {
/**
- * Copy from the Allocation into a Bitmap. The bitmap must
- * match the dimensions of the Allocation.
+ * Copy from the Allocation into a {@link android.graphics.Bitmap}. The
+ * bitmap must match the dimensions of the Allocation.
*
* @param b The bitmap to be set from the Allocation.
*/
@@ -1149,9 +1173,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy from the Allocation into a byte array. The array must
- * be at least as large as the Allocation. The allocation must
- * be of an 8 bit elemental type.
+ * Copy from the Allocation into a byte array. The array must be at least
+ * as large as the Allocation. The allocation must be of an 8 bit integer
+ * {@link android.renderscript.Element} type.
*
* @param d The array to be set from the Allocation.
*/
@@ -1162,9 +1186,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy from the Allocation into a short array. The array must
- * be at least as large as the Allocation. The allocation must
- * be of an 16 bit elemental type.
+ * Copy from the Allocation into a short array. The array must be at least
+ * as large as the Allocation. The allocation must be of an 16 bit integer
+ * {@link android.renderscript.Element} type.
*
* @param d The array to be set from the Allocation.
*/
@@ -1175,9 +1199,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy from the Allocation into a int array. The array must be
- * at least as large as the Allocation. The allocation must be
- * of an 32 bit elemental type.
+ * Copy from the Allocation into a int array. The array must be at least as
+ * large as the Allocation. The allocation must be of an 32 bit integer
+ * {@link android.renderscript.Element} type.
*
* @param d The array to be set from the Allocation.
*/
@@ -1188,9 +1212,9 @@ public class Allocation extends BaseObj {
}
/**
- * Copy from the Allocation into a float array. The array must
- * be at least as large as the Allocation. The allocation must
- * be of an 32 bit float elemental type.
+ * Copy from the Allocation into a float array. The array must be at least
+ * as large as the Allocation. The allocation must be of an 32 bit float
+ * {@link android.renderscript.Element} type.
*
* @param d The array to be set from the Allocation.
*/
@@ -1201,20 +1225,19 @@ public class Allocation extends BaseObj {
}
/**
- * Resize a 1D allocation. The contents of the allocation are
- * preserved. If new elements are allocated objects are created
- * with null contents and the new region is otherwise undefined.
+ * Resize a 1D allocation. The contents of the allocation are preserved.
+ * If new elements are allocated objects are created with null contents and
+ * the new region is otherwise undefined.
*
- * If the new region is smaller the references of any objects
- * outside the new region will be released.
+ * <p>If the new region is smaller the references of any objects outside the
+ * new region will be released.</p>
*
- * A new type will be created with the new dimension.
+ * <p>A new type will be created with the new dimension.</p>
*
* @param dimX The new size of the allocation.
*
- * @deprecated Renderscript objects should be immutable once
- * created. The replacement is to create a new allocation and copy the
- * contents.
+ * @deprecated RenderScript objects should be immutable once created. The
+ * replacement is to create a new allocation and copy the contents.
*/
public synchronized void resize(int dimX) {
if ((mType.getY() > 0)|| (mType.getZ() > 0) || mType.hasFaces() || mType.hasMipmaps()) {
@@ -1238,11 +1261,13 @@ public class Allocation extends BaseObj {
}
/**
+ * Creates a new Allocation with the given {@link
+ * android.renderscript.Type}, mipmap flag, and usage flags.
*
- * @param type renderscript type describing data layout
+ * @param type RenderScript type describing data layout
* @param mips specifies desired mipmap behaviour for the
* allocation
- * @param usage bit field specifying how the allocation is
+ * @param usage bit field specifying how the Allocation is
* utilized
*/
static public Allocation createTyped(RenderScript rs, Type type, MipmapControl mips, int usage) {
@@ -1258,8 +1283,8 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation with the size specified by
- * the type and no mipmaps generated by default
+ * Creates an Allocation with the size specified by the type and no mipmaps
+ * generated by default
*
* @param rs Context to which the allocation will belong.
* @param type renderscript type describing data layout
@@ -1273,12 +1298,11 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation for use by the script with
- * the size specified by the type and no mipmaps generated by
- * default
+ * Creates an Allocation for use by scripts with a given {@link
+ * android.renderscript.Type} and no mipmaps
*
- * @param rs Context to which the allocation will belong.
- * @param type renderscript type describing data layout
+ * @param rs Context to which the Allocation will belong.
+ * @param type RenderScript Type describing data layout
*
* @return allocation
*/
@@ -1287,13 +1311,12 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation with a specified number of
- * given elements
+ * Creates an Allocation with a specified number of given elements
*
- * @param rs Context to which the allocation will belong.
- * @param e describes what each element of an allocation is
- * @param count specifies the number of element in the allocation
- * @param usage bit field specifying how the allocation is
+ * @param rs Context to which the Allocation will belong.
+ * @param e Element to use in the Allocation
+ * @param count the number of Elements in the Allocation
+ * @param usage bit field specifying how the Allocation is
* utilized
*
* @return allocation
@@ -1313,12 +1336,11 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation with a specified number of
- * given elements
+ * Creates an Allocation with a specified number of given elements
*
- * @param rs Context to which the allocation will belong.
- * @param e describes what each element of an allocation is
- * @param count specifies the number of element in the allocation
+ * @param rs Context to which the Allocation will belong.
+ * @param e Element to use in the Allocation
+ * @param count the number of Elements in the Allocation
*
* @return allocation
*/
@@ -1354,16 +1376,16 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation from a bitmap
+ * Creates an Allocation from a {@link android.graphics.Bitmap}.
*
* @param rs Context to which the allocation will belong.
- * @param b bitmap source for the allocation data
+ * @param b Bitmap source for the allocation data
* @param mips specifies desired mipmap behaviour for the
* allocation
* @param usage bit field specifying how the allocation is
* utilized
*
- * @return renderscript allocation containing bitmap data
+ * @return Allocation containing bitmap data
*
*/
static public Allocation createFromBitmap(RenderScript rs, Bitmap b,
@@ -1408,9 +1430,9 @@ public class Allocation extends BaseObj {
}
/**
- * For allocations used with io operations, returns the handle
- * onto a raw buffer that is being managed by the screen
- * compositor.
+ * Returns the handle to a raw buffer that is being managed by the screen
+ * compositor. This operation is only valid for Allocations with {@link
+ * #USAGE_IO_INPUT}.
*
* @return Surface object associated with allocation
*
@@ -1430,7 +1452,8 @@ public class Allocation extends BaseObj {
}
/**
- * Associate a surface for io output with this allocation
+ * Associate a {@link android.view.Surface} with this Allocation. This
+ * operation is only valid for Allocations with {@link #USAGE_IO_OUTPUT}.
*
* @param sur Surface to associate with allocation
*/
@@ -1444,16 +1467,17 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a RenderScript allocation from a bitmap.
+ * Creates an Allocation from a {@link android.graphics.Bitmap}.
*
- * With target API version 18 or greater, this allocation will be
- * created with USAGE_SHARED. With target API version 17 or lower,
- * this allocation will be created with USAGE_GRAPHICS_TEXTURE.
+ * <p>With target API version 18 or greater, this Allocation will be created
+ * with {@link #USAGE_SHARED}, {@link #USAGE_SCRIPT}, and {@link
+ * #USAGE_GRAPHICS_TEXTURE}. With target API version 17 or lower, this
+ * Allocation will be created with {@link #USAGE_GRAPHICS_TEXTURE}.</p>
*
* @param rs Context to which the allocation will belong.
* @param b bitmap source for the allocation data
*
- * @return renderscript allocation containing bitmap data
+ * @return Allocation containing bitmap data
*
*/
static public Allocation createFromBitmap(RenderScript rs, Bitmap b) {
@@ -1466,12 +1490,13 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a cubemap allocation from a bitmap containing the
- * horizontal list of cube faces. Each individual face must be
- * the same size and power of 2
+ * Creates a cubemap Allocation from a {@link android.graphics.Bitmap}
+ * containing the horizontal list of cube faces. Each face must be a square,
+ * have the same size as all other faces, and have a width that is a power
+ * of 2.
*
* @param rs Context to which the allocation will belong.
- * @param b bitmap with cubemap faces layed out in the following
+ * @param b Bitmap with cubemap faces layed out in the following
* format: right, left, top, bottom, front, back
* @param mips specifies desired mipmap behaviour for the cubemap
* @param usage bit field specifying how the cubemap is utilized
@@ -1514,10 +1539,10 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a non-mipmapped cubemap allocation for use as a
- * graphics texture from a bitmap containing the horizontal list
- * of cube faces. Each individual face must be the same size and
- * power of 2
+ * Creates a non-mipmapped cubemap Allocation for use as a graphics texture
+ * from a {@link android.graphics.Bitmap} containing the horizontal list of
+ * cube faces. Each face must be a square, have the same size as all other
+ * faces, and have a width that is a power of 2.
*
* @param rs Context to which the allocation will belong.
* @param b bitmap with cubemap faces layed out in the following
@@ -1533,9 +1558,9 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a cubemap allocation from 6 bitmaps containing
- * the cube faces. All the faces must be the same size and
- * power of 2
+ * Creates a cubemap Allocation from 6 {@link android.graphics.Bitmap}
+ * objects containing the cube faces. Each face must be a square, have the
+ * same size as all other faces, and have a width that is a power of 2.
*
* @param rs Context to which the allocation will belong.
* @param xpos cubemap face in the positive x direction
@@ -1600,10 +1625,10 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a non-mipmapped cubemap allocation for use as a
- * graphics texture from 6 bitmaps containing
- * the cube faces. All the faces must be the same size and
- * power of 2
+ * Creates a non-mipmapped cubemap Allocation for use as a sampler input
+ * from 6 {@link android.graphics.Bitmap} objects containing the cube
+ * faces. Each face must be a square, have the same size as all other faces,
+ * and have a width that is a power of 2.
*
* @param rs Context to which the allocation will belong.
* @param xpos cubemap face in the positive x direction
@@ -1629,8 +1654,8 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation from the bitmap referenced
- * by resource id
+ * Creates an Allocation from the Bitmap referenced
+ * by resource ID.
*
* @param rs Context to which the allocation will belong.
* @param res application resources
@@ -1640,7 +1665,7 @@ public class Allocation extends BaseObj {
* @param usage bit field specifying how the allocation is
* utilized
*
- * @return renderscript allocation containing resource data
+ * @return Allocation containing resource data
*
*/
static public Allocation createFromBitmapResource(RenderScript rs,
@@ -1660,18 +1685,19 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a non-mipmapped renderscript allocation to use as a
- * graphics texture from the bitmap referenced by resource id
+ * Creates a non-mipmapped Allocation to use as a graphics texture from the
+ * {@link android.graphics.Bitmap} referenced by resource ID.
*
- * With target API version 18 or greater, this allocation will be
- * created with USAGE_SHARED. With target API version 17 or lower,
- * this allocation will be created with USAGE_GRAPHICS_TEXTURE.
+ * <p>With target API version 18 or greater, this allocation will be created
+ * with {@link #USAGE_SCRIPT} and {@link #USAGE_GRAPHICS_TEXTURE}. With
+ * target API version 17 or lower, this allocation will be created with
+ * {@link #USAGE_GRAPHICS_TEXTURE}.</p>
*
* @param rs Context to which the allocation will belong.
* @param res application resources
* @param id resource id to load the data from
*
- * @return renderscript allocation containing resource data
+ * @return Allocation containing resource data
*
*/
static public Allocation createFromBitmapResource(RenderScript rs,
@@ -1688,8 +1714,7 @@ public class Allocation extends BaseObj {
}
/**
- * Creates a renderscript allocation containing string data
- * encoded in UTF-8 format
+ * Creates an Allocation containing string data encoded in UTF-8 format.
*
* @param rs Context to which the allocation will belong.
* @param str string to create the allocation from
@@ -1716,11 +1741,10 @@ public class Allocation extends BaseObj {
/**
* @hide
*
- * Interface to handle notification when new buffers are
- * available via USAGE_IO_INPUT. An application will receive
- * one notification when a buffer is available. Additional
- * buffers will not trigger new notifications until a buffer is
- * processed.
+ * Interface to handle notification when new buffers are available via
+ * {@link #USAGE_IO_INPUT}. An application will receive one notification
+ * when a buffer is available. Additional buffers will not trigger new
+ * notifications until a buffer is processed.
*/
public interface IoInputNotifier {
public void onBufferAvailable(Allocation a);
@@ -1729,7 +1753,7 @@ public class Allocation extends BaseObj {
/**
* @hide
*
- * Set a notification handler for USAGE_IO_INPUT
+ * Set a notification handler for {@link #USAGE_IO_INPUT}.
*
* @param callback instance of the IoInputNotifier class to be called
* when buffer arrive.
@@ -1753,4 +1777,3 @@ public class Allocation extends BaseObj {
}
-
diff --git a/graphics/java/android/renderscript/AllocationAdapter.java b/graphics/java/android/renderscript/AllocationAdapter.java
index 85d86e5c1bf7..a6645bb591dc 100644
--- a/graphics/java/android/renderscript/AllocationAdapter.java
+++ b/graphics/java/android/renderscript/AllocationAdapter.java
@@ -22,6 +22,7 @@ import android.graphics.BitmapFactory;
import android.util.TypedValue;
/**
+ * Only intended for use by generated reflected code.
*
**/
public class AllocationAdapter extends Allocation {
diff --git a/graphics/java/android/renderscript/BaseObj.java b/graphics/java/android/renderscript/BaseObj.java
index f464f9bb1025..e17d79a24161 100644
--- a/graphics/java/android/renderscript/BaseObj.java
+++ b/graphics/java/android/renderscript/BaseObj.java
@@ -19,9 +19,9 @@ package android.renderscript;
import android.util.Log;
/**
- * BaseObj is the base class for interfacing with native renderscript objects.
- * It primarly contains code for tracking the native object ID and forcably
- * disconecting the object from the native allocation for early cleanup.
+ * BaseObj is the base class for all RenderScript objects owned by a RS context.
+ * It is responsible for lifetime management and resource tracking. This class
+ * should not be used by a user application.
*
**/
public class BaseObj {
@@ -75,8 +75,7 @@ public class BaseObj {
/**
* setName assigns a name to an object. This object can later be looked up
- * by this name. This name will also be retained if the object is written
- * to an A3D file.
+ * by this name.
*
* @param name The name to assign to the object.
*/
@@ -125,10 +124,9 @@ public class BaseObj {
}
/**
- * destroy disconnects the object from the native object effectively
- * rendering this java object dead. The primary use is to force immediate
- * cleanup of resources when it is believed the GC will not respond quickly
- * enough.
+ * Frees any native resources associated with this object. The
+ * primary use is to force immediate cleanup of resources when it is
+ * believed the GC will not respond quickly enough.
*/
synchronized public void destroy() {
if(mDestroyed) {
diff --git a/graphics/java/android/renderscript/Byte2.java b/graphics/java/android/renderscript/Byte2.java
index 7df5f2ee866a..cf34f3a8ab59 100644
--- a/graphics/java/android/renderscript/Byte2.java
+++ b/graphics/java/android/renderscript/Byte2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript byte2 type back to the Android system.
+ * Class for exposing the native RenderScript byte2 type back to the Android system.
*
**/
public class Byte2 {
diff --git a/graphics/java/android/renderscript/Byte3.java b/graphics/java/android/renderscript/Byte3.java
index 02a01c16c697..266e94d221de 100644
--- a/graphics/java/android/renderscript/Byte3.java
+++ b/graphics/java/android/renderscript/Byte3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript byte3 type back to the Android system.
+ * Class for exposing the native RenderScript byte3 type back to the Android system.
*
**/
public class Byte3 {
diff --git a/graphics/java/android/renderscript/Byte4.java b/graphics/java/android/renderscript/Byte4.java
index a55a696bda50..68c8f52a7862 100644
--- a/graphics/java/android/renderscript/Byte4.java
+++ b/graphics/java/android/renderscript/Byte4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript byte4 type back to the Android system.
+ * Class for exposing the native RenderScript byte4 type back to the Android system.
*
**/
public class Byte4 {
diff --git a/graphics/java/android/renderscript/Double2.java b/graphics/java/android/renderscript/Double2.java
index 9f4f328c389b..29fd5151e935 100644
--- a/graphics/java/android/renderscript/Double2.java
+++ b/graphics/java/android/renderscript/Double2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript double2 type back
+ * Class for exposing the native RenderScript double2 type back
* to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Double3.java b/graphics/java/android/renderscript/Double3.java
index eb55142711bd..818952ed78f0 100644
--- a/graphics/java/android/renderscript/Double3.java
+++ b/graphics/java/android/renderscript/Double3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript double3 type back
+ * Class for exposing the native RenderScript double3 type back
* to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Double4.java b/graphics/java/android/renderscript/Double4.java
index 4755a76d35a0..7775ab7713d5 100644
--- a/graphics/java/android/renderscript/Double4.java
+++ b/graphics/java/android/renderscript/Double4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript double4 type back
+ * Class for exposing the native RenderScript double4 type back
* to the Android system.
*
**/
diff --git a/graphics/java/android/renderscript/Element.java b/graphics/java/android/renderscript/Element.java
index f6c07d1a80f0..3838c61d8ed5 100644
--- a/graphics/java/android/renderscript/Element.java
+++ b/graphics/java/android/renderscript/Element.java
@@ -20,31 +20,37 @@ import java.lang.reflect.Field;
import android.util.Log;
/**
- * <p>The most basic data type. An element represents one cell of a memory allocation.
- * Element is the basic data type of Renderscript. An element can be of two forms: Basic elements or Complex forms.
- * Examples of basic elements are:</p>
- * <ul>
- * <li>Single float value</li>
- * <li>4 element float vector</li>
- * <li>single RGB-565 color</li>
- * <li>single unsigned int 16</li>
- * </ul>
- * <p>Complex elements contain a list of sub-elements and names that
- * represents a structure of data. The fields can be accessed by name
- * from a script or shader. The memory layout is defined and ordered. Data
- * alignment is determined by the most basic primitive type. i.e. a float4
- * vector will be aligned to sizeof(float) and not sizeof(float4). The
- * ordering of elements in memory will be the order in which they were added
- * with each component aligned as necessary. No re-ordering will be done.</p>
+ * <p>An Element represents one item within an {@link
+ * android.renderscript.Allocation}. An Element is roughly equivalent to a C
+ * type in a RenderScript kernel. Elements may be basic or complex. Some basic
+ * elements are</p> <ul> <li>A single float value (equivalent to a float in a
+ * kernel)</li> <li>A four-element float vector (equivalent to a float4 in a
+ * kernel)</li> <li>An unsigned 32-bit integer (equivalent to an unsigned int in
+ * a kernel)</li> <li>A single signed 8-bit integer (equivalent to a char in a
+ * kernel)</li> </ul> <p>A complex element is roughly equivalent to a C struct
+ * and contains a number of basic or complex Elements. From Java code, a complex
+ * element contains a list of sub-elements and names that represents a
+ * particular data structure. Structs used in RS scripts are available to Java
+ * code by using the {@code ScriptField_structname} class that is reflected from
+ * a particular script.</p>
*
- * <p>The primary source of elements are from scripts. A script that exports a
- * bind point for a data structure generates a Renderscript element to represent the
- * data exported by the script. The other common source of elements is from bitmap formats.</p>
+ * <p>Basic Elements are comprised of a {@link
+ * android.renderscript.Element.DataType} and a {@link
+ * android.renderscript.Element.DataKind}. The DataType encodes C type
+ * information of an Element, while the DataKind encodes how that Element should
+ * be interpreted by a {@link android.renderscript.Sampler}. Note that {@link
+ * android.renderscript.Allocation} objects with DataKind {@link
+ * android.renderscript.Element.DataKind#USER} cannot be used as input for a
+ * {@link android.renderscript.Sampler}. In general, {@link
+ * android.renderscript.Allocation} objects that are intended for use with a
+ * {@link android.renderscript.Sampler} should use bitmap-derived Elements such
+ * as {@link android.renderscript.Element#RGBA_8888} or {@link
+ * android.renderscript#Element.A_8}.</p>
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
**/
public class Element extends BaseObj {
diff --git a/graphics/java/android/renderscript/FieldPacker.java b/graphics/java/android/renderscript/FieldPacker.java
index 730d97352630..fed97d6d901a 100644
--- a/graphics/java/android/renderscript/FieldPacker.java
+++ b/graphics/java/android/renderscript/FieldPacker.java
@@ -21,7 +21,7 @@ import java.util.BitSet;
/**
* Utility class for packing arguments and structures from Android system objects to
- * Renderscript objects.
+ * RenderScript objects.
*
* This class is only intended to be used to support the
* reflected code generated by the RS tool chain. It should not
diff --git a/graphics/java/android/renderscript/FileA3D.java b/graphics/java/android/renderscript/FileA3D.java
index 8b0222ab445b..e41f02d38e2f 100644
--- a/graphics/java/android/renderscript/FileA3D.java
+++ b/graphics/java/android/renderscript/FileA3D.java
@@ -30,9 +30,9 @@ import android.util.TypedValue;
/**
* @hide
* @deprecated in API 16
- * FileA3D allows users to load Renderscript objects from files
+ * FileA3D allows users to load RenderScript objects from files
* or resources stored on disk. It could be used to load items
- * such as 3D geometry data converted to a Renderscript format from
+ * such as 3D geometry data converted to a RenderScript format from
* content creation tools. Currently only meshes are supported
* in FileA3D.
*
@@ -56,7 +56,7 @@ public class FileA3D extends BaseObj {
UNKNOWN (0),
/**
* @deprecated in API 16
- * Renderscript Mesh object
+ * RenderScript Mesh object
**/
MESH (1);
@@ -72,7 +72,7 @@ public class FileA3D extends BaseObj {
/**
* @deprecated in API 16
- * IndexEntry contains information about one of the Renderscript
+ * IndexEntry contains information about one of the RenderScript
* objects inside the file's index. It could be used to query the
* object's type and also name and load the object itself if
* necessary.
diff --git a/graphics/java/android/renderscript/Float2.java b/graphics/java/android/renderscript/Float2.java
index 1d4ce3612d0e..0f730feb17f3 100644
--- a/graphics/java/android/renderscript/Float2.java
+++ b/graphics/java/android/renderscript/Float2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript float2 type back to the Android system.
+ * Class for exposing the native RenderScript float2 type back to the Android system.
*
**/
public class Float2 {
diff --git a/graphics/java/android/renderscript/Float3.java b/graphics/java/android/renderscript/Float3.java
index ffd11350fbf6..749865f12f16 100644
--- a/graphics/java/android/renderscript/Float3.java
+++ b/graphics/java/android/renderscript/Float3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript float2 type back to the Android system.
+ * Class for exposing the native RenderScript float2 type back to the Android system.
*
**/
public class Float3 {
diff --git a/graphics/java/android/renderscript/Float4.java b/graphics/java/android/renderscript/Float4.java
index c7cc3ae8ecc9..7ddf6aa96d9b 100644
--- a/graphics/java/android/renderscript/Float4.java
+++ b/graphics/java/android/renderscript/Float4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript float2 type back to the Android system.
+ * Class for exposing the native RenderScript float2 type back to the Android system.
*
**/
public class Float4 {
diff --git a/graphics/java/android/renderscript/Font.java b/graphics/java/android/renderscript/Font.java
index 1a8d5bf3f262..0375d2b36f9d 100644
--- a/graphics/java/android/renderscript/Font.java
+++ b/graphics/java/android/renderscript/Font.java
@@ -39,7 +39,7 @@ import android.util.TypedValue;
* faces, and different font sizes. During creation, the Android system quieries device's screen DPI to
* ensure proper sizing across multiple device configurations.</p>
* <p>Fonts are rendered using screen-space positions and no state setup beyond binding a
- * font to the Renderscript is required. A note of caution on performance, though the state changes
+ * font to the RenderScript is required. A note of caution on performance, though the state changes
* are transparent to the user, they do happen internally, and it is more efficient to
* render large batches of text in sequence. It is also more efficient to render multiple
* characters at once instead of one by one to improve draw call batching.</p>
diff --git a/graphics/java/android/renderscript/Int2.java b/graphics/java/android/renderscript/Int2.java
index 434af2119c9e..71b5dd53cfe5 100644
--- a/graphics/java/android/renderscript/Int2.java
+++ b/graphics/java/android/renderscript/Int2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript int2 type back to the Android system.
+ * Class for exposing the native RenderScript int2 type back to the Android system.
*
**/
public class Int2 {
diff --git a/graphics/java/android/renderscript/Int3.java b/graphics/java/android/renderscript/Int3.java
index 333ccf8dc9f1..719c908b5cd8 100644
--- a/graphics/java/android/renderscript/Int3.java
+++ b/graphics/java/android/renderscript/Int3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript int3 type back to the Android system.
+ * Class for exposing the native RenderScript int3 type back to the Android system.
*
**/
public class Int3 {
diff --git a/graphics/java/android/renderscript/Int4.java b/graphics/java/android/renderscript/Int4.java
index 8734c9520778..eefb34924113 100644
--- a/graphics/java/android/renderscript/Int4.java
+++ b/graphics/java/android/renderscript/Int4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript int4 type back to the Android system.
+ * Class for exposing the native RenderScript int4 type back to the Android system.
*
**/
public class Int4 {
diff --git a/graphics/java/android/renderscript/Long2.java b/graphics/java/android/renderscript/Long2.java
index 95ea18cd2f3e..bd8382d3fbb7 100644
--- a/graphics/java/android/renderscript/Long2.java
+++ b/graphics/java/android/renderscript/Long2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript long2 type back to the Android system.
+ * Class for exposing the native RenderScript long2 type back to the Android system.
**/
public class Long2 {
public Long2() {
diff --git a/graphics/java/android/renderscript/Long3.java b/graphics/java/android/renderscript/Long3.java
index 96ee885ec82b..3e949428820c 100644
--- a/graphics/java/android/renderscript/Long3.java
+++ b/graphics/java/android/renderscript/Long3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript long3 type back to the Android system.
+ * Class for exposing the native RenderScript long3 type back to the Android system.
**/
public class Long3 {
public Long3() {
diff --git a/graphics/java/android/renderscript/Long4.java b/graphics/java/android/renderscript/Long4.java
index 50e664cf8591..00fb7e6e4e28 100644
--- a/graphics/java/android/renderscript/Long4.java
+++ b/graphics/java/android/renderscript/Long4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript long4 type back to the Android system.
+ * Class for exposing the native RenderScript long4 type back to the Android system.
**/
public class Long4 {
public Long4() {
diff --git a/graphics/java/android/renderscript/Matrix2f.java b/graphics/java/android/renderscript/Matrix2f.java
index 39abd4f88c98..d3621fab8d74 100644
--- a/graphics/java/android/renderscript/Matrix2f.java
+++ b/graphics/java/android/renderscript/Matrix2f.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript rs_matrix2x2 type back to the Android system.
+ * Class for exposing the native RenderScript rs_matrix2x2 type back to the Android system.
*
**/
public class Matrix2f {
diff --git a/graphics/java/android/renderscript/Matrix3f.java b/graphics/java/android/renderscript/Matrix3f.java
index 5e9a7caab389..8c3c330d85ef 100644
--- a/graphics/java/android/renderscript/Matrix3f.java
+++ b/graphics/java/android/renderscript/Matrix3f.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript rs_matrix3x3 type back to the Android system.
+ * Class for exposing the native RenderScript rs_matrix3x3 type back to the Android system.
*
**/
public class Matrix3f {
diff --git a/graphics/java/android/renderscript/Matrix4f.java b/graphics/java/android/renderscript/Matrix4f.java
index 4600424f12b1..cd18e3047f55 100644
--- a/graphics/java/android/renderscript/Matrix4f.java
+++ b/graphics/java/android/renderscript/Matrix4f.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript rs_matrix4x4 type back to the Android system.
+ * Class for exposing the native RenderScript rs_matrix4x4 type back to the Android system.
*
**/
public class Matrix4f {
diff --git a/graphics/java/android/renderscript/Mesh.java b/graphics/java/android/renderscript/Mesh.java
index d0d383d41461..bca4aa326143 100644
--- a/graphics/java/android/renderscript/Mesh.java
+++ b/graphics/java/android/renderscript/Mesh.java
@@ -24,7 +24,7 @@ import android.util.Log;
* @hide
* @deprecated in API 16
* <p>This class is a container for geometric data displayed with
- * Renderscript. Internally, a mesh is a collection of allocations that
+ * RenderScript. Internally, a mesh is a collection of allocations that
* represent vertex data (positions, normals, texture
* coordinates) and index data such as triangles and lines. </p>
* <p>
@@ -32,7 +32,7 @@ import android.util.Log;
* allocation that is provided separately, as multiple allocation
* objects, or done as a combination of both. When a
* vertex channel name matches an input in the vertex program,
- * Renderscript automatically connects the two together.
+ * RenderScript automatically connects the two together.
* </p>
* <p>
* Parts of the mesh can be rendered with either explicit
diff --git a/graphics/java/android/renderscript/Program.java b/graphics/java/android/renderscript/Program.java
index 9bd103e8016c..bc2ca3536ab9 100644
--- a/graphics/java/android/renderscript/Program.java
+++ b/graphics/java/android/renderscript/Program.java
@@ -276,7 +276,7 @@ public class Program extends BaseObj {
try {
mShader = new String(str, 0, strLength, "UTF-8");
} catch (UnsupportedEncodingException e) {
- Log.e("Renderscript shader creation", "Could not decode shader string");
+ Log.e("RenderScript shader creation", "Could not decode shader string");
}
return this;
diff --git a/graphics/java/android/renderscript/ProgramFragment.java b/graphics/java/android/renderscript/ProgramFragment.java
index dd0f9f5301d8..b9ba3fd2db42 100644
--- a/graphics/java/android/renderscript/ProgramFragment.java
+++ b/graphics/java/android/renderscript/ProgramFragment.java
@@ -23,7 +23,7 @@ import android.util.Log;
/**
* @hide
* @deprecated in API 16
- * <p>The Renderscript fragment program, also known as fragment shader is responsible
+ * <p>The RenderScript fragment program, also known as fragment shader is responsible
* for manipulating pixel data in a user defined way. It's constructed from a GLSL
* shader string containing the program body, textures inputs, and a Type object
* that describes the constants used by the program. Similar to the vertex programs,
diff --git a/graphics/java/android/renderscript/ProgramVertex.java b/graphics/java/android/renderscript/ProgramVertex.java
index 50e32f6b810b..1c5a191ae205 100644
--- a/graphics/java/android/renderscript/ProgramVertex.java
+++ b/graphics/java/android/renderscript/ProgramVertex.java
@@ -16,9 +16,9 @@
/**
* @hide
- * <p>The Renderscript vertex program, also known as a vertex shader, describes a stage in
+ * <p>The RenderScript vertex program, also known as a vertex shader, describes a stage in
* the graphics pipeline responsible for manipulating geometric data in a user-defined way.
- * The object is constructed by providing the Renderscript system with the following data:</p>
+ * The object is constructed by providing the RenderScript system with the following data:</p>
* <ul>
* <li>Element describing its varying inputs or attributes</li>
* <li>GLSL shader string that defines the body of the program</li>
@@ -28,7 +28,7 @@
* <p>Once the program is created, you bind it to the graphics context, RenderScriptGL, and it will be used for
* all subsequent draw calls until you bind a new program. If the program has constant inputs,
* the user needs to bind an allocation containing those inputs. The allocation's type must match
- * the one provided during creation. The Renderscript library then does all the necessary plumbing
+ * the one provided during creation. The RenderScript library then does all the necessary plumbing
* to send those constants to the graphics hardware. Varying inputs to the shader, such as position, normal,
* and texture coordinates are matched by name between the input Element and the Mesh object being drawn.
* The signatures don't have to be exact or in any strict order. As long as the input name in the shader
diff --git a/graphics/java/android/renderscript/RSDriverException.java b/graphics/java/android/renderscript/RSDriverException.java
index ce85b53e2817..9e6507f517ed 100644
--- a/graphics/java/android/renderscript/RSDriverException.java
+++ b/graphics/java/android/renderscript/RSDriverException.java
@@ -19,7 +19,7 @@ package android.renderscript;
/**
* Base class for all exceptions thrown by the Android
- * Renderscript
+ * RenderScript
*/
public class RSDriverException extends RSRuntimeException {
public RSDriverException(String string) {
diff --git a/graphics/java/android/renderscript/RSIllegalArgumentException.java b/graphics/java/android/renderscript/RSIllegalArgumentException.java
index 954c0e82d6aa..5c68594f33a2 100644
--- a/graphics/java/android/renderscript/RSIllegalArgumentException.java
+++ b/graphics/java/android/renderscript/RSIllegalArgumentException.java
@@ -19,7 +19,7 @@ package android.renderscript;
/**
* Base class for all exceptions thrown by the Android
- * Renderscript
+ * RenderScript
*/
public class RSIllegalArgumentException extends RSRuntimeException {
public RSIllegalArgumentException(String string) {
diff --git a/graphics/java/android/renderscript/RSInvalidStateException.java b/graphics/java/android/renderscript/RSInvalidStateException.java
index 691aeba62ff4..c881898dab3d 100644
--- a/graphics/java/android/renderscript/RSInvalidStateException.java
+++ b/graphics/java/android/renderscript/RSInvalidStateException.java
@@ -19,7 +19,7 @@ package android.renderscript;
/**
* Base class for all exceptions thrown by the Android
- * Renderscript
+ * RenderScript
*/
public class RSInvalidStateException extends RSRuntimeException {
public RSInvalidStateException(String string) {
diff --git a/graphics/java/android/renderscript/RSRuntimeException.java b/graphics/java/android/renderscript/RSRuntimeException.java
index 5a16478b7464..b4b629e14184 100644
--- a/graphics/java/android/renderscript/RSRuntimeException.java
+++ b/graphics/java/android/renderscript/RSRuntimeException.java
@@ -19,7 +19,7 @@ package android.renderscript;
/**
* Base class for all exceptions thrown by the Android
- * Renderscript
+ * RenderScript
*/
public class RSRuntimeException
extends java.lang.RuntimeException {
diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java
index 3c6c72050993..308d97a3c5ce 100644
--- a/graphics/java/android/renderscript/RSSurfaceView.java
+++ b/graphics/java/android/renderscript/RSSurfaceView.java
@@ -36,8 +36,8 @@ import android.view.SurfaceView;
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
*/
public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback {
diff --git a/graphics/java/android/renderscript/RenderScript.java b/graphics/java/android/renderscript/RenderScript.java
index fb9372fc6339..1264adc37768 100644
--- a/graphics/java/android/renderscript/RenderScript.java
+++ b/graphics/java/android/renderscript/RenderScript.java
@@ -33,15 +33,14 @@ import android.view.Surface;
/**
- * Renderscript base master class. An instance of this class creates native
- * worker threads for processing commands from this object. This base class
- * does not provide any extended capabilities beyond simple data processing.
- * For extended capabilities use derived classes such as RenderScriptGL.
+ * This class provides access to a RenderScript context, which controls RenderScript
+ * initialization, resource management, and teardown. An instance of the RenderScript
+ * class must be created before any other RS objects can be created.
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
**/
public class RenderScript {
@@ -903,11 +902,14 @@ public class RenderScript {
//
/**
- * Base class application should derive from for handling RS messages
- * coming from their scripts. When a script calls sendToClient the data
- * fields will be filled in and then the run method called by a message
- * handling thread. This will occur some time after sendToClient completes
- * in the script.
+ * The base class from which an application should derive in order
+ * to receive RS messages from scripts. When a script calls {@code
+ * rsSendToClient}, the data fields will be filled, and the run
+ * method will be called on a separate thread. This will occur
+ * some time after {@code rsSendToClient} completes in the script,
+ * as {@code rsSendToClient} is asynchronous. Message handlers are
+ * not guaranteed to have completed when {@link
+ * android.renderscript.RenderScript#finish} returns.
*
*/
public static class RSMessageHandler implements Runnable {
@@ -918,9 +920,10 @@ public class RenderScript {
}
}
/**
- * If an application is expecting messages it should set this field to an
- * instance of RSMessage. This instance will receive all the user messages
- * sent from sendToClient by scripts from this context.
+ * If an application is expecting messages, it should set this
+ * field to an instance of {@link RSMessageHandler}. This
+ * instance will receive all the user messages sent from {@code
+ * sendToClient} by scripts from this context.
*
*/
RSMessageHandler mMessageCallback = null;
@@ -944,9 +947,9 @@ public class RenderScript {
}
/**
- * Runtime error base class. An application should derive from this class
- * if it wishes to install an error handler. When errors occur at runtime
- * the fields in this class will be filled and the run method called.
+ * The runtime error handler base class. An application should derive from this class
+ * if it wishes to install an error handler. When errors occur at runtime,
+ * the fields in this class will be filled, and the run method will be called.
*
*/
public static class RSErrorHandler implements Runnable {
@@ -959,7 +962,7 @@ public class RenderScript {
/**
* Application Error handler. All runtime errors will be dispatched to the
* instance of RSAsyncError set here. If this field is null a
- * RSRuntimeException will instead be thrown with details about the error.
+ * {@link RSRuntimeException} will instead be thrown with details about the error.
* This will cause program termaination.
*
*/
@@ -973,10 +976,9 @@ public class RenderScript {
}
/**
- * RenderScript worker threads priority enumeration. The default value is
- * NORMAL. Applications wishing to do background processing such as
- * wallpapers should set their priority to LOW to avoid starving forground
- * processes.
+ * RenderScript worker thread priority enumeration. The default value is
+ * NORMAL. Applications wishing to do background processing should set
+ * their priority to LOW to avoid starving forground processes.
*/
public enum Priority {
LOW (Process.THREAD_PRIORITY_BACKGROUND + (5 * Process.THREAD_PRIORITY_LESS_FAVORABLE)),
@@ -1043,7 +1045,7 @@ public class RenderScript {
}
if (mRS.nContextGetUserMessage(mRS.mContext, rbuf) !=
RS_MESSAGE_TO_CLIENT_USER) {
- throw new RSDriverException("Error processing message from Renderscript.");
+ throw new RSDriverException("Error processing message from RenderScript.");
}
if(mRS.mMessageCallback != null) {
@@ -1128,7 +1130,7 @@ public class RenderScript {
}
/**
- * Create a basic RenderScript context.
+ * Create a RenderScript context.
*
* @hide
* @param ctx The context.
@@ -1149,7 +1151,7 @@ public class RenderScript {
}
/**
- * Create a basic RenderScript context.
+ * Create a RenderScript context.
*
* @param ctx The context.
* @return RenderScript
@@ -1159,7 +1161,7 @@ public class RenderScript {
}
/**
- * Create a basic RenderScript context.
+ * Create a RenderScript context.
*
*
* @param ctx The context.
@@ -1182,8 +1184,8 @@ public class RenderScript {
}
/**
- * Wait for any commands in the fifo between the java bindings and native to
- * be processed.
+ * Wait for any pending asynchronous opeations (such as copies to a RS
+ * allocation or RS script executions) to complete.
*
*/
public void finish() {
@@ -1191,8 +1193,9 @@ public class RenderScript {
}
/**
- * Destroy this renderscript context. Once this function is called its no
- * longer legal to use this or any objects created by this context.
+ * Destroys this RenderScript context. Once this function is called,
+ * using this context or any objects belonging to this context is
+ * illegal.
*
*/
public void destroy() {
diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java
index 52034b19e706..bac9c6856d30 100644
--- a/graphics/java/android/renderscript/RenderScriptGL.java
+++ b/graphics/java/android/renderscript/RenderScriptGL.java
@@ -31,7 +31,7 @@ import android.view.SurfaceView;
/**
* @hide
* @deprecated in API 16
- * The Graphics derivitive of Renderscript. Extends the basic context to add a
+ * The Graphics derivitive of RenderScript. Extends the basic context to add a
* root script which is the display window for graphical output. When the
* system needs to update the display the currently bound root script will be
* called. This script is expected to issue the rendering commands to repaint
@@ -39,8 +39,8 @@ import android.view.SurfaceView;
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
**/
public class RenderScriptGL extends RenderScript {
diff --git a/graphics/java/android/renderscript/Sampler.java b/graphics/java/android/renderscript/Sampler.java
index 057e9b5452f8..623055fe7782 100644
--- a/graphics/java/android/renderscript/Sampler.java
+++ b/graphics/java/android/renderscript/Sampler.java
@@ -28,9 +28,14 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
/**
- * Sampler object which defines how data is extracted from textures. Samplers
- * are attached to Program objects (currently only ProgramFragment) when those objects
- * need to access texture data.
+ * Sampler object that defines how Allocations can be read as textures within a
+ * kernel. Samplers are used in conjunction with the {@code rsSample} runtime
+ * function to return values from normalized coordinates.
+ *
+ * Any Allocation used with a Sampler must have been created with {@link
+ * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE}; using a Sampler on
+ * an {@link android.renderscript.Allocation} that was not created with {@link
+ * android.renderscript.Allocation#USAGE_GRAPHICS_TEXTURE} is undefined.
**/
public class Sampler extends BaseObj {
public enum Value {
@@ -275,9 +280,8 @@ public class Sampler extends BaseObj {
}
/**
- * Builder for creating non-standard samplers. Usefull if mix and match of
- * wrap modes is necesary or if anisotropic filtering is desired.
- *
+ * Builder for creating non-standard samplers. This is only necessary if
+ * a Sampler with different min and mag modes is desired.
*/
public static class Builder {
RenderScript mRS;
diff --git a/graphics/java/android/renderscript/Script.java b/graphics/java/android/renderscript/Script.java
index f0579ca24c2b..0026e0edbfba 100644
--- a/graphics/java/android/renderscript/Script.java
+++ b/graphics/java/android/renderscript/Script.java
@@ -19,7 +19,8 @@ package android.renderscript;
import android.util.SparseArray;
/**
- *
+ * The parent class for all executable scripts. This should not be used by
+ * applications.
**/
public class Script extends BaseObj {
@@ -46,14 +47,6 @@ public class Script extends BaseObj {
private final SparseArray<KernelID> mKIDs = new SparseArray<KernelID>();
/**
* Only to be used by generated reflected classes.
- *
- *
- * @param slot
- * @param sig
- * @param ein
- * @param eout
- *
- * @return KernelID
*/
protected KernelID createKernelID(int slot, int sig, Element ein, Element eout) {
KernelID k = mKIDs.get(slot);
@@ -92,11 +85,6 @@ public class Script extends BaseObj {
private final SparseArray<FieldID> mFIDs = new SparseArray();
/**
* Only to be used by generated reflected classes.
- *
- * @param slot
- * @param e
- *
- * @return FieldID
*/
protected FieldID createFieldID(int slot, Element e) {
FieldID f = mFIDs.get(slot);
@@ -118,7 +106,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param slot
*/
protected void invoke(int slot) {
mRS.nScriptInvoke(getID(mRS), slot);
@@ -127,8 +114,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param slot
- * @param v
*/
protected void invoke(int slot, FieldPacker v) {
if (v != null) {
@@ -141,10 +126,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param slot
- * @param ain
- * @param aout
- * @param v
*/
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
if (ain == null && aout == null) {
@@ -169,11 +150,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param slot
- * @param ain
- * @param aout
- * @param v
- * @param sc
*/
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) {
if (ain == null && aout == null) {
@@ -208,8 +184,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param va
- * @param slot
*/
public void bindAllocation(Allocation va, int slot) {
mRS.validate();
@@ -223,8 +197,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, float v) {
mRS.nScriptSetVarF(getID(mRS), index, v);
@@ -236,8 +208,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, double v) {
mRS.nScriptSetVarD(getID(mRS), index, v);
@@ -249,8 +219,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, int v) {
mRS.nScriptSetVarI(getID(mRS), index, v);
@@ -263,8 +231,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, long v) {
mRS.nScriptSetVarJ(getID(mRS), index, v);
@@ -277,8 +243,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, boolean v) {
mRS.nScriptSetVarI(getID(mRS), index, v ? 1 : 0);
@@ -290,8 +254,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param o
*/
public void setVar(int index, BaseObj o) {
mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS));
@@ -300,8 +262,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void setVar(int index, FieldPacker v) {
mRS.nScriptSetVarV(getID(mRS), index, v.getData());
@@ -310,10 +270,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
- * @param e
- * @param dims
*/
public void setVar(int index, FieldPacker v, Element e, int[] dims) {
mRS.nScriptSetVarVE(getID(mRS), index, v.getData(), e.getID(mRS), dims);
@@ -322,8 +278,6 @@ public class Script extends BaseObj {
/**
* Only intended for use by generated reflected code.
*
- * @param index
- * @param v
*/
public void getVarV(int index, FieldPacker v) {
mRS.nScriptGetVarV(getID(mRS), index, v.getData());
@@ -338,6 +292,10 @@ public class Script extends BaseObj {
}
}
+ /**
+ * Only intended for use by generated reflected code.
+ *
+ */
public static class Builder {
RenderScript mRS;
diff --git a/graphics/java/android/renderscript/ScriptC.java b/graphics/java/android/renderscript/ScriptC.java
index 6975534371c9..b0a5759325af 100644
--- a/graphics/java/android/renderscript/ScriptC.java
+++ b/graphics/java/android/renderscript/ScriptC.java
@@ -30,7 +30,8 @@ import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
/**
- *
+ * The superclass for all user-defined scripts. This is only
+ * intended to be used by the generated derived classes.
**/
public class ScriptC extends Script {
private static final String TAG = "ScriptC";
diff --git a/graphics/java/android/renderscript/ScriptGroup.java b/graphics/java/android/renderscript/ScriptGroup.java
index 7afdb3976398..14166410e275 100644
--- a/graphics/java/android/renderscript/ScriptGroup.java
+++ b/graphics/java/android/renderscript/ScriptGroup.java
@@ -20,24 +20,26 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
/**
- * ScriptGroup creates a groups of scripts which are executed
- * together based upon upon one execution call as if they were
- * all part of a single script. The scripts may be connected
- * internally or to an external allocation. For the internal
- * connections the intermediate results are not observable after
- * the execution of the script.
+ * ScriptGroup creates a group of kernels that are executed
+ * together with one execution call as if they were a single kernel.
+ * The kernels may be connected internally or to an external allocation.
+ * The intermediate results for internal connections are not observable
+ * after the execution of the script.
* <p>
- * The external connections are grouped into inputs and outputs.
+ * External connections are grouped into inputs and outputs.
* All outputs are produced by a script kernel and placed into a
- * user supplied allocation. Inputs are similar but supply the
- * input of a kernal. Inputs bounds to a script are set directly
- * upon the script.
+ * user-supplied allocation. Inputs provide the input of a kernel.
+ * Inputs bound to script globals are set directly upon the script.
* <p>
* A ScriptGroup must contain at least one kernel. A ScriptGroup
* must contain only a single directed acyclic graph (DAG) of
* script kernels and connections. Attempting to create a
* ScriptGroup with multiple DAGs or attempting to create
* a cycle within a ScriptGroup will throw an exception.
+ * <p>
+ * Currently, all kernels in a ScriptGroup must be from separate
+ * Script objects. Attempting to use multiple kernels from the same
+ * Script object will result in an {@link android.renderscript.RSInvalidStateException}.
*
**/
public final class ScriptGroup extends BaseObj {
@@ -93,8 +95,8 @@ public final class ScriptGroup extends BaseObj {
/**
* Sets an input of the ScriptGroup. This specifies an
- * Allocation to be used for the kernels which require a kernel
- * input and that input is provided external to the group.
+ * Allocation to be used for kernels that require an input
+ * Allocation provided from outside of the ScriptGroup.
*
* @param s The ID of the kernel where the allocation should be
* connected.
@@ -113,8 +115,8 @@ public final class ScriptGroup extends BaseObj {
/**
* Sets an output of the ScriptGroup. This specifies an
- * Allocation to be used for the kernels which require a kernel
- * output and that output is provided external to the group.
+ * Allocation to be used for the kernels that require an output
+ * Allocation visible after the ScriptGroup is executed.
*
* @param s The ID of the kernel where the allocation should be
* connected.
@@ -133,8 +135,8 @@ public final class ScriptGroup extends BaseObj {
/**
* Execute the ScriptGroup. This will run all the kernels in
- * the script. The state of the connecting lines will not be
- * observable after this operation.
+ * the ScriptGroup. No internal connection results will be visible
+ * after execution of the ScriptGroup.
*/
public void execute() {
mRS.nScriptGroupExecute(getID(mRS));
@@ -142,20 +144,25 @@ public final class ScriptGroup extends BaseObj {
/**
- * Create a ScriptGroup. There are two steps to creating a
- * ScriptGoup.
+ * Helper class to build a ScriptGroup. A ScriptGroup is
+ * created in two steps.
+ * <p>
+ * First, all kernels to be used by the ScriptGroup should be added.
* <p>
- * First all the Kernels to be used by the group should be
- * added. Once this is done the kernels should be connected.
- * Kernels cannot be added once a connection has been made.
+ * Second, add connections between kernels. There are two types
+ * of connections: kernel to kernel and kernel to field.
+ * Kernel to kernel allows a kernel's output to be passed to
+ * another kernel as input. Kernel to field allows the output of
+ * one kernel to be bound as a script global. Kernel to kernel is
+ * higher performance and should be used where possible.
* <p>
- * Second, add connections. There are two forms of connections.
- * Kernel to Kernel and Kernel to Field. Kernel to Kernel is
- * higher performance and should be used where possible. The
- * line of connections cannot form a loop. If a loop is detected
- * an exception is thrown.
+ * A ScriptGroup must contain a single directed acyclic graph (DAG); it
+ * cannot contain cycles. Currently, all kernels used in a ScriptGroup
+ * must come from different Script objects. Additionally, all kernels
+ * in a ScriptGroup must have at least one input, output, or internal
+ * connection.
* <p>
- * Once all the connections are made a call to create will
+ * Once all connections are made, a call to {@link #create} will
* return the ScriptGroup object.
*
*/
@@ -166,10 +173,10 @@ public final class ScriptGroup extends BaseObj {
private int mKernelCount;
/**
- * Create a builder for generating a ScriptGroup.
+ * Create a Builder for generating a ScriptGroup.
*
*
- * @param rs The Renderscript context.
+ * @param rs The RenderScript context.
*/
public Builder(RenderScript rs) {
mRS = rs;
diff --git a/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java b/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java
index 86f37d847427..34540a1119d9 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsic3DLUT.java
@@ -40,7 +40,7 @@ public final class ScriptIntrinsic3DLUT extends ScriptIntrinsic {
*
* The defaults tables are identity.
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for intputs and outputs
*
* @return ScriptIntrinsic3DLUT
@@ -55,6 +55,13 @@ public final class ScriptIntrinsic3DLUT extends ScriptIntrinsic {
return new ScriptIntrinsic3DLUT(id, rs, e);
}
+ /**
+ * Sets the {@link android.renderscript.Allocation} to be used as the lookup table.
+ *
+ * The lookup table must use the same {@link android.renderscript.Element} as the intrinsic.
+ *
+ */
+
public void setLUT(Allocation lut) {
final Type t = lut.getType();
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicBlend.java b/graphics/java/android/renderscript/ScriptIntrinsicBlend.java
index 65c69c01aafb..0e05bc8fe03f 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicBlend.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicBlend.java
@@ -18,8 +18,7 @@ package android.renderscript;
/**
- * Intrinsic kernels for blending two buffers. Each blend function is a separate
- * kernel to make it easy to change between blend modes.
+ * Intrinsic kernels for blending two {@link android.renderscript.Allocation} objects.
**/
public class ScriptIntrinsicBlend extends ScriptIntrinsic {
ScriptIntrinsicBlend(int id, RenderScript rs) {
@@ -27,11 +26,10 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * Supported elements types are uchar4
+ * Supported elements types are {@link Element#U8_4}
*
- *
- * @param rs
- * @param e
+ * @param rs The RenderScript context
+ * @param e Element type for inputs and outputs
*
* @return ScriptIntrinsicBlend
*/
@@ -53,7 +51,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = {0, 0, 0, 0}
+ * Sets dst = {0, 0, 0, 0}
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -73,7 +71,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
/**
- * dst = src
+ * Sets dst = src
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -92,8 +90,9 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = dst
- * This is a NOP
+ * Sets dst = dst
+ *
+ * This is a NOP.
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -112,7 +111,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = src + dst * (1.0 - src.a)
+ * Sets dst = src + dst * (1.0 - src.a)
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -131,7 +130,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = dst + src * (1.0 - dst.a)
+ * Sets dst = dst + src * (1.0 - dst.a)
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -150,7 +149,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = src * dst.a
+ * Sets dst = src * dst.a
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -169,7 +168,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = dst * src.a
+ * Sets dst = dst * src.a
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -188,7 +187,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = src * (1.0 - dst.a)
+ * Sets dst = src * (1.0 - dst.a)
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -207,7 +206,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = dst * (1.0 - src.a)
+ * Sets dst = dst * (1.0 - src.a)
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -266,7 +265,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
+ * Sets dst = {src.r ^ dst.r, src.g ^ dst.g, src.b ^ dst.b, src.a ^ dst.a}
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -295,7 +294,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
*/
/**
- * dst = src * dst
+ * Sets dst = src * dst
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -391,7 +390,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
*/
/**
- * dst = min(src + dst, 1.0)
+ * Sets dst = min(src + dst, 1.0)
*
* @param ain The source buffer
* @param aout The destination buffer
@@ -410,7 +409,7 @@ public class ScriptIntrinsicBlend extends ScriptIntrinsic {
}
/**
- * dst = max(dst - src, 0.0)
+ * Sets dst = max(dst - src, 0.0)
*
* @param ain The source buffer
* @param aout The destination buffer
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicBlur.java b/graphics/java/android/renderscript/ScriptIntrinsicBlur.java
index 2848f64569d6..aaf5ffcf5926 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicBlur.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicBlur.java
@@ -40,7 +40,7 @@ public final class ScriptIntrinsicBlur extends ScriptIntrinsic {
*
* Supported elements types are {@link Element#U8_4}
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for inputs and outputs
*
* @return ScriptIntrinsicBlur
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java b/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java
index f7e844ea94db..77b9385c3d49 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicColorMatrix.java
@@ -41,7 +41,7 @@ public final class ScriptIntrinsicColorMatrix extends ScriptIntrinsic {
*
* Supported elements types are {@link Element#U8_4}
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for intputs and outputs
*
* @return ScriptIntrinsicColorMatrix
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java b/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java
index d54df9661b48..c9c54b2ea381 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicConvolve3x3.java
@@ -41,7 +41,7 @@ public final class ScriptIntrinsicConvolve3x3 extends ScriptIntrinsic {
* <p> [ 0, 0, 0 ]
* </code>
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for intputs and outputs
*
* @return ScriptIntrinsicConvolve3x3
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java b/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java
index 1f52e3fdf975..c6e1e39cb282 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicConvolve5x5.java
@@ -42,7 +42,7 @@ public final class ScriptIntrinsicConvolve5x5 extends ScriptIntrinsic {
* <p> [ 0, 0, 0, 0, 0 ]
* </code>
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for intputs and outputs
*
* @return ScriptIntrinsicConvolve5x5
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicLUT.java b/graphics/java/android/renderscript/ScriptIntrinsicLUT.java
index f5ca261bec62..0f7ab3895ac9 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicLUT.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicLUT.java
@@ -47,7 +47,7 @@ public final class ScriptIntrinsicLUT extends ScriptIntrinsic {
*
* The defaults tables are identity.
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for intputs and outputs
*
* @return ScriptIntrinsicLUT
diff --git a/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java b/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java
index dc8a5aa4dc9d..9b5de9be82f1 100644
--- a/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java
+++ b/graphics/java/android/renderscript/ScriptIntrinsicYuvToRGB.java
@@ -36,7 +36,7 @@ public final class ScriptIntrinsicYuvToRGB extends ScriptIntrinsic {
*
* Supported elements types are {@link Element#U8_4}
*
- * @param rs The Renderscript context
+ * @param rs The RenderScript context
* @param e Element type for output
*
* @return ScriptIntrinsicYuvToRGB
diff --git a/graphics/java/android/renderscript/Short2.java b/graphics/java/android/renderscript/Short2.java
index 617f1f5373c9..7c6027f398a4 100644
--- a/graphics/java/android/renderscript/Short2.java
+++ b/graphics/java/android/renderscript/Short2.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript Short2 type back to the Android system.
+ * Class for exposing the native RenderScript Short2 type back to the Android system.
*
**/
public class Short2 {
diff --git a/graphics/java/android/renderscript/Short3.java b/graphics/java/android/renderscript/Short3.java
index b9ca49b11c78..49de05ee58f3 100644
--- a/graphics/java/android/renderscript/Short3.java
+++ b/graphics/java/android/renderscript/Short3.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript short3 type back to the Android system.
+ * Class for exposing the native RenderScript short3 type back to the Android system.
*
**/
public class Short3 {
diff --git a/graphics/java/android/renderscript/Short4.java b/graphics/java/android/renderscript/Short4.java
index d5f2db512ebb..a7807a4f9d95 100644
--- a/graphics/java/android/renderscript/Short4.java
+++ b/graphics/java/android/renderscript/Short4.java
@@ -21,7 +21,7 @@ import android.util.Log;
/**
- * Class for exposing the native Renderscript short4 type back to the Android system.
+ * Class for exposing the native RenderScript short4 type back to the Android system.
*
**/
public class Short4 {
diff --git a/graphics/java/android/renderscript/Type.java b/graphics/java/android/renderscript/Type.java
index a5e24ce14597..ef08c295a3d3 100644
--- a/graphics/java/android/renderscript/Type.java
+++ b/graphics/java/android/renderscript/Type.java
@@ -23,24 +23,29 @@ import android.graphics.ImageFormat;
import android.util.Log;
/**
- * <p>Type is an allocation template. It consists of an Element and one or more
- * dimensions. It describes only the layout of memory but does not allocate any
- * storage for the data that is described.</p>
+ * <p>A Type describes the {@link android.renderscript.Element} and dimensions used for an {@link
+ * android.renderscript.Allocation} or a parallel operation. Types are created through {@link
+ * android.renderscript.Type.Builder}.</p>
*
- * <p>A Type consists of several dimensions. Those are X, Y, Z, LOD (level of
- * detail), Faces (faces of a cube map). The X,Y,Z dimensions can be assigned
- * any positive integral value within the constraints of available memory. A
- * single dimension allocation would have an X dimension of greater than zero
- * while the Y and Z dimensions would be zero to indicate not present. In this
- * regard an allocation of x=10, y=1 would be considered 2 dimensionsal while
- * x=10, y=0 would be considered 1 dimensional.</p>
+ * <p>A Type always includes an {@link android.renderscript.Element} and an X
+ * dimension. A Type may be multidimensional, up to three dimensions. A nonzero
+ * value in the Y or Z dimensions indicates that the dimension is present. Note
+ * that a Type with only a given X dimension and a Type with the same X
+ * dimension but Y = 1 are not equivalent.</p>
*
- * <p>The LOD and Faces dimensions are booleans to indicate present or not present.</p>
+ * <p>A Type also supports inclusion of level of detail (LOD) or cube map
+ * faces. LOD and cube map faces are booleans to indicate present or not
+ * present. </p>
+ *
+ * <p>A Type also supports YUV format information to support an {@link
+ * android.renderscript.Allocation} in a YUV format. The YUV formats supported
+ * are {@link android.graphics.ImageFormat#YV12} and {@link
+ * android.graphics.ImageFormat#NV21}.</p>
*
* <div class="special reference">
* <h3>Developer Guides</h3>
- * <p>For more information about creating an application that uses Renderscript, read the
- * <a href="{@docRoot}guide/topics/renderscript/index.html">Renderscript</a> developer guide.</p>
+ * <p>For more information about creating an application that uses RenderScript, read the
+ * <a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
* </div>
**/
public class Type extends BaseObj {
@@ -277,11 +282,9 @@ public class Type extends BaseObj {
}
/**
- * Set the YUV layout for a Type. This controls how the memory is
- * interpreted. Generally and application should not need to call this
- * function and it would be set by the Camera.
+ * Set the YUV layout for a Type.
*
- * only NV21, YV12. Enums from ImageFormat
+ * @param yuvFormat {@link android.graphics.ImageFormat#YV12} or {@link android.graphics.ImageFormat#NV21}
*/
public Builder setYuvFormat(int yuvFormat) {
switch (yuvFormat) {
@@ -299,7 +302,7 @@ public class Type extends BaseObj {
/**
- * Validate structure and create a new type.
+ * Validate structure and create a new Type.
*
* @return Type
*/
diff --git a/graphics/java/android/renderscript/package.html b/graphics/java/android/renderscript/package.html
index eb178c1ea47e..a844956803c6 100644
--- a/graphics/java/android/renderscript/package.html
+++ b/graphics/java/android/renderscript/package.html
@@ -2,6 +2,11 @@
<BODY>
<p>RenderScript provides support for high-performance computation across heterogeneous processors.</p>
+<p>This package is for the latest native version of RenderScript included on
+Android devices. Developers interested in running RenderScript on any Android
+device running {@link android.os.Build.VERSION_CODES#GINGERBREAD} or newer
+should see the {@link android.support.v8.renderscript} package.
+
<p>For more information, see the
<a href="{@docRoot}guide/topics/renderscript/index.html">RenderScript</a> developer guide.</p>
{@more}
diff --git a/keystore/java/android/security/AndroidKeyPairGenerator.java b/keystore/java/android/security/AndroidKeyPairGenerator.java
index 43d1eb607fe6..390e7329b971 100644
--- a/keystore/java/android/security/AndroidKeyPairGenerator.java
+++ b/keystore/java/android/security/AndroidKeyPairGenerator.java
@@ -18,7 +18,7 @@ package android.security;
import com.android.org.bouncycastle.x509.X509V3CertificateGenerator;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
+import com.android.org.conscrypt.OpenSSLEngine;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
diff --git a/keystore/java/android/security/AndroidKeyStore.java b/keystore/java/android/security/AndroidKeyStore.java
index 04ee8c4bcb91..acbae8f816b8 100644
--- a/keystore/java/android/security/AndroidKeyStore.java
+++ b/keystore/java/android/security/AndroidKeyStore.java
@@ -16,8 +16,8 @@
package android.security;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder;
+import com.android.org.conscrypt.OpenSSLEngine;
+import com.android.org.conscrypt.OpenSSLKeyHolder;
import android.util.Log;
diff --git a/keystore/java/android/security/KeyChain.java b/keystore/java/android/security/KeyChain.java
index c99dff02e97f..328ac5d882eb 100644
--- a/keystore/java/android/security/KeyChain.java
+++ b/keystore/java/android/security/KeyChain.java
@@ -37,8 +37,8 @@ import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
-import org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore;
+import com.android.org.conscrypt.OpenSSLEngine;
+import com.android.org.conscrypt.TrustedCertificateStore;
/**
* The {@code KeyChain} class provides access to private keys and
@@ -346,6 +346,8 @@ public final class KeyChain {
List<X509Certificate> chain = store
.getCertificateChain(toCertificate(certificateBytes));
return chain.toArray(new X509Certificate[chain.size()]);
+ } catch (CertificateException e) {
+ throw new KeyChainException(e);
} catch (RemoteException e) {
throw new KeyChainException(e);
} catch (RuntimeException e) {
diff --git a/keystore/tests/Android.mk b/keystore/tests/Android.mk
index 61cf64079015..35388d7d129e 100644
--- a/keystore/tests/Android.mk
+++ b/keystore/tests/Android.mk
@@ -5,7 +5,7 @@ include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := tests
LOCAL_CERTIFICATE := platform
-LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle
+LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle conscrypt
# Include all test java files.
LOCAL_SRC_FILES := $(call all-java-files-under, src)
diff --git a/keystore/tests/src/android/security/AndroidKeyStoreTest.java b/keystore/tests/src/android/security/AndroidKeyStoreTest.java
index 8798fb5879ab..b7129db1a56f 100644
--- a/keystore/tests/src/android/security/AndroidKeyStoreTest.java
+++ b/keystore/tests/src/android/security/AndroidKeyStoreTest.java
@@ -18,7 +18,7 @@ package android.security;
import com.android.org.bouncycastle.x509.X509V3CertificateGenerator;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLEngine;
+import com.android.org.conscrypt.OpenSSLEngine;
import android.test.AndroidTestCase;
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 45a8b995678d..d703642cf7fe 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -171,7 +171,7 @@ final public class MediaCodec {
* <li>"audio/3gpp" - AMR narrowband audio
* <li>"audio/amr-wb" - AMR wideband audio
* <li>"audio/mpeg" - MPEG1/2 audio layer III
- * <li>"audio/mp4a-latm" - AAC audio
+ * <li>"audio/mp4a-latm" - AAC audio (note, this is raw AAC packets, not packaged in LATM!)
* <li>"audio/vorbis" - vorbis audio
* <li>"audio/g711-alaw" - G.711 alaw audio
* <li>"audio/g711-mlaw" - G.711 ulaw audio
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index f74516366b09..b729640a7f65 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -16,9 +16,14 @@
package android.media;
+import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.AssetFileDescriptor;
+import android.net.Proxy;
+import android.net.ProxyProperties;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
@@ -864,6 +869,7 @@ public class MediaPlayer
*/
public void setDataSource(Context context, Uri uri, Map<String, String> headers)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
+ disableProxyListener();
String scheme = uri.getScheme();
if(scheme == null || scheme.equals("file")) {
@@ -896,8 +902,13 @@ public class MediaPlayer
}
Log.d(TAG, "Couldn't open file on client side, trying server side");
+
setDataSource(uri.toString(), headers);
- return;
+
+ if (scheme.equalsIgnoreCase("http")
+ || scheme.equalsIgnoreCase("https")) {
+ setupProxyListener(context);
+ }
}
/**
@@ -948,6 +959,8 @@ public class MediaPlayer
private void setDataSource(String path, String[] keys, String[] values)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
+ disableProxyListener();
+
final Uri uri = Uri.parse(path);
if ("file".equals(uri.getScheme())) {
path = uri.getPath();
@@ -991,7 +1004,13 @@ public class MediaPlayer
* @param length the length in bytes of the data to be played
* @throws IllegalStateException if it is called in an invalid state
*/
- public native void setDataSource(FileDescriptor fd, long offset, long length)
+ public void setDataSource(FileDescriptor fd, long offset, long length)
+ throws IOException, IllegalArgumentException, IllegalStateException {
+ disableProxyListener();
+ _setDataSource(fd, offset, length);
+ }
+
+ private native void _setDataSource(FileDescriptor fd, long offset, long length)
throws IOException, IllegalArgumentException, IllegalStateException;
/**
@@ -1332,6 +1351,8 @@ public class MediaPlayer
_reset();
// make sure none of the listeners get called anymore
mEventHandler.removeCallbacksAndMessages(null);
+
+ disableProxyListener();
}
private native void _reset();
@@ -2449,4 +2470,57 @@ public class MediaPlayer
return (mode == VIDEO_SCALING_MODE_SCALE_TO_FIT ||
mode == VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
}
+
+ private Context mProxyContext = null;
+ private ProxyReceiver mProxyReceiver = null;
+
+ private void setupProxyListener(Context context) {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(Proxy.PROXY_CHANGE_ACTION);
+ mProxyReceiver = new ProxyReceiver();
+ mProxyContext = context;
+
+ Intent currentProxy =
+ context.getApplicationContext().registerReceiver(mProxyReceiver, filter);
+
+ if (currentProxy != null) {
+ handleProxyBroadcast(currentProxy);
+ }
+ }
+
+ private void disableProxyListener() {
+ if (mProxyReceiver == null) {
+ return;
+ }
+
+ Context appContext = mProxyContext.getApplicationContext();
+ if (appContext != null) {
+ appContext.unregisterReceiver(mProxyReceiver);
+ }
+
+ mProxyReceiver = null;
+ mProxyContext = null;
+ }
+
+ private void handleProxyBroadcast(Intent intent) {
+ ProxyProperties props =
+ (ProxyProperties)intent.getExtra(Proxy.EXTRA_PROXY_INFO);
+
+ if (props == null || props.getHost() == null) {
+ updateProxyConfig(null);
+ } else {
+ updateProxyConfig(props);
+ }
+ }
+
+ private class ProxyReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(Proxy.PROXY_CHANGE_ACTION)) {
+ handleProxyBroadcast(intent);
+ }
+ }
+ }
+
+ private native void updateProxyConfig(ProxyProperties props);
}
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java
index 031326ea138e..52c0c2d9f5fa 100644
--- a/media/java/android/media/audiofx/AudioEffect.java
+++ b/media/java/android/media/audiofx/AudioEffect.java
@@ -193,10 +193,14 @@ public class AudioEffect {
* The effect descriptor contains information on a particular effect implemented in the
* audio framework:<br>
* <ul>
- * <li>type: UUID identifying the effect type</li>
+ * <li>type: UUID identifying the effect type. May be one of:
+ * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC},
+ * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
+ * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
+ * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB}, {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}.
+ * </li>
* <li>uuid: UUID for this particular implementation</li>
- * <li>connectMode: {@link #EFFECT_INSERT}, {@link #EFFECT_AUXILIARY} or
- * {at_link #EFFECT_PRE_PROCESSING}</li>
+ * <li>connectMode: {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}</li>
* <li>name: human readable effect name</li>
* <li>implementor: human readable effect implementor name</li>
* </ul>
@@ -208,6 +212,19 @@ public class AudioEffect {
public Descriptor() {
}
+ /**
+ * @param type UUID identifying the effect type. May be one of:
+ * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC},
+ * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
+ * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
+ * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB},
+ * {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER}.
+ * @param uuid UUID for this particular implementation
+ * @param connectMode {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}
+ * @param name human readable effect name
+ * @param implementor human readable effect implementor name
+ *
+ */
public Descriptor(String type, String uuid, String connectMode,
String name, String implementor) {
this.type = UUID.fromString(type);
@@ -234,13 +251,14 @@ public class AudioEffect {
*/
public UUID uuid;
/**
- * Indicates if the effect is of insert category {@link #EFFECT_INSERT}, auxiliary
- * category {@link #EFFECT_AUXILIARY} or pre processing category
- * {at_link #EFFECT_PRE_PROCESSING}. Insert effects (Typically an Equalizer) are applied
+ * Indicates if the effect is of insert category {@link #EFFECT_INSERT} or auxiliary
+ * category {@link #EFFECT_AUXILIARY}.
+ * Insert effects (typically an {@link Equalizer}) are applied
* to the entire audio source and usually not shared by several sources. Auxiliary effects
* (typically a reverberator) are applied to part of the signal (wet) and the effect output
* is added to the original signal (dry).
- * Audio pre processing are applied to audio captured on a particular AudioRecord.
+ * Audio pre processing are applied to audio captured on a particular
+ * {@link android.media.AudioRecord}.
*/
public String connectMode;
/**
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index c5098ce1c7f2..7c607ea36718 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -55,6 +55,10 @@ struct fields_t {
jfieldID surface_texture;
jmethodID post_event;
+
+ jmethodID proxyConfigGetHost;
+ jmethodID proxyConfigGetPort;
+ jmethodID proxyConfigGetExclusionList;
};
static fields_t fields;
@@ -622,6 +626,20 @@ android_media_MediaPlayer_native_init(JNIEnv *env)
if (fields.surface_texture == NULL) {
return;
}
+
+ clazz = env->FindClass("android/net/ProxyProperties");
+ if (clazz == NULL) {
+ return;
+ }
+
+ fields.proxyConfigGetHost =
+ env->GetMethodID(clazz, "getHost", "()Ljava/lang/String;");
+
+ fields.proxyConfigGetPort =
+ env->GetMethodID(clazz, "getPort", "()I");
+
+ fields.proxyConfigGetExclusionList =
+ env->GetMethodID(clazz, "getExclusionList", "()Ljava/lang/String;");
}
static void
@@ -823,6 +841,49 @@ android_media_MediaPlayer_setNextMediaPlayer(JNIEnv *env, jobject thiz, jobject
;
}
+static void
+android_media_MediaPlayer_updateProxyConfig(
+ JNIEnv *env, jobject thiz, jobject proxyProps)
+{
+ ALOGV("updateProxyConfig");
+ sp<MediaPlayer> thisplayer = getMediaPlayer(env, thiz);
+ if (thisplayer == NULL) {
+ return;
+ }
+
+ if (proxyProps == NULL) {
+ thisplayer->updateProxyConfig(
+ NULL /* host */, 0 /* port */, NULL /* exclusionList */);
+ } else {
+ jstring hostObj = (jstring)env->CallObjectMethod(
+ proxyProps, fields.proxyConfigGetHost);
+
+ const char *host = env->GetStringUTFChars(hostObj, NULL);
+
+ int port = env->CallIntMethod(proxyProps, fields.proxyConfigGetPort);
+
+ jstring exclusionListObj = (jstring)env->CallObjectMethod(
+ proxyProps, fields.proxyConfigGetExclusionList);
+
+ const char *exclusionList =
+ env->GetStringUTFChars(exclusionListObj, NULL);
+
+ if (host != NULL && exclusionListObj != NULL) {
+ thisplayer->updateProxyConfig(host, port, exclusionList);
+ }
+
+ if (exclusionList != NULL) {
+ env->ReleaseStringUTFChars(exclusionListObj, exclusionList);
+ exclusionList = NULL;
+ }
+
+ if (host != NULL) {
+ env->ReleaseStringUTFChars(hostObj, host);
+ host = NULL;
+ }
+ }
+}
+
// ----------------------------------------------------------------------------
static JNINativeMethod gMethods[] = {
@@ -832,7 +893,7 @@ static JNINativeMethod gMethods[] = {
(void *)android_media_MediaPlayer_setDataSourceAndHeaders
},
- {"setDataSource", "(Ljava/io/FileDescriptor;JJ)V", (void *)android_media_MediaPlayer_setDataSourceFD},
+ {"_setDataSource", "(Ljava/io/FileDescriptor;JJ)V", (void *)android_media_MediaPlayer_setDataSourceFD},
{"_setVideoSurface", "(Landroid/view/Surface;)V", (void *)android_media_MediaPlayer_setVideoSurface},
{"prepare", "()V", (void *)android_media_MediaPlayer_prepare},
{"prepareAsync", "()V", (void *)android_media_MediaPlayer_prepareAsync},
@@ -867,6 +928,7 @@ static JNINativeMethod gMethods[] = {
{"getParameter", "(ILandroid/os/Parcel;)V", (void *)android_media_MediaPlayer_getParameter},
{"native_setRetransmitEndpoint", "(Ljava/lang/String;I)I", (void *)android_media_MediaPlayer_setRetransmitEndpoint},
{"setNextMediaPlayer", "(Landroid/media/MediaPlayer;)V", (void *)android_media_MediaPlayer_setNextMediaPlayer},
+ {"updateProxyConfig", "(Landroid/net/ProxyProperties;)V", (void *)android_media_MediaPlayer_updateProxyConfig},
};
static const char* const kClassPathName = "android/media/MediaPlayer";
diff --git a/native/android/input.cpp b/native/android/input.cpp
index 7ac73c7ffaa1..f6ea5769869f 100644
--- a/native/android/input.cpp
+++ b/native/android/input.cpp
@@ -191,73 +191,73 @@ size_t AMotionEvent_getHistorySize(const AInputEvent* motion_event) {
return static_cast<const MotionEvent*>(motion_event)->getHistorySize();
}
-int64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event,
+int64_t AMotionEvent_getHistoricalEventTime(const AInputEvent* motion_event,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(
history_index);
}
-float AMotionEvent_getHistoricalRawX(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalRawX(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalRawY(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalRawY(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalX(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalX(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalY(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalY(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalPressure(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalSize(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalSize(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalTouchMajor(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalTouchMajor(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMajor(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalTouchMinor(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalTouchMinor(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMinor(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalToolMajor(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalToolMajor(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMajor(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalToolMinor(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalToolMinor(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMinor(
pointer_index, history_index);
}
-float AMotionEvent_getHistoricalOrientation(AInputEvent* motion_event, size_t pointer_index,
+float AMotionEvent_getHistoricalOrientation(const AInputEvent* motion_event, size_t pointer_index,
size_t history_index) {
return static_cast<const MotionEvent*>(motion_event)->getHistoricalOrientation(
pointer_index, history_index);
diff --git a/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm
new file mode 100644
index 000000000000..140c7acc031b
--- /dev/null
+++ b/packages/InputDevices/res/raw/keyboard_layout_brazilian.kcm
@@ -0,0 +1,339 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# Brazilian keyboard layout.
+#
+
+type OVERLAY
+
+map key 86 PLUS
+map key 89 RO
+
+### ROW 1
+
+key GRAVE {
+ label: '\''
+ base: '\''
+ shift: '"'
+}
+
+key 1 {
+ label: '1'
+ base: '1'
+ shift: '!'
+ ralt: '\u00b9'
+}
+
+key 2 {
+ label: '2'
+ base: '2'
+ shift: '@'
+ ralt: '\u00b2'
+}
+
+key 3 {
+ label: '3'
+ base: '3'
+ shift: '#'
+ ralt: '\u00b3'
+}
+
+key 4 {
+ label: '4'
+ base: '4'
+ shift: '$'
+ ralt: '\u00a3'
+}
+
+key 5 {
+ label: '5'
+ base: '5'
+ shift: '%'
+ ralt: '\u00a2'
+}
+
+key 6 {
+ label: '6'
+ base: '6'
+ shift: '\u0308'
+ ralt: '\u00ac'
+}
+
+key 7 {
+ label: '7'
+ base: '7'
+ shift: '&'
+}
+
+key 8 {
+ label: '8'
+ base: '8'
+ shift: '*'
+}
+
+key 9 {
+ label: '9'
+ base: '9'
+ shift: '('
+}
+
+key 0 {
+ label: '0'
+ base: '0'
+ shift: ')'
+ ralt: '}'
+}
+
+key MINUS {
+ label: '-'
+ base: '-'
+ shift: '_'
+}
+
+key EQUALS {
+ label: '='
+ base: '='
+ shift: '+'
+ ralt: '\u00a7'
+}
+
+### ROW 2
+
+key Q {
+ label: 'Q'
+ base: 'q'
+ shift, capslock: 'Q'
+ ralt: '/'
+}
+
+key W {
+ label: 'W'
+ base: 'w'
+ shift, capslock: 'W'
+ ralt: '?'
+}
+
+key E {
+ label: 'E'
+ base: 'e'
+ shift, capslock: 'E'
+ ralt: '\u20ac'
+}
+
+key R {
+ label: 'R'
+ base: 'r'
+ shift, capslock: 'R'
+}
+
+key T {
+ label: 'T'
+ base: 't'
+ shift, capslock: 'T'
+}
+
+key Y {
+ label: 'Y'
+ base: 'y'
+ shift, capslock: 'Y'
+}
+
+key U {
+ label: 'U'
+ base: 'u'
+ shift, capslock: 'U'
+}
+
+key I {
+ label: 'I'
+ base: 'i'
+ shift, capslock: 'I'
+}
+
+key O {
+ label: 'O'
+ base: 'o'
+ shift, capslock: 'O'
+}
+
+key P {
+ label: 'P'
+ base: 'p'
+ shift, capslock: 'P'
+}
+
+key LEFT_BRACKET {
+ label: '\u00b4'
+ base: '\u0301'
+ shift: '\u0300'
+}
+
+key RIGHT_BRACKET {
+ label: '['
+ base: '['
+ shift: '{'
+ ralt: '\u00aa'
+}
+
+### ROW 3
+
+key A {
+ label: 'A'
+ base: 'a'
+ shift, capslock: 'A'
+}
+
+key S {
+ label: 'S'
+ base: 's'
+ shift, capslock: 'S'
+}
+
+key D {
+ label: 'D'
+ base: 'd'
+ shift, capslock: 'D'
+}
+
+key F {
+ label: 'F'
+ base: 'f'
+ shift, capslock: 'F'
+}
+
+key G {
+ label: 'G'
+ base: 'g'
+ shift, capslock: 'G'
+}
+
+key H {
+ label: 'H'
+ base: 'h'
+ shift, capslock: 'H'
+}
+
+key J {
+ label: 'J'
+ base: 'j'
+ shift, capslock: 'J'
+}
+
+key K {
+ label: 'K'
+ base: 'k'
+ shift, capslock: 'K'
+}
+
+key L {
+ label: 'L'
+ base: 'l'
+ shift, capslock: 'L'
+}
+
+key SEMICOLON {
+ label: '\u00c7'
+ base: '\u00e7'
+ shift, capslock: '\u00c7'
+}
+
+key APOSTROPHE {
+ label: '\u02dc'
+ base: '\u0303'
+ shift: '\u0302'
+}
+
+key BACKSLASH {
+ label: ']'
+ base: ']'
+ shift, capslock: '}'
+ ralt: '\u00ba'
+}
+
+### ROW 4
+
+key PLUS {
+ label: '\\'
+ base: '\\'
+ shift: '|'
+}
+
+key Z {
+ label: 'Z'
+ base: 'z'
+ shift, capslock: 'Z'
+}
+
+key X {
+ label: 'X'
+ base: 'x'
+ shift, capslock: 'X'
+}
+
+key C {
+ label: 'C'
+ base: 'c'
+ shift, capslock: 'C'
+ ralt: '\u20a2'
+}
+
+key V {
+ label: 'V'
+ base: 'v'
+ shift, capslock: 'V'
+}
+
+key B {
+ label: 'B'
+ base: 'b'
+ shift, capslock: 'B'
+}
+
+key N {
+ label: 'N'
+ base: 'n'
+ shift, capslock: 'N'
+}
+
+key M {
+ label: 'M'
+ base: 'm'
+ shift, capslock: 'M'
+}
+
+key COMMA {
+ label: ','
+ base: ','
+ shift: '<'
+}
+
+key PERIOD {
+ label: '.'
+ base: '.'
+ shift: '>'
+}
+
+key SLASH {
+ label: ';'
+ base: ';'
+ shift: ':'
+}
+
+key RO {
+ label: '/'
+ base: '/'
+ shift: '?'
+ ralt: '\u00b0'
+}
diff --git a/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm
new file mode 100644
index 000000000000..0fabf02e5d2d
--- /dev/null
+++ b/packages/InputDevices/res/raw/keyboard_layout_english_us_intl.kcm
@@ -0,0 +1,379 @@
+# Copyright (C) 2013 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# English (US) International keyboard layout.
+#
+
+type OVERLAY
+
+map key 86 PLUS
+
+### ROW 1
+
+key GRAVE {
+ label: '\u0300'
+ base: '\u0300'
+ shift: '\u0303'
+}
+
+key 1 {
+ label: '1'
+ base: '1'
+ shift: '!'
+ ralt: '\u00a1'
+ ralt+shift: '\u00b9'
+}
+
+key 2 {
+ label: '2'
+ base: '2'
+ shift: '@'
+ ralt: '\u00b2'
+}
+
+key 3 {
+ label: '3'
+ base: '3'
+ shift: '#'
+ ralt: '\u00b3'
+}
+
+key 4 {
+ label: '4'
+ base: '4'
+ shift: '$'
+ ralt: '\u00a4'
+ ralt+shift: '\u00a3'
+}
+
+key 5 {
+ label: '5'
+ base: '5'
+ shift: '%'
+ ralt: '\u20ac'
+}
+
+key 6 {
+ label: '6'
+ base: '6'
+ shift: '\u0302'
+ ralt: '\u00bc'
+}
+
+key 7 {
+ label: '7'
+ base: '7'
+ shift: '&'
+ ralt: '\u00bd'
+}
+
+key 8 {
+ label: '8'
+ base: '8'
+ shift: '*'
+ ralt: '\u00be'
+}
+
+key 9 {
+ label: '9'
+ base: '9'
+ shift: '('
+ ralt: '\u2018'
+}
+
+key 0 {
+ label: '0'
+ base: '0'
+ shift: ')'
+ ralt: '\u2019'
+}
+
+key MINUS {
+ label: '-'
+ base: '-'
+ shift: '_'
+ ralt: '\u00a5'
+}
+
+key EQUALS {
+ label: '='
+ base: '='
+ shift: '+'
+ ralt: '\u00d7'
+ shift+ralt: '\u00f7'
+}
+
+### ROW 2
+
+key Q {
+ label: 'Q'
+ base: 'q'
+ shift, capslock: 'Q'
+ ralt: '\u00e4'
+ shift+ralt: '\u00c4'
+}
+
+key W {
+ label: 'W'
+ base: 'w'
+ shift, capslock: 'W'
+ ralt: '\u00e5'
+ shift+ralt: '\u00c5'
+}
+
+key E {
+ label: 'E'
+ base: 'e'
+ shift, capslock: 'E'
+ ralt: '\u00e9'
+ shift+ralt: '\u00c9'
+}
+
+key R {
+ label: 'R'
+ base: 'r'
+ shift, capslock: 'R'
+ ralt: '\u00ae'
+}
+
+key T {
+ label: 'T'
+ base: 't'
+ shift, capslock: 'T'
+ ralt: '\u00fe'
+ shift+ralt: '\u00de'
+}
+
+key Y {
+ label: 'Y'
+ base: 'y'
+ shift, capslock: 'Y'
+ ralt: '\u00fc'
+ shift+ralt: '\u00dc'
+}
+
+key U {
+ label: 'U'
+ base: 'u'
+ shift, capslock: 'U'
+ ralt: '\u00fa'
+ shift+ralt: '\u00da'
+}
+
+key I {
+ label: 'I'
+ base: 'i'
+ shift, capslock: 'I'
+ ralt: '\u00ed'
+ shift+ralt: '\u00cd'
+}
+
+key O {
+ label: 'O'
+ base: 'o'
+ shift, capslock: 'O'
+ ralt: '\u00f3'
+ shift+ralt: '\u00d3'
+}
+
+key P {
+ label: 'P'
+ base: 'p'
+ shift, capslock: 'P'
+ ralt: '\u00f6'
+ shift+ralt: '\u00d6'
+}
+
+key LEFT_BRACKET {
+ label: '['
+ base: '['
+ shift: '{'
+ ralt: '\u00ab'
+}
+
+key RIGHT_BRACKET {
+ label: ']'
+ base: ']'
+ shift: '}'
+ ralt: '\u00bb'
+}
+
+key BACKSLASH {
+ label: '\\'
+ base: '\\'
+ shift: '|'
+ ralt: '\u00ac'
+ shift+ralt: '\u00a6'
+}
+
+### ROW 3
+
+key A {
+ label: 'A'
+ base: 'a'
+ shift, capslock: 'A'
+ ralt: '\u00e1'
+ shift+ralt: '\u00c1'
+}
+
+key S {
+ label: 'S'
+ base: 's'
+ shift, capslock: 'S'
+ ralt: '\u00df'
+ shift+ralt: '\u00a7'
+}
+
+key D {
+ label: 'D'
+ base: 'd'
+ shift, capslock: 'D'
+ ralt: '\u00f0'
+ shift+ralt: '\u00d0'
+}
+
+key F {
+ label: 'F'
+ base: 'f'
+ shift, capslock: 'F'
+}
+
+key G {
+ label: 'G'
+ base: 'g'
+ shift, capslock: 'G'
+}
+
+key H {
+ label: 'H'
+ base: 'h'
+ shift, capslock: 'H'
+}
+
+key J {
+ label: 'J'
+ base: 'j'
+ shift, capslock: 'J'
+}
+
+key K {
+ label: 'K'
+ base: 'k'
+ shift, capslock: 'K'
+}
+
+key L {
+ label: 'L'
+ base: 'l'
+ shift, capslock: 'L'
+ ralt: '\u00f8'
+ shift+ralt: '\u00d8'
+}
+
+key SEMICOLON {
+ label: ';'
+ base: ';'
+ shift: ':'
+ ralt: '\u00b6'
+ shift+ralt: '\u00b0'
+}
+
+key APOSTROPHE {
+ label: '\''
+ base: '\''
+ shift: '"'
+ ralt: '\u0301'
+ shift+ralt: '\u0308'
+}
+
+### ROW 4
+
+key PLUS {
+ label: '\\'
+ base: '\\'
+ shift: '|'
+ ralt: '\u00ac'
+ shift+ralt: '\u00a6'
+}
+
+key Z {
+ label: 'Z'
+ base: 'z'
+ shift, capslock: 'Z'
+ ralt: '\u00e6'
+ shift+ralt: '\u00c6'
+}
+
+key X {
+ label: 'X'
+ base: 'x'
+ shift, capslock: 'X'
+}
+
+key C {
+ label: 'C'
+ base: 'c'
+ shift, capslock: 'C'
+ ralt: '\u00a9'
+ shift+ralt: '\u00a2'
+}
+
+key V {
+ label: 'V'
+ base: 'v'
+ shift, capslock: 'V'
+}
+
+key B {
+ label: 'B'
+ base: 'b'
+ shift, capslock: 'B'
+}
+
+key N {
+ label: 'N'
+ base: 'n'
+ shift, capslock: 'N'
+ ralt: '\u00f1'
+ shift+ralt: '\u00d1'
+}
+
+key M {
+ label: 'M'
+ base: 'm'
+ shift, capslock: 'M'
+ ralt: '\u00b5'
+}
+
+key COMMA {
+ label: ','
+ base: ','
+ shift: '<'
+ ralt: '\u00e7'
+ shift+ralt: '\u00c7'
+}
+
+key PERIOD {
+ label: '.'
+ base: '.'
+ shift: '>'
+}
+
+key SLASH {
+ label: '/'
+ base: '/'
+ shift: '?'
+ ralt: '\u00bf'
+}
diff --git a/packages/InputDevices/res/values/strings.xml b/packages/InputDevices/res/values/strings.xml
index 65d33047afa5..32c665a2ee9b 100644
--- a/packages/InputDevices/res/values/strings.xml
+++ b/packages/InputDevices/res/values/strings.xml
@@ -12,6 +12,9 @@
<!-- US English keyboard layout label. [CHAR LIMIT=35] -->
<string name="keyboard_layout_english_us_label">English (US)</string>
+ <!-- US English (International style) keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_english_us_intl">English (US), International style</string>
+
<!-- US English (Dvorak style) keyboard layout label. [CHAR LIMIT=35] -->
<string name="keyboard_layout_english_us_dvorak_label">English (US), Dvorak style</string>
@@ -75,6 +78,9 @@
<!-- Icelandic keyboard layout label. [CHAR LIMIT=35] -->
<string name="keyboard_layout_icelandic">Icelandic</string>
+ <!-- Brazilian keyboard layout label. [CHAR LIMIT=35] -->
+ <string name="keyboard_layout_brazilian">Brazilian</string>
+
<!-- Portuguese keyboard layout label. [CHAR LIMIT=35] -->
<string name="keyboard_layout_portuguese">Portuguese</string>
diff --git a/packages/InputDevices/res/xml/keyboard_layouts.xml b/packages/InputDevices/res/xml/keyboard_layouts.xml
index 3cfa1709c5e3..ffd1a235abef 100644
--- a/packages/InputDevices/res/xml/keyboard_layouts.xml
+++ b/packages/InputDevices/res/xml/keyboard_layouts.xml
@@ -8,6 +8,10 @@
android:label="@string/keyboard_layout_english_us_label"
android:keyboardLayout="@raw/keyboard_layout_english_us" />
+ <keyboard-layout android:name="keyboard_layout_english_us_intl"
+ android:label="@string/keyboard_layout_english_us_intl"
+ android:keyboardLayout="@raw/keyboard_layout_english_us_intl" />
+
<keyboard-layout android:name="keyboard_layout_english_us_dvorak"
android:label="@string/keyboard_layout_english_us_dvorak_label"
android:keyboardLayout="@raw/keyboard_layout_english_us_dvorak" />
@@ -92,6 +96,10 @@
android:label="@string/keyboard_layout_icelandic"
android:keyboardLayout="@raw/keyboard_layout_icelandic" />
+ <keyboard-layout android:name="keyboard_layout_brazilian"
+ android:label="@string/keyboard_layout_brazilian"
+ android:keyboardLayout="@raw/keyboard_layout_brazilian" />
+
<keyboard-layout android:name="keyboard_layout_portuguese"
android:label="@string/keyboard_layout_portuguese"
android:keyboardLayout="@raw/keyboard_layout_portuguese" />
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..1a5a8aa4ab4f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..cceab0ad0393
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..e377608bac25
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-hdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..d619f6b440f9
--- /dev/null
+++ b/packages/SystemUI/res/drawable-hdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..515788ac7f80
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..58327c1fd852
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..66dc6940fabc
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..80784248c750
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-hdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..50e5011b92d9
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..bb1de0632be1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..6de14dca4db7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..17ca21a77a6a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-mdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..0d344b968800
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..ac010bf381dd
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..b704cdf31bb1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..3cb8f3e079c1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-ldrtl-xhdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..d819f5cd742b
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..bb1de0632be1
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..6de14dca4db7
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-mdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..17ca21a77a6a
--- /dev/null
+++ b/packages/SystemUI/res/drawable-mdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_full_lte.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_full_lte.png
new file mode 100644
index 000000000000..75c5c72d5811
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_full_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_lte.png b/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_lte.png
new file mode 100644
index 000000000000..402db439d3de
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/ic_qs_signal_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_connected_lte.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_connected_lte.png
new file mode 100644
index 000000000000..7a59975300e2
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_fully_connected_lte.png b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_fully_connected_lte.png
new file mode 100644
index 000000000000..84348add5943
--- /dev/null
+++ b/packages/SystemUI/res/drawable-xhdpi/stat_sys_data_fully_connected_lte.png
Binary files differ
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index a27630db17fe..4c81c886cb7d 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -102,5 +102,8 @@
<!-- Enable the "flip settings" panel -->
<bool name="config_hasFlipSettingsPanel">true</bool>
+
+ <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? -->
+ <bool name="config_show4GForLTE">false</bool>
</resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index f3db062a04d5..5767e63a0cfd 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -320,6 +320,9 @@
<!-- Content description of the data connection type 4G for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_data_connection_4g">4G</string>
+ <!-- Content description of the data connection type LTE for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
+ <string name="accessibility_data_connection_lte">LTE</string>
+
<!-- Content description of the data connection type CDMA for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_data_connection_cdma">CDMA</string>
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 36195871ee4f..da5f767be4c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -90,6 +90,7 @@ public class NetworkController extends BroadcastReceiver {
boolean mShowPhoneRSSIForData = false;
boolean mShowAtLeastThreeGees = false;
boolean mAlwaysShowCdmaRssi = false;
+ boolean mShow4GforLTE = false;
String mContentDescriptionPhoneSignal;
String mContentDescriptionWifi;
@@ -199,6 +200,7 @@ public class NetworkController extends BroadcastReceiver {
mShowPhoneRSSIForData = res.getBoolean(R.bool.config_showPhoneRSSIForData);
mShowAtLeastThreeGees = res.getBoolean(R.bool.config_showMin3G);
+ mShow4GforLTE = res.getBoolean(R.bool.config_show4GForLTE);
mAlwaysShowCdmaRssi = res.getBoolean(
com.android.internal.R.bool.config_alwaysUseCdmaRssi);
@@ -678,11 +680,19 @@ public class NetworkController extends BroadcastReceiver {
R.string.accessibility_data_connection_3g);
break;
case TelephonyManager.NETWORK_TYPE_LTE:
- mDataIconList = TelephonyIcons.DATA_4G[mInetCondition];
- mDataTypeIconId = R.drawable.stat_sys_data_connected_4g;
- mQSDataTypeIconId = R.drawable.ic_qs_signal_4g;
- mContentDescriptionDataType = mContext.getString(
- R.string.accessibility_data_connection_4g);
+ if (mShow4GforLTE) {
+ mDataIconList = TelephonyIcons.DATA_4G[mInetCondition];
+ mDataTypeIconId = R.drawable.stat_sys_data_connected_4g;
+ mQSDataTypeIconId = R.drawable.ic_qs_signal_4g;
+ mContentDescriptionDataType = mContext.getString(
+ R.string.accessibility_data_connection_4g);
+ } else {
+ mDataIconList = TelephonyIcons.DATA_LTE[mInetCondition];
+ mDataTypeIconId = R.drawable.stat_sys_data_connected_lte;
+ mQSDataTypeIconId = R.drawable.ic_qs_signal_lte;
+ mContentDescriptionDataType = mContext.getString(
+ R.string.accessibility_data_connection_lte);
+ }
break;
default:
if (!mShowAtLeastThreeGees) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index 3b953a01aa55..4b2c65e67bc6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -136,6 +136,17 @@ class TelephonyIcons {
R.drawable.stat_sys_data_fully_connected_4g }
};
+ // LTE branded "LTE"
+ static final int[][] DATA_LTE = {
+ { R.drawable.stat_sys_data_connected_lte,
+ R.drawable.stat_sys_data_connected_lte,
+ R.drawable.stat_sys_data_connected_lte,
+ R.drawable.stat_sys_data_connected_lte },
+ { R.drawable.stat_sys_data_fully_connected_lte,
+ R.drawable.stat_sys_data_fully_connected_lte,
+ R.drawable.stat_sys_data_fully_connected_lte,
+ R.drawable.stat_sys_data_fully_connected_lte }
+ };
}
diff --git a/preloaded-classes b/preloaded-classes
index 8e426c53f6f5..2aa610a362e9 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -1685,6 +1685,120 @@ com.android.org.bouncycastle.util.encoders.Hex
com.android.org.bouncycastle.util.encoders.HexEncoder
com.android.org.bouncycastle.util.io.Streams
com.android.org.bouncycastle.x509.ExtendedPKIXParameters
+com.android.org.conscrypt.AbstractSessionContext
+com.android.org.conscrypt.AbstractSessionContext$1
+com.android.org.conscrypt.ByteArray
+com.android.org.conscrypt.CertPinManager
+com.android.org.conscrypt.ChainStrengthAnalyzer
+com.android.org.conscrypt.ClientSessionContext
+com.android.org.conscrypt.ClientSessionContext$HostAndPort
+com.android.org.conscrypt.DefaultSSLContextImpl
+com.android.org.conscrypt.FileClientSessionCache
+com.android.org.conscrypt.FileClientSessionCache$Impl
+com.android.org.conscrypt.JSSEProvider
+com.android.org.conscrypt.KeyManagerFactoryImpl
+com.android.org.conscrypt.KeyManagerImpl
+com.android.org.conscrypt.NativeCrypto
+com.android.org.conscrypt.NativeCrypto$SSLHandshakeCallbacks
+com.android.org.conscrypt.OpenSSLBIOInputStream
+com.android.org.conscrypt.OpenSSLCipher
+com.android.org.conscrypt.OpenSSLCipher$AES
+com.android.org.conscrypt.OpenSSLCipher$AES$CBC
+com.android.org.conscrypt.OpenSSLCipher$AES$CBC$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$AES$CBC$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$AES$CFB
+com.android.org.conscrypt.OpenSSLCipher$AES$CFB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$AES$CFB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$AES$CTR
+com.android.org.conscrypt.OpenSSLCipher$AES$CTR$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$AES$CTR$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$AES$ECB
+com.android.org.conscrypt.OpenSSLCipher$AES$ECB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$AES$ECB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$AES$OFB
+com.android.org.conscrypt.OpenSSLCipher$AES$OFB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$AES$OFB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$ARC4
+com.android.org.conscrypt.OpenSSLCipher$DESEDE
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CBC$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$CFB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$ECB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$NoPadding
+com.android.org.conscrypt.OpenSSLCipher$DESEDE$OFB$PKCS5Padding
+com.android.org.conscrypt.OpenSSLCipherRSA
+com.android.org.conscrypt.OpenSSLCipherRSA$PKCS1
+com.android.org.conscrypt.OpenSSLCipherRSA$Raw
+com.android.org.conscrypt.OpenSSLContextImpl
+com.android.org.conscrypt.OpenSSLDSAKeyFactory
+com.android.org.conscrypt.OpenSSLDSAKeyPairGenerator
+com.android.org.conscrypt.OpenSSLECDHKeyAgreement
+com.android.org.conscrypt.OpenSSLECKeyFactory
+com.android.org.conscrypt.OpenSSLECKeyPairGenerator
+com.android.org.conscrypt.OpenSSLKey
+com.android.org.conscrypt.OpenSSLKeyHolder
+com.android.org.conscrypt.OpenSSLMac
+com.android.org.conscrypt.OpenSSLMac$HmacMD5
+com.android.org.conscrypt.OpenSSLMac$HmacSHA1
+com.android.org.conscrypt.OpenSSLMac$HmacSHA256
+com.android.org.conscrypt.OpenSSLMac$HmacSHA384
+com.android.org.conscrypt.OpenSSLMac$HmacSHA512
+com.android.org.conscrypt.OpenSSLMessageDigestJDK
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$MD5
+com.android.org.conscrypt.OpenSSLMessageDigestJDK$SHA1
+com.android.org.conscrypt.OpenSSLProvider
+com.android.org.conscrypt.OpenSSLRSAKeyFactory
+com.android.org.conscrypt.OpenSSLRSAKeyPairGenerator
+com.android.org.conscrypt.OpenSSLRSAPublicKey
+com.android.org.conscrypt.OpenSSLRandom
+com.android.org.conscrypt.OpenSSLSessionImpl
+com.android.org.conscrypt.OpenSSLSignature
+com.android.org.conscrypt.OpenSSLSignature$1
+com.android.org.conscrypt.OpenSSLSignature$EngineType
+com.android.org.conscrypt.OpenSSLSignature$MD5RSA
+com.android.org.conscrypt.OpenSSLSignature$SHA1DSA
+com.android.org.conscrypt.OpenSSLSignature$SHA1ECDSA
+com.android.org.conscrypt.OpenSSLSignature$SHA1RSA
+com.android.org.conscrypt.OpenSSLSignature$SHA256ECDSA
+com.android.org.conscrypt.OpenSSLSignature$SHA256RSA
+com.android.org.conscrypt.OpenSSLSignature$SHA384ECDSA
+com.android.org.conscrypt.OpenSSLSignature$SHA384RSA
+com.android.org.conscrypt.OpenSSLSignature$SHA512ECDSA
+com.android.org.conscrypt.OpenSSLSignature$SHA512RSA
+com.android.org.conscrypt.OpenSSLSignatureRawRSA
+com.android.org.conscrypt.OpenSSLSocketFactoryImpl
+com.android.org.conscrypt.OpenSSLSocketImpl
+com.android.org.conscrypt.OpenSSLSocketImpl$SSLInputStream
+com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream
+com.android.org.conscrypt.OpenSSLSocketImplWrapper
+com.android.org.conscrypt.OpenSSLX509CertPath
+com.android.org.conscrypt.OpenSSLX509CertPath$Encoding
+com.android.org.conscrypt.OpenSSLX509Certificate
+com.android.org.conscrypt.OpenSSLX509CertificateFactory
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$1
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$2
+com.android.org.conscrypt.OpenSSLX509CertificateFactory$Parser
+com.android.org.conscrypt.ProtocolVersion
+com.android.org.conscrypt.SSLClientSessionCache
+com.android.org.conscrypt.SSLContextImpl
+com.android.org.conscrypt.SSLParametersImpl
+com.android.org.conscrypt.ServerSessionContext
+com.android.org.conscrypt.TrustManagerFactoryImpl
+com.android.org.conscrypt.TrustManagerImpl
+com.android.org.conscrypt.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
+com.android.org.conscrypt.TrustedCertificateIndex
+com.android.org.conscrypt.TrustedCertificateKeyStoreSpi
+com.android.org.conscrypt.TrustedCertificateStore
+com.android.org.conscrypt.TrustedCertificateStore$1
+com.android.org.conscrypt.TrustedCertificateStore$2
+com.android.org.conscrypt.TrustedCertificateStore$3
+com.android.org.conscrypt.TrustedCertificateStore$CertSelector
com.android.server.NetworkManagementSocketTagger
com.android.server.NetworkManagementSocketTagger$1
com.android.server.NetworkManagementSocketTagger$SocketTags
@@ -2503,120 +2617,6 @@ org.apache.harmony.security.x509.Validity
org.apache.harmony.security.x509.Validity$1
org.apache.harmony.xml.ExpatAttributes
org.apache.harmony.xml.ExpatParser
-org.apache.harmony.xnet.provider.jsse.AbstractSessionContext
-org.apache.harmony.xnet.provider.jsse.AbstractSessionContext$1
-org.apache.harmony.xnet.provider.jsse.ByteArray
-org.apache.harmony.xnet.provider.jsse.CertPinManager
-org.apache.harmony.xnet.provider.jsse.ChainStrengthAnalyzer
-org.apache.harmony.xnet.provider.jsse.ClientSessionContext
-org.apache.harmony.xnet.provider.jsse.ClientSessionContext$HostAndPort
-org.apache.harmony.xnet.provider.jsse.DefaultSSLContextImpl
-org.apache.harmony.xnet.provider.jsse.FileClientSessionCache
-org.apache.harmony.xnet.provider.jsse.FileClientSessionCache$Impl
-org.apache.harmony.xnet.provider.jsse.JSSEProvider
-org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl
-org.apache.harmony.xnet.provider.jsse.KeyManagerImpl
-org.apache.harmony.xnet.provider.jsse.NativeCrypto
-org.apache.harmony.xnet.provider.jsse.NativeCrypto$SSLHandshakeCallbacks
-org.apache.harmony.xnet.provider.jsse.OpenSSLBIOInputStream
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CBC$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CFB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$CTR$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$ECB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$AES$OFB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$ARC4
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CBC$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$CFB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$ECB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB$NoPadding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipher$DESEDE$OFB$PKCS5Padding
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA$PKCS1
-org.apache.harmony.xnet.provider.jsse.OpenSSLCipherRSA$Raw
-org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLDSAKeyFactory
-org.apache.harmony.xnet.provider.jsse.OpenSSLDSAKeyPairGenerator
-org.apache.harmony.xnet.provider.jsse.OpenSSLECDHKeyAgreement
-org.apache.harmony.xnet.provider.jsse.OpenSSLECKeyFactory
-org.apache.harmony.xnet.provider.jsse.OpenSSLECKeyPairGenerator
-org.apache.harmony.xnet.provider.jsse.OpenSSLKey
-org.apache.harmony.xnet.provider.jsse.OpenSSLKeyHolder
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacMD5
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA1
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA256
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA384
-org.apache.harmony.xnet.provider.jsse.OpenSSLMac$HmacSHA512
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$MD5
-org.apache.harmony.xnet.provider.jsse.OpenSSLMessageDigestJDK$SHA1
-org.apache.harmony.xnet.provider.jsse.OpenSSLProvider
-org.apache.harmony.xnet.provider.jsse.OpenSSLRSAKeyFactory
-org.apache.harmony.xnet.provider.jsse.OpenSSLRSAKeyPairGenerator
-org.apache.harmony.xnet.provider.jsse.OpenSSLRSAPublicKey
-org.apache.harmony.xnet.provider.jsse.OpenSSLRandom
-org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$1
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$EngineType
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$MD5RSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1DSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1ECDSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA1RSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA256ECDSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA256RSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA384ECDSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA384RSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA512ECDSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignature$SHA512RSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSignatureRawRSA
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream
-org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImplWrapper
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertPath
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertPath$Encoding
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509Certificate
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$1
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$2
-org.apache.harmony.xnet.provider.jsse.OpenSSLX509CertificateFactory$Parser
-org.apache.harmony.xnet.provider.jsse.ProtocolVersion
-org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache
-org.apache.harmony.xnet.provider.jsse.SSLContextImpl
-org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
-org.apache.harmony.xnet.provider.jsse.ServerSessionContext
-org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl
-org.apache.harmony.xnet.provider.jsse.TrustManagerImpl
-org.apache.harmony.xnet.provider.jsse.TrustManagerImpl$ExtendedKeyUsagePKIXCertPathChecker
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateIndex
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateKeyStoreSpi
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$1
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$2
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$3
-org.apache.harmony.xnet.provider.jsse.TrustedCertificateStore$CertSelector
org.apache.http.ConnectionReuseStrategy
org.apache.http.FormattedHeader
org.apache.http.Header
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index c774763fafe4..e2297554e7d8 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -4252,8 +4252,8 @@ void TouchInputMapper::cookPointerData() {
bottom = float(mRawPointerAxes.x.maxValue - rawLeft) * mXScale + mXTranslate;
top = float(mRawPointerAxes.x.maxValue - rawRight) * mXScale + mXTranslate;
orientation -= M_PI_2;
- if (orientation < - M_PI_2) {
- orientation += M_PI;
+ if (orientation < mOrientedRanges.orientation.min) {
+ orientation += (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min);
}
break;
case DISPLAY_ORIENTATION_180:
@@ -4263,6 +4263,10 @@ void TouchInputMapper::cookPointerData() {
right = float(mRawPointerAxes.x.maxValue - rawLeft) * mXScale + mXTranslate;
bottom = float(mRawPointerAxes.y.maxValue - rawTop) * mYScale + mYTranslate;
top = float(mRawPointerAxes.y.maxValue - rawBottom) * mYScale + mYTranslate;
+ orientation -= M_PI;
+ if (orientation < mOrientedRanges.orientation.min) {
+ orientation += (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min);
+ }
break;
case DISPLAY_ORIENTATION_270:
x = float(mRawPointerAxes.y.maxValue - in.y) * mYScale + mYTranslate;
@@ -4272,8 +4276,8 @@ void TouchInputMapper::cookPointerData() {
bottom = float(rawRight - mRawPointerAxes.x.minValue) * mXScale + mXTranslate;
top = float(rawLeft - mRawPointerAxes.x.minValue) * mXScale + mXTranslate;
orientation += M_PI_2;
- if (orientation > M_PI_2) {
- orientation -= M_PI;
+ if (orientation > mOrientedRanges.orientation.max) {
+ orientation -= (mOrientedRanges.orientation.max - mOrientedRanges.orientation.min);
}
break;
default:
diff --git a/services/java/com/android/server/DevicePolicyManagerService.java b/services/java/com/android/server/DevicePolicyManagerService.java
index ab70e6f38111..7ecd2c0364e5 100644
--- a/services/java/com/android/server/DevicePolicyManagerService.java
+++ b/services/java/com/android/server/DevicePolicyManagerService.java
@@ -1664,7 +1664,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
if (realQuality < quality
&& quality != DevicePolicyManager.PASSWORD_QUALITY_COMPLEX) {
Slog.w(TAG, "resetPassword: password quality 0x"
- + Integer.toHexString(quality)
+ + Integer.toHexString(realQuality)
+ " does not meet required quality 0x"
+ Integer.toHexString(quality));
return false;
diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java
index 1dd5fc64039d..c91685710a50 100644
--- a/services/java/com/android/server/InputMethodManagerService.java
+++ b/services/java/com/android/server/InputMethodManagerService.java
@@ -1500,7 +1500,9 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
if (mStatusBar != null) {
mStatusBar.setImeWindowStatus(token, vis, backDisposition);
}
- final boolean iconVisibility = (vis & InputMethodService.IME_ACTIVE) != 0;
+ final boolean iconVisibility = ((vis & (InputMethodService.IME_ACTIVE)) != 0)
+ && (mWindowManagerService.isHardKeyboardAvailable()
+ || (vis & (InputMethodService.IME_VISIBLE)) != 0);
final InputMethodInfo imi = mMethodMap.get(mCurMethodId);
if (imi != null && iconVisibility && needsToShowImeSwitchOngoingNotification()) {
// Used to load label
diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java
index f402f4bd3dcc..e670ef9ba621 100644
--- a/services/java/com/android/server/MountService.java
+++ b/services/java/com/android/server/MountService.java
@@ -860,7 +860,7 @@ class MountService extends IMountService.Stub
if (DEBUG_EVENTS) Slog.i(TAG, "Sending unmounted event first");
/* Send the media unmounted event first */
updatePublicVolumeState(volume, Environment.MEDIA_UNMOUNTED);
- action = Intent.ACTION_MEDIA_UNMOUNTED;
+ sendStorageIntent(Intent.ACTION_MEDIA_UNMOUNTED, volume, UserHandle.ALL);
if (DEBUG_EVENTS) Slog.i(TAG, "Sending media bad removal");
updatePublicVolumeState(volume, Environment.MEDIA_BAD_REMOVAL);
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 0081dfc512d0..db016558a76b 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -6334,6 +6334,7 @@ public final class ActivityManagerService extends ActivityManagerNative
// it runs in the process of the default user. Get rid of it.
providers.remove(i);
N--;
+ i--;
continue;
}
diff --git a/services/java/com/android/server/pm/SELinuxMMAC.java b/services/java/com/android/server/pm/SELinuxMMAC.java
index 4bbdb5e26668..04f43d9676f7 100644
--- a/services/java/com/android/server/pm/SELinuxMMAC.java
+++ b/services/java/com/android/server/pm/SELinuxMMAC.java
@@ -57,7 +57,7 @@ public final class SELinuxMMAC {
// Locations of potential install policy files.
private static final File[] INSTALL_POLICY_FILE = {
- new File(Environment.getDataDirectory(), "system/mac_permissions.xml"),
+ new File(Environment.getDataDirectory(), "security/mac_permissions.xml"),
new File(Environment.getRootDirectory(), "etc/security/mac_permissions.xml"),
null};
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index bc442cef2e40..de72c2615005 100644
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -8943,10 +8943,31 @@ public class WindowManagerService extends IWindowManager.Stub
if (DEBUG_ORIENTATION &&
winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING) Slog.i(
TAG, "Resizing " + win + " WITH DRAW PENDING");
- win.mClient.resized(win.mFrame, win.mLastOverscanInsets, win.mLastContentInsets,
- win.mLastVisibleInsets,
- winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING,
- configChanged ? win.mConfiguration : null);
+ final IWindow client = win.mClient;
+ final Rect frame = win.mFrame;
+ final Rect overscanInsets = win.mLastOverscanInsets;
+ final Rect contentInsets = win.mLastContentInsets;
+ final Rect visibleInsets = win.mLastVisibleInsets;
+ final boolean reportDraw
+ = winAnimator.mDrawState == WindowStateAnimator.DRAW_PENDING;
+ final Configuration newConfig = configChanged ? win.mConfiguration : null;
+ if (win.mClient instanceof IWindow.Stub) {
+ // To prevent deadlock simulate one-way call if win.mClient is a local object.
+ mH.post(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ client.resized(frame, overscanInsets, contentInsets,
+ visibleInsets, reportDraw, newConfig);
+ } catch (RemoteException e) {
+ // Not a remote call, RemoteException won't be raised.
+ }
+ }
+ });
+ } else {
+ client.resized(frame, overscanInsets, contentInsets, visibleInsets, reportDraw,
+ newConfig);
+ }
win.mOverscanInsetsChanged = false;
win.mContentInsetsChanged = false;
win.mVisibleInsetsChanged = false;
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index 8b85d8ca7d88..3ae210636f84 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -152,6 +152,11 @@ public class PhoneNumberUtils
String number = null;
Uri uri = intent.getData();
+
+ if (uri == null) {
+ return null;
+ }
+
String scheme = uri.getScheme();
if (scheme.equals("tel") || scheme.equals("sip")) {
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index c14d61b898a7..26dde1e15e0f 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -130,10 +130,10 @@ public class TelephonyManager {
* call. By default, the MMS app consumes this message and sends a text message to the caller. A
* third party app can provide this functionality in lieu of MMS app by consuming this Intent
* and sending the message using their own messaging system. The intent contains a URI
- * describing the recipient, and an EXTRA containg the message itself.
- * <p>
+ * describing the recipient, and an EXTRA containing the message itself.
+ * <p class="note"><strong>Note:</strong>
* The intent-filter which consumes this Intent needs to be in a service which requires the
- * permission SEND_RESPOND_VIA_MESSAGE.
+ * permission {@link android.Manifest.permission#SEND_RESPOND_VIA_MESSAGE}.</p>
*
* <p>
* {@link android.content.Intent#getData} is a URI describing the recipient of the message.
diff --git a/tests/CoreTests/android/Android.mk b/tests/CoreTests/android/Android.mk
index 5abfc8821a6a..bc0e4e4ddaf8 100644
--- a/tests/CoreTests/android/Android.mk
+++ b/tests/CoreTests/android/Android.mk
@@ -6,7 +6,7 @@ LOCAL_MODULE_TAGS := tests
LOCAL_SRC_FILES := \
$(call all-subdir-java-files)
-LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle
+LOCAL_JAVA_LIBRARIES := android.test.runner bouncycastle conscrypt
LOCAL_PACKAGE_NAME := CoreTests
diff --git a/tests/CoreTests/android/core/SSLSocketTest.java b/tests/CoreTests/android/core/SSLSocketTest.java
index 03905e1743e9..b06790bc715d 100644
--- a/tests/CoreTests/android/core/SSLSocketTest.java
+++ b/tests/CoreTests/android/core/SSLSocketTest.java
@@ -18,10 +18,10 @@ package android.core;
import junit.framework.TestCase;
+import com.android.org.conscrypt.FileClientSessionCache;
+import com.android.org.conscrypt.OpenSSLContextImpl;
+import com.android.org.conscrypt.SSLClientSessionCache;
import org.apache.commons.codec.binary.Base64;
-import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache;
-import org.apache.harmony.xnet.provider.jsse.OpenSSLContextImpl;
-import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache;
import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index 32fecb29034c..977226b61471 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -48,6 +48,7 @@ void usage(void)
" List contents of Zip-compatible archive.\n\n", gProgName);
fprintf(stderr,
" %s d[ump] [--values] WHAT file.{apk} [asset [asset ...]]\n"
+ " strings Print the contents of the resource table string pool in the APK.\n"
" badging Print the label and icon for the app declared in APK.\n"
" permissions Print the permissions from the APK.\n"
" resources Print the resource table from the APK.\n"
diff --git a/wifi/java/android/net/wifi/SupplicantStateTracker.java b/wifi/java/android/net/wifi/SupplicantStateTracker.java
index f7fc795ae756..f6a621fa297c 100644
--- a/wifi/java/android/net/wifi/SupplicantStateTracker.java
+++ b/wifi/java/android/net/wifi/SupplicantStateTracker.java
@@ -45,6 +45,7 @@ class SupplicantStateTracker extends StateMachine {
private WifiStateMachine mWifiStateMachine;
private WifiConfigStore mWifiConfigStore;
private int mAuthenticationFailuresCount = 0;
+ private int mAssociationRejectCount = 0;
/* Indicates authentication failure in supplicant broadcast.
* TODO: enhance auth failure reporting to include notification
* for all type of failures: EAP, WPS & WPA networks */
@@ -53,6 +54,9 @@ class SupplicantStateTracker extends StateMachine {
/* Maximum retries on a authentication failure notification */
private static final int MAX_RETRIES_ON_AUTHENTICATION_FAILURE = 2;
+ /* Maximum retries on assoc rejection events */
+ private static final int MAX_RETRIES_ON_ASSOCIATION_REJECT = 4;
+
/* Tracks if networks have been disabled during a connection */
private boolean mNetworksDisabledDuringConnect = false;
@@ -89,14 +93,14 @@ class SupplicantStateTracker extends StateMachine {
start();
}
- private void handleNetworkConnectionFailure(int netId) {
+ private void handleNetworkConnectionFailure(int netId, int disableReason) {
/* If other networks disabled during connection, enable them */
if (mNetworksDisabledDuringConnect) {
mWifiConfigStore.enableAllNetworks();
mNetworksDisabledDuringConnect = false;
}
/* Disable failed network */
- mWifiConfigStore.disableNetwork(netId, WifiConfiguration.DISABLED_AUTH_FAILURE);
+ mWifiConfigStore.disableNetwork(netId, disableReason);
}
private void transitionOnSupplicantStateChange(StateChangeResult stateChangeResult) {
@@ -182,6 +186,10 @@ class SupplicantStateTracker extends StateMachine {
break;
case WifiManager.CONNECT_NETWORK:
mNetworksDisabledDuringConnect = true;
+ mAssociationRejectCount = 0;
+ break;
+ case WifiMonitor.ASSOCIATION_REJECTION_EVENT:
+ mAssociationRejectCount++;
break;
default:
Log.e(TAG, "Ignoring " + message);
@@ -226,9 +234,17 @@ class SupplicantStateTracker extends StateMachine {
if (mAuthenticationFailuresCount >= MAX_RETRIES_ON_AUTHENTICATION_FAILURE) {
Log.d(TAG, "Failed to authenticate, disabling network " +
stateChangeResult.networkId);
- handleNetworkConnectionFailure(stateChangeResult.networkId);
+ handleNetworkConnectionFailure(stateChangeResult.networkId,
+ WifiConfiguration.DISABLED_AUTH_FAILURE);
mAuthenticationFailuresCount = 0;
}
+ else if (mAssociationRejectCount >= MAX_RETRIES_ON_ASSOCIATION_REJECT) {
+ Log.d(TAG, "Association getting rejected, disabling network " +
+ stateChangeResult.networkId);
+ handleNetworkConnectionFailure(stateChangeResult.networkId,
+ WifiConfiguration.DISABLED_ASSOCIATION_REJECT);
+ mAssociationRejectCount = 0;
+ }
}
}
@@ -268,7 +284,8 @@ class SupplicantStateTracker extends StateMachine {
if (mLoopDetectCount > MAX_SUPPLICANT_LOOP_ITERATIONS) {
Log.d(TAG, "Supplicant loop detected, disabling network " +
stateChangeResult.networkId);
- handleNetworkConnectionFailure(stateChangeResult.networkId);
+ handleNetworkConnectionFailure(stateChangeResult.networkId,
+ WifiConfiguration.DISABLED_AUTH_FAILURE);
}
mLoopDetectIndex = state.ordinal();
sendSupplicantStateChangedBroadcast(state,
@@ -291,6 +308,7 @@ class SupplicantStateTracker extends StateMachine {
if (DBG) Log.d(TAG, getName() + "\n");
/* Reset authentication failure count */
mAuthenticationFailuresCount = 0;
+ mAssociationRejectCount = 0;
if (mNetworksDisabledDuringConnect) {
mWifiConfigStore.enableAllNetworks();
mNetworksDisabledDuringConnect = false;
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index b971fc338735..bd8f0eb2d041 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -173,6 +173,8 @@ public class WifiConfiguration implements Parcelable {
public static final int DISABLED_DHCP_FAILURE = 2;
/** @hide */
public static final int DISABLED_AUTH_FAILURE = 3;
+ /** @hide */
+ public static final int DISABLED_ASSOCIATION_REJECT = 4;
/**
* The ID number that the supplicant uses to identify this
diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
index 6e3034b07856..4bee937aeb9a 100644
--- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
+++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
@@ -85,6 +85,7 @@ public class WifiEnterpriseConfig implements Parcelable {
private static final String ENGINE_KEY = "engine";
private static final String ENGINE_ID_KEY = "engine_id";
private static final String PRIVATE_KEY_ID_KEY = "key_id";
+ private static final String OPP_KEY_CACHING = "proactive_key_caching";
private HashMap<String, String> mFields = new HashMap<String, String>();
private X509Certificate mCaCert;
@@ -273,6 +274,7 @@ public class WifiEnterpriseConfig implements Parcelable {
case Eap.TLS:
case Eap.TTLS:
mFields.put(EAP_KEY, Eap.strings[eapMethod]);
+ mFields.put(OPP_KEY_CACHING, "1");
break;
default:
throw new IllegalArgumentException("Unknown EAP method");
diff --git a/wifi/java/android/net/wifi/WifiMonitor.java b/wifi/java/android/net/wifi/WifiMonitor.java
index 0b0d7388e6ee..fe3c70902052 100644
--- a/wifi/java/android/net/wifi/WifiMonitor.java
+++ b/wifi/java/android/net/wifi/WifiMonitor.java
@@ -56,7 +56,8 @@ public class WifiMonitor {
private static final int TERMINATING = 6;
private static final int DRIVER_STATE = 7;
private static final int EAP_FAILURE = 8;
- private static final int UNKNOWN = 9;
+ private static final int ASSOC_REJECT = 9;
+ private static final int UNKNOWN = 10;
/** All events coming from the supplicant start with this prefix */
private static final String EVENT_PREFIX_STR = "CTRL-EVENT-";
@@ -153,6 +154,11 @@ public class WifiMonitor {
private static final String EAP_AUTH_FAILURE_STR = "EAP authentication failed";
/**
+ * This indicates an assoc reject event
+ */
+ private static final String ASSOC_REJECT_STR = "ASSOC-REJECT";
+
+ /**
* Regex pattern for extracting an Ethernet-style MAC address from a string.
* Matches a strings like the following:<pre>
* CTRL-EVENT-CONNECTED - Connection to 00:1e:58:ec:d5:6d completed (reauth) [id=1 id_str=]</pre>
@@ -328,6 +334,8 @@ public class WifiMonitor {
public static final int AP_STA_DISCONNECTED_EVENT = BASE + 41;
public static final int AP_STA_CONNECTED_EVENT = BASE + 42;
+ /* Indicates assoc reject event */
+ public static final int ASSOCIATION_REJECTION_EVENT = BASE + 43;
/**
* This indicates the supplicant connection for the monitor is closed
*/
@@ -429,6 +437,8 @@ public class WifiMonitor {
event = DRIVER_STATE;
else if (eventName.equals(EAP_FAILURE_STR))
event = EAP_FAILURE;
+ else if (eventName.equals(ASSOC_REJECT_STR))
+ event = ASSOC_REJECT;
else
event = UNKNOWN;
@@ -473,6 +483,8 @@ public class WifiMonitor {
if (eventData.startsWith(EAP_AUTH_FAILURE_STR)) {
mStateMachine.sendMessage(AUTHENTICATION_FAILURE_EVENT);
}
+ } else if (event == ASSOC_REJECT) {
+ mStateMachine.sendMessage(ASSOCIATION_REJECTION_EVENT);
} else {
handleEvent(event, eventData);
}
diff --git a/wifi/java/android/net/wifi/WifiStateMachine.java b/wifi/java/android/net/wifi/WifiStateMachine.java
index 3e3752e5314c..bb613395f7f5 100644
--- a/wifi/java/android/net/wifi/WifiStateMachine.java
+++ b/wifi/java/android/net/wifi/WifiStateMachine.java
@@ -1944,6 +1944,7 @@ public class WifiStateMachine extends StateMachine {
case WifiMonitor.SCAN_RESULTS_EVENT:
case WifiMonitor.SUPPLICANT_STATE_CHANGE_EVENT:
case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:
+ case WifiMonitor.ASSOCIATION_REJECTION_EVENT:
case WifiMonitor.WPS_OVERLAP_EVENT:
case CMD_BLACKLIST_NETWORK:
case CMD_CLEAR_BLACKLIST:
@@ -2361,6 +2362,7 @@ public class WifiStateMachine extends StateMachine {
case WifiMonitor.NETWORK_CONNECTION_EVENT:
case WifiMonitor.NETWORK_DISCONNECTION_EVENT:
case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:
+ case WifiMonitor.ASSOCIATION_REJECTION_EVENT:
case WifiMonitor.WPS_OVERLAP_EVENT:
case CMD_SET_COUNTRY_CODE:
case CMD_SET_FREQUENCY_BAND:
@@ -2726,6 +2728,9 @@ public class WifiStateMachine extends StateMachine {
WifiConfiguration config;
boolean ok;
switch(message.what) {
+ case WifiMonitor.ASSOCIATION_REJECTION_EVENT:
+ mSupplicantStateTracker.sendMessage(WifiMonitor.ASSOCIATION_REJECTION_EVENT);
+ break;
case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:
mSupplicantStateTracker.sendMessage(WifiMonitor.AUTHENTICATION_FAILURE_EVENT);
break;
@@ -3455,6 +3460,9 @@ public class WifiStateMachine extends StateMachine {
if (DBG) log("Network connection lost");
handleNetworkDisconnect();
break;
+ case WifiMonitor.ASSOCIATION_REJECTION_EVENT:
+ if (DBG) log("Ignore Assoc reject event during WPS Connection");
+ break;
case WifiMonitor.AUTHENTICATION_FAILURE_EVENT:
// Disregard auth failure events during WPS connection. The
// EAP sequence is retried several times, and there might be