# US 10,872,347 B2 · Transmitting application data for on-device demos

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,872,347 B2
- Document ID: US10872347B2
- Status: Granted
- Kind: B2
- Application number: 15/563,198
- Filed: 2016-06-29
- Published: 2018-03-29
- Granted: 2020-12-22
- Earliest claimed: 2015-06-29
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Bilson Jake Libres Campana; Zile Wei; Hrishikesh Balkrishna Aradhye
- Web page: https://patentgrep.com/patent/US10872347B2

## CPC

- G06Q 30/02: Marketing; Price estimation or determination; Fundraising
- G06F 9/48: Program initiating; Program switching, e.g. by interrupt
- G06F 11/3013: {where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems (testing or monitoring of control systems or parts thereof G05B23/02)}
- G06F 11/302: {where the computing system component is a software system}
- G06F 11/34: Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation {; Recording or statistical evaluation of user activity, e.g. usability assessment}
- G06F 11/3414: {Workload generation, e.g. scripts, playback}
- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 3/0482: Interaction with lists of selectable items, e.g. menus
- G06F 2201/815: Virtual
- G06F 2201/865: Monitoring of software
- H04W 4/60: Subscription-based services using application servers or record carriers, e.g. SIM application toolkits
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)

## Abstract

A system and method to profile an application use and identify data used for application execution, map the identified data for application execution to a virtual memory associated with application execution, including execution beginning at specific times, states or stages of the application, and transmit the virtual memory to an end user wishing to demonstrate the application on an end user device. The end user device can emulate the application from any desired application start time, state or stage using data at the end user device identified by the virtual memory.

## Claims

### Claim 1

A method comprising:
capturing, by an application provider, one or more memory snapshots of a profiling user device memory state during a time duration, wherein capturing the one or more memory snapshots occurs while the profiling user device is executing an application installed on the profiling user device and after the profiling user device has begun executing the application;
identifying, by the application provider and based on the one or more memory snapshots, data used for executing the application during the time duration;
mapping, by the application provider, the data for executing the application during the time duration to a virtual memory;
receiving, by the application provider and from an end user device, a request for a demonstration of the application, wherein the application is not installed at the end user device; and
responsive to receiving the request for the demonstration of the application, transmitting, by the application provider and to the end user device, the virtual memory to enable the end user device to emulate the application as executed during the time duration.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
dividing the virtual memory into packets; and
sequentially communicating the packets to the end user device.

### Claim 3 (depends on 1)

The method of claim 1,
wherein the request for the demonstration of the application specifies one or more of a desired application start time, a desired application start state, or a desired application start stage, the method further comprising:
in response to receiving the request for the demonstration of the application, transmitting, to the end user device, the virtual memory corresponding to the request.

### Claim 4 (depends on 1)

The method of claim 1, wherein the one or more memory snapshots include memory input and output necessary to execute the application for the time duration.

### Claim 5 (depends on 1)

The method of claim 1, wherein an amount of the data for executing the application during the time duration is less than an amount of data required for executing the application in its entirety.

### Claim 6 (depends on 1)

The method of claim 1, wherein the demonstration of the application is performed on the end user device using an emulator.

### Claim 7 (depends on 1)

The method of claim 1, wherein the demonstration of the application ends when the demonstration attempts to access data that is not mapped to the virtual memory.

### Claim 8

A system, comprising:
a profiling user device, comprising:
a network interface;
one or more processors; and
a memory that stores instructions executable by the one or more processors to:
capture one or more snapshots of a portion of the memory over a period of time and during execution of an application, the portion of the memory including data required for the execution of the application during the period of time; and
transmit, via the network interface and to an application provider, the one or more snapshots;
the application provider, comprising:
a network interface that receives the one or more snapshots from the profiling user device;
one or more processors; and
a memory that stores instructions executable by the one or more processors to:
identify, based on the one or more memory snapshots, data used for executing the application during the period of time; and
map the data used for executing the application during the period of time to a virtual memory; and
an end user device, comprising:
a network interface;
one or more processors; and
a memory storing instructions executable by the one or more processors to send, via the network interface of the end user device and to the application provider, a request for a demonstration of the application, wherein the application is not installed at the end user device,
wherein the instructions stored by the memory of the application provider are further executable by the one or more processors of the application provider to, responsive to receiving the request for the demonstration of the application, transmit, via the network interface of the application provider and to the end user device, the virtual memory to enable the end user device to emulate the application as executed during the period of time.

### Claim 9 (depends on 8)

The system of claim 8, wherein the one or more memory snapshots include memory input and output necessary to execute the application during the period of time.

### Claim 10 (depends on 8)

The system of claim 8, wherein an amount of the data for executing the application during the period of time is less than an amount of data required for executing the application in its entirety.

### Claim 11 (depends on 8)

The system of claim 8, wherein the request for the demonstration of the application specifies a time point, a state, or a stage of the application to start the demonstration.

### Claim 12 (depends on 8)

The system of claim 8, wherein the instructions cause the one or more processors of the application provider to:
divide the virtual memory into packets; and
sequentially communicate the packets to the end user device.

### Claim 13 (depends on 8)

The system of claim 8, wherein the end user device includes an emulator to execute the demonstration of the application from the virtual memory.

### Claim 14 (depends on 8)

The system of claim 8, wherein the demonstration of the application ends when the demonstration of the application attempts to access data that is not mapped to the virtual memory.

### Claim 15

A non-transitory computer-readable medium encoded with instructions that, when executed, cause one or more processors of a computing system to:
capture one or more memory snapshots of a profiling user device memory state during a time duration, wherein capturing the one or more memory snapshots occurs while the profiling user device is executing an application installed on the profiling user device and after the profiling user device has begun executing the application;
identify, based on the one or more memory snapshots, data used for executing the application during the time duration;
map the data for executing the application during the time duration to a virtual memory;
receive, from an end user device and to an application provider, a request for a demonstration of the application, wherein the application is not installed at the end user device; and
responsive to receiving the request for the demonstration of the application, transmit, from the application provider and to the end user device, the virtual memory to enable the end user device to emulate the application as executed during the time duration.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the one or more memory snapshots include memory input and output necessary to execute the application for the time duration.

### Claim 17 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein an amount of the data for executing the application during the time duration is less than an amount of data required for executing the application in its entirety.

### Claim 18 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the request for the demonstration of the application specifies a time point, a state, or a stage of the application to start the demonstration.

### Claim 19 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the instructions cause the one or more processors to:
divide the virtual memory into packets; and
sequentially communicate the packets to the end user device.

### Claim 20 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the demonstration of the application ends when the demonstration of the application attempts to access data that is not mapped to the virtual memory.
